使用 FFmpeg 实现延迟视频叠加

使用 FFmpeg 实现延迟视频叠加

我想将一个视频叠加到另一个视频上,但显示效果会延迟。我有:

  • source1.mp4持续时间为 20 秒。
  • source2.mp4持续时间为 5 秒。

我想要创建一个从 00:00:07 到 00:00:12source2.mp4重叠的最终输出source1.mp4。我该如何实现?

我尝试过以下命令,但是这些命令都不能满足我的要求:

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

答案1

为此,您需要最新的 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

诀窍是将第二个视频的 PTS 设置为 +7 秒 (PTS-STARTPTS+7/TB),然后将两个流叠加。

相关内容