poniedziałek, 17 sierpnia 2015

FFMpeg: tworzenie timelapse

Jak już wspominałem w poprzednim wpisie, zająłem się tworzeniem TimeLapse ze zdjęć wykonanych przez SjCam 4000. Poprzednio opisałem jak wykorzystać PowerShell do zmiany nazw plików, a teraz podzielę się komendą zmuszającą ffmpeg do zbudowania materiału video, którym będzie można się dzielić ze znajomymi.

Zacznę może od tego, że celem jest aby materiał odtwarzał się poprawnie na urządzeniu z systemem Android 4.4.2. Czemu nie użyć tego podręcznego ekranu do pokazania swoich wyczynów znajomym. Nie było to jednak wcale takie proste zadanie, wymagało kilku prób i błędów, a przede wszystkim przeszukania notatek z paru wcześniejszych projektów.

Zanim przejdę do samej komendy, jeszcze jedna ciekawostka. Wiadomo, że materiał wideo w kompresji h264 zajmuje stosunkowo mało miejsca. Surowy materiał zebrany przeze mnie podczas wypadu zajmuje 2,7GB, po złożeniu wideo zajmuje poniżej 70MB. Przede wszystkim różnica jest w rozdzielczości. Docelowy plik zmontowany jest w 1080p, jednak surowe klatki są w rozmiarze 4032x3024px. Osobiście zalecałbym trzymanie się wysokich ustawień kamery/aparatu. Zawsze łatwiej jakość przycinać, niż ją odzyskiwać.

FFMpeg jak wiemy jest super kombajnem i niezwykle cieszę się z tego faktu. Aby złożyć TimeLapse z plików wystarczy w tym przypadku użyć:

ffmpeg -framerate 25 -f image2 -i image_%05d.jpg -i audio.mp3 -c:v libx264 -profile:v main -pix_fmt yuv420p -c:a libvo_aacenc -s hd1080 -shortest out.mp4

Komenda może się wydawać prosta lub nie, dlatego poniżej wyjaśnienie:

  • -framerate 25 - wskazuje framerate strumienia wejściowego. Tu sugeruję poeksperymentować. Timelapse z 12fps może wyglądać lepiej niż 25fps. Wszystko zależy od tego co zostało nagrane i jak płynne wrażenie ruchu chcemy przekazać
  • image2 - dekoder do użycia przy dekodowaniu plików
  • image_%05d.jpg - format nazwy pliku wejściowego. Sekwencja składa się z plików image_00000.jpg do image_99999.jpg
  • -profile:v main - wybór profilu h264. Main jest najwyższy dla urządzeń mobilnych
  • -pix_fmt yuv420p - format zapisu danych. Powiedzmy, że opcja potrzebna aby w ogóle działało
  • -s hd1080 - skalowanie video do 1080p
  • -shortest - zakłada, że długość materiału wejściowego ograniczona zostanie do długości krótszego ze źródeł
  • out.mp4 plik wyjściowy

Brak komentarzy:

Prześlij komentarz