画像オーバーレイとオーディオの同時適用 (FFMPEG)

画像オーバーレイとオーディオの同時適用 (FFMPEG)

私の意図は、ビデオの特定の時間にフェード効果のある画像オーバーレイを適用し、単一のコマンドでビデオにバックグラウンド オーディオを適用することです。ビデオは 15 秒に制限されます。

現在、2 つのコマンドでこれを実現でき、その結果 2 つの出力が生成されますが、この 2 つのコマンドを結合するにはどうすればよいでしょうか?

最初のコマンド

ffmpeg -i video.mp4 -loop 1 -i image.png -ss 00:00:00 -t 00:00:15 -filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i]; [0][i]overlay=main_w/2-overlay_w/2-0+0:main_h/2-overlay_h/2-0+0:shortest=1"  incomplete.mp4

第二のコマンド

ffmpeg -i audio.mp3 -i incomplete.mp4 -shortest finalVideo.mp4

これは 2 つのコマンドを 1 つのコマンドに統合する試みですが、ビデオは 15 秒に制限されなくなり、いくつかの mp4 ビデオでテストした後、バックグラウンド オーディオは少数のビデオにのみ適用されます。

ffmpeg -i video.mp4 -loop 1 -i image.png -ss 00:00:00 -t 00:00:15 -i audio.mp3 -shortest -filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i]; [0][i]overlay=main_w/2-overlay_w/2-0+0:main_h/2-overlay_h/2-0+0:shortest=1"  finalVideo.mp4

答え1

使用

ffmpeg -ss 00:00:00 -t 00:00:15 -i video.mp4 -loop 1 -i image.png -i audio.mp3
  -filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i]; 
                   [0][i]overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2:shortest=1[v]"
  -map "[v]" -map 2:a -shortest  incomplete.mp4

ffmpeg では、オプションの配置が重要です。入力の前のオプションは、その入力にのみ適用されます。試行した結合コマンドでは、時間指定の後にオーディオを入力するため、オーディオ入力にのみ固有になります。

FFmpeg は、出力に含めるストリームを決定するためにマッピング システムを使用します。マップ割り当てが明示的に設定されていない場合、デフォルトのマッピングは入力の中から 1 つのオーディオを選択します。一部の MP4 には、MP3 よりも優先されるオーディオ ストリームがあるようです。明示的に割り当てると、そのようなことは起こりません。

関連情報