У меня есть видео, в котором уже есть 1 аудиопоток. У меня есть еще один m4a
файл, который я хочу объединить с уже существующим аудиопотоком в видео.
Файл m4a
примерно на 10 секунд короче другого аудиопотока, и согласноFFmpeg
документы:
Если входные данные имеют разную длительность, вывод остановится на самом коротком.
Но я хочу, чтобы он продолжался с более длинным аудиопотоком (но при этом оба потока были объединены в один).
Вот команда, которую я сейчас использую, которая просто останавливает звук после завершения самого короткого аудиопотока:
ffmpeg -i input.mp4 -i shorteraudio.m4a -filter_complex "[0:v]scale=-2:720,format=yuv420p[v];[0:a]amerge=inputs=2[a]" -map [v] -map [a] output.mp4
Можно ли сделать то, что я хочу, с помощью всего одной команды FFmpeg?
решение1
Если известно, что второй вход имеет более короткий аудиопоток, вы можете увеличить его длину так, чтобы первый стал короче.
ffmpeg -i input.mp4 -i shorteraudio.m4a -filter_complex "[0:v]scale=-2:720,format=yuv420p[v];[1:a]apad[a1];[0:a][a1]amerge=inputs=2[a]" -map [v] -map [a] output.mp4