FFmpeg amerge フィルター - 最長のオーディオ ストリームを続行します

FFmpeg amerge フィルター - 最長のオーディオ ストリームを続行します

すでに 1 つのオーディオ ストリームがあるビデオがあります。m4aビデオ内の既存のオーディオ ストリームと結合したい別のファイルがあります。

このm4aファイルは他のオーディオストリームよりも約10秒短く、FFmpegドキュメント:

入力の持続時間が同じでない場合、出力は最短のもので停止します。

しかし、私は長いオーディオ ストリームを続行したいのですが (ただし、両方のストリームを 1 つにマージしたままにしておきます)。

以下は私が現在使用しているコマンドです。このコマンドは、最短のオーディオ ストリームが終了するとオーディオを停止します。

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

たった 1 つの FFmpeg コマンドで、やりたいことを実現できますか?

答え1

2 番目の入力のオーディオ ストリームが短いことがわかっている場合は、最初の入力が短くなるようにその長さをパディングできます。

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

関連情報