- Если длина видео короче, чем длина звука, то вам нужен
-shortest
.
- Если длина видео больше, чем длина звука, то никакой флаг вообще не будет тем, что вам нужно.
Нет флага для автоматизации этого решения.
РЕДАКТИРОВАТЬ
Вдохновленный ответом @ deadcode, мне нужно прояснить, что "нет флага для автоматизации", конечно, не соответствует действительности, если вы хотите перекодировать: в этом случае используйте apad
как предложено @deadcode.
Однако, если вы хотите избежать перекодирования (т.е. -c:v copy
), ответ остается в силе.
Существует обходной путь, использующий демультиплексор ffconcat
, но он требует небольшой работы:
- создайте файл, содержащий тишину в том же формате, что и ваш аудиофайл ("silence.wav")
- Создайте файл concat «audio.ffconcat» (с таким количеством строк молчания, сколько нужно, чтобы звук был достаточно длинным):
,
file 'audiofile.wav'
file 'silence.wav'
file 'silence.wav'
...
file 'silence.wav'
- запустите
ffmpeg -i videofile.mp4 -f concat -i audio.ffconcat -c:v copy output.mp4
Это позволит синтезировать фильтр apad
без графа фильтров, что позволит выполнять мультиплексирование без перекодирования.