web-dev-qa-db-ja.com

FFmpeg-1つのビデオを別のビデオにオーバーレイしますか?

これは非常に自由形式の質問であることを理解しています。 FFmpeg を最初に読んだことがありますが、今はいくつかのガイダンスが必要です。

問題

  • 私はビデオinput.movを持っています。
  • overlay.wovの上に別の動画をオーバーレイしたいと思います。
  • 結果は単一のビデオ(output.mov)になります。

ノート

ありがとう-C。

編集

  1. バックエンドはGo/Rubyです。新しい言語を使用することを受け入れます。
  2. 最初のビデオの音声は保持する必要があります。
  3. オーバーレイを開始する間隔を設定すると便利です。

現在の解決策

ffmpeg -i input.mov -i overlay.mov -filter_complex "[0:0][1:0]overlay[out]" -shortest -map [out] -map 0:1 -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18  output.mov

ただし、これはほぼ機能します。

  • 2つのビデオ(input.movoverlay.mov)が同じ長さであっても、オーバーレイは短くカットされます。
  • 0:00以外の間隔でオーバーレイを開始できません。
8
cdrev

Ffmpegコマンドだけが必要な場合は、

_ffmpeg -i input.mov -i overlay.mov \
-filter_complex "[1:v]setpts=PTS-10/TB[a]; \
                 [0:v][a]overlay=enable=gte(t\,5):shortest=1[out]" \
-map [out] -map 0:a \
-c:v libx264 -crf 18 -pix_fmt yuv420p \
-c:a copy \
output.mov
_

これにより、オーバーレイされたビデオの開始点が_00:15_である5秒でオーバーレイが開始されます。

_setpts=PTS-10/TB_はsetpts=PTS+(overlay_delay-video_trim_in)/TBです

overlay=enable=gte(t\,5)overlay=enable=gte(t\,overlay_delay)です

10
Gyan