Фильтр FFmpeg amerge - Продолжайте с самым длинным аудиопотоком

Фильтр FFmpeg amerge - Продолжайте с самым длинным аудиопотоком

У меня есть видео, в котором уже есть 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

Связанный контент