すでに 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