Мой вывод ffmpeg всегда добавляет дополнительные 30 секунд тишины в конце - PullRequest
0 голосов
/ 22 апреля 2019

Это код / ​​аргумент, который я использую, чтобы объединить 1 аудио и 1 изображение в 1 видео. По какой-то причине он добавляет 30-секундную тишину в конец выходного видео независимо от источника.

Я запускаю это на Win10 x64, с последней установленной ffmpeg. Я проверил код, но не могу определить, где он делает тишину.

ffmpeg -y -loop 1 -framerate 2 -i "some.png" -i "with.mp3" 
-c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest "result.mkv"

Выход не должен содержать дополнительные 30 секунд тишины Это должно закончиться, когда аудио заканчивается.

Я должен добавить, что я скопировал большинство аргументов с какого-то веб-сайта и что OP, кажется, использует его просто отлично, поэтому я не уверен, что это только моя проблема.

1 Ответ

0 голосов
/ 23 апреля 2019

Использование

ffmpeg -y -loop 1 -framerate 2 -i "some.png" -i "with.mp3" -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest -fflags +shortest -max_interleave_delta 100M "result.mkv"

Контейнеры (AVI, MP4, MKV) обычно хранят несколько потоков с чередованием, т.е. несколько секунд видео, затем несколько секунд аудио и так далее.Таким образом, при записи ffmpeg буферизует данные из всех потоков.

-shortest действует на относительно высоком уровне и запускается по завершении первого из потоков.Однако буферизованные данные из других потоков все равно будут записаны в файл.-fflags shortest действует на более низком уровне и предотвращает запись буферизованных данных при использовании с достаточно высоким значением max_interleave_delta.

...