web-dev-qa-db-ja.com

ffmpegを使用した遅延ビデオオーバーレイ

あるビデオを別のビデオにオーバーレイしたいのですが、表示が遅れています。私が持っています:

  • source1.mp4これは20秒の長さです。
  • source2.mp4これは5秒の長さです。

source2.mp4source1.mp4と00:00:07から00:00:12までオーバーラップする最終出力を作成したいと思います。どうすればこれを達成できますか?

私は次のコマンドを試しましたが、これらのどれも私が望むものを提供しません:

ffmpeg -i source1.mp4 -itsoffset 7 -i source2.mp4 -map 0:0 -map 1:1 -c copy -y output.mp4

ffmpeg -itsoffset 7 -i source2.mp4 -i source1.mp4 -filter_complex 'overlay=0:0' output.mp4 

ffmpeg -i source1.mp4 -i source2.mp4 -filter_complex "overlay" -strict -2 output.mp4
2
alter

これを行うには、最新のffmpegバージョン(2.2)が必要です。したがって、次のようなコマンドを実行する必要があります

ffmpeg -i sample1.mp4 -i sample2.mp4 -filter_complex "[0:v]setpts=PTS-STARTPTS[v0];[1:v]setpts=PTS-STARTPTS+7/TB[v1];[v0][v1]overlay=eof_action=pass[out1]" -map [out1]  /tmp/final.mp4

秘訣は、2番目のビデオのPTSを+7秒(PTS-STARTPTS + 7/TB)に設定してから、2つのストリームをオーバーレイすることです。

5
ptQa