Jak stworzyć film z audio i obrazka przy pomocy ffmpeg (linux/ffmpeg)

Załóżmy, że chcemy wrzucić na YouTube plik muzyczny z obrazkiem.

Mamy plik wave z muzyką dobrej jakości i nie chcemy go przepuszczać przez żaden enkoder przy renderowaniu filmu. Z pomocą przychodzi ffmpeg, w moim przykładzie używam go pod linuksem.

Plik z muzyką nazwałem test.wav, plik z obrazkiem test.jpg, aby wygenerować film wystarczy wykonać polecenie:

ffmpeg -loop 1 -y -i test.jpg -i test.wav -shortest -acodec copy -vcodec libx264 -pix_fmt yuv420p output.mkv

Kolejność parametrów ma znaczenie!

Parmeter -acodec copy sprawi, że zawartość ścieżki dźwiękowej zostanie skopiowana z oryginału, bez transkodowania.
Parametr -shortest sprawia, że długość filmu będzie taka jak długość ścieżki audio. Istotne jest, żeby nie umieścić tego parametru przed plikiem .jpg, ponieważ plik z obrazkiem ma nieskończoną długość i nasz film będzie się renderował w nieskończoność.
Wybrałem format wyjściowy mkv, ponieważ dał on najlepsze rezultaty w kwestii jakości filmu.

Ważną rzeczą jest to, żeby plik z obrazkiem miał rozdzielczość podzielną przez 2, najlepiej żeby obrazek miał taki rozmiar jaki chcemy uzyskać w wyjściowym filmie, np. 3840×2160 dla 4k.

Skomentuj