-pattern_type glob
konkretne przykłady z dźwiękiem
Opcja ta została wspomniana na: https://superuser.com/a/782520/128124 , ale oto kilka konkretnych przykładów jej wykorzystania, w tym dodania dźwięku do wyjściowego wideo.
Pokaz slajdów z jednym obrazem na sekundę
ffmpeg -framerate 1 -pattern_type glob -i '*.png' \
-c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
Dodaj do niego muzykę, odcinając dźwięk po zakończeniu obrazów:
ffmpeg -framerate 1 -pattern_type glob -i '*.png' -i audio.ogg \
-c:a copy -shortest -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
Oto dwa dema na YouTube:
Bądź hipisem i użyj nieobciążonego patentem Theora formatu wideo :
ffmpeg -framerate 1 -pattern_type glob -i '*.png' -i audio.ogg \
-c:a copy -shortest -c:v libtheora -r 30 -pix_fmt yuv420p out.ogg
Twoje zdjęcia powinny być oczywiście posortowane alfabetycznie, zazwyczaj jako:
0001-first-thing.jpg
0002-second-thing.jpg
0003-and-third.jpg
i tak dalej.
Zobacz także: http://unix.stackexchange.com/questions/68770/converting-png-frames-to-video-at-1-fps/339399#339399
Normalna prędkość wideo z jednym obrazem na klatkę przy 30 FPS
ffmpeg -framerate 30 -pattern_type glob -i '*.png' \
-c:v libx264 -pix_fmt yuv420p out.mp4
Oto jak to wygląda:
GIF wygenerowany z: https://askubuntu.com/questions/648603/how-to-create-an-animated-gif-from-mp4-video-via-command-line/837574#837574
Dodaj do niego trochę dźwięku:
ffmpeg -framerate 30 -pattern_type glob -i '*.png' \
-i audio.ogg -c:a copy -shortest -c:v libx264 -pix_fmt yuv420p out.mp4
Wynik: https://www.youtube.com/watch?v=HG7c7lldhM4
Konwertowanie jednego pliku muzycznego na wideo z ustalonym obrazem do przesłania na YouTube
Odpowiedź na: How to convert MP3 to Youtube-allowed video format? ](https://superuser.com/questions/700419/how-to-convert-mp3-to-youtube-allowed-video-format/1472572#1472572)
Obtain some synthetic test input images
To są obrazy testowe, których używałem w tej odpowiedzi:
wget -O opengl-rotating-triangle.zip https://github.com/cirosantilli/media/blob/master/opengl-rotating-triangle.zip?raw=true
unzip opengl-rotating-triangle.zip
cd opengl-rotating-triangle
wget -O audio.ogg https://upload.wikimedia.org/wikipedia/commons/7/74/Alnitaque_%26_Moon_Shot_-_EURO_%28Extended_Mix%29.ogg
Obrazy wygenerowane za pomocą: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292
Fajnie jest zaobserwować jak bardzo wideo kompresuje sekwencję obrazów o wiele lepiej niż ZIP, ponieważ jest w stanie kompresować w poprzek klatek za pomocą wyspecjalizowanych algorytmów:
opengl-rotating-triangle.mp4
: 340K
opengl-rotating-triangle.zip
: 7.3M
Opcje CLI
Zauważ jednak, że pomimo nazwy, -glob
nie jest to tak ogólne jak shellowe wzorce Glob, np: -i '*'
nie udaje się: https://trac.ffmpeg.org/ticket/3620 (najwyraźniej dlatego, że typ pliku jest wywnioskowany z rozszerzenia).
-r 30
sprawia, że wideo -framerate 1
ma 30 FPS, aby pokonać błędy w odtwarzaczach takich jak VLC dla niskich framerate'ów: https://stackoverflow.com/questions/19267443/playback-issues-in-vlc-with-low-fps-video-from-images-using-ffmpeg/41797724#41797724 Dlatego powtarza każdą klatkę 30 razy, aby zachować pożądany efekt 1 obrazu na sekundę.
Następne kroki
Będziesz także chciał:
TODO: naucz się ciąć i konkatenować wiele plików audio do wideo z linii poleceń:
Testowane na
ffmpeg 3.4.4, vlc 3.0.3, Ubuntu 18.04.
Bibliografia