FFmpeg Overlay Filter 改变源 FPS

问题描述

我想在另一个慢动作视频上叠加一个视频。 令人惊讶的是,叠加层也变成了慢动作。

我正在应用以下命令:

ffmpeg
  -to 00:00:01.000 -i camera1.mp4                       // original video
  -ss 00:00:02.000 -to 00:00:09.000 -i confeti.mov      // overlay video
  -filter_complex '[0]setpts=3.333*PTS[s0]; [s0][1]overlay'  // change FPS of original video and overlay
  -r 24 out.mp4

输出可以在这里看到:out.mp4

如您所见,原始视频播放时“五彩纸屑”覆盖速度较慢,原始视频结束后会恢复正常速度。

知道它为什么会发生以及如何修复吗?

解决方法

覆盖过滤器在第一个输入提供的帧的顶部绘制覆盖视频。如果您使用 setpts 将第一个输入的帧隔开,“密度”将会降低,并且不会有足够的中间帧来绘制来自叠加输入的所有帧。

在 setpts 后添加 fps 过滤器以提供更多基础帧。

[0]setpts=3.333*PTS,fps=24[s0]