【发布时间】:2018-04-06 19:21:14
【问题描述】:
我有一个案例,我想要一个背景视频并使用第二个视频覆盖第一个但在多个时间点。第二个视频较短。
例如,主视频为一分钟,第二个视频为 10 秒。我想在 15 秒时覆盖第二个视频一次,然后在 35 秒时再次覆盖,然后在 55 秒时再次覆盖(在主视频时终止)。
我能够使用叠加过滤器和选项之间成功叠加第二个视频,但它只适用于第一个叠加。第二个叠加层似乎显示了视频的最后一帧或第一帧(??),但在我设置的时间段内。我猜它需要倒带并以某种方式播放。
例如:
ffmpeg -i background.mp4 -i overlay.mov -filter_complex "[0][1]overlay=0:0:enable='between(t,0,2)'[out];[out][1]overlay=-200:200:enable='between(t,4,8)'[out]" -map "[out]" -t 00:00:10 -y output.mp4
我也尝试过两次将叠加层指定为输入,例如:
ffmpeg -i background.mp4 -i overlay.mov -i overlay.mov -filter_complex "[0][1]overlay=0:0:enable='between(t,0,2)'[out];[out][2]overlay=-200:200:enable='between(t,4,8)'[out]" -map "[out]" -t 00:00:10 -y output.mp4
同样的事情也会发生。
我确信答案很简单,可能与我使用输入的方式有关,但我无法理解如何让覆盖视频在不同时间在原始视频之上播放两次.
我也尝试过使用 setpts 过滤器来回退覆盖,但结果还是完全一样的。
例如:
ffmpeg -i background.mp4 -i overlay.mov -filter_complex "[0][1]overlay=0:0:enable='between(t,0,2)'[out];[1]setpts=PTS-STARTPTS,[out]overlay=-200:200:enable='between(t,4,8)'[out]" -map "[out]" -t 00:00:10 -y output.mp4
有很多类似的问题涉及覆盖多个视频,但我找不到关于在多个时间点重复使用同一视频的任何信息。
【问题讨论】: