尽管颜色源上有叠加,FFmpeg 仍保持输入视频的帧速率

尽管颜色源上有叠加,FFmpeg 仍保持输入视频的帧速率
  • FFmpeg 可以overlay文档) 类似这样的视频:

ffmpeg -i inputA_60fps.mp4 -i inputB_60fps.mp4 -filter_complex "[0:v] [1:v] overlay=shortest=1" output1.mp4

-> 的帧速率output1.mp4自动与输入的帧速率相同(60)。我喜欢这个。

  • FFmpeg 还可以叠加在color文档)来源如下:

ffmpeg -i input_60fps.mp4 -filter_complex "color=c=black [c]; [c] [0:v] overlay=shortest=1" output2.mp4

-> 的帧速率output2.mp4始终为 25,因为源的默认帧速率color是 25,即使输入的帧速率为 60。我不喜欢这样。

  • color速率可以像这样明确指定:

ffmpeg -i input_60fps.mp4 -filter_complex "color=c=black:r=30 [c]; [c] [0:v] overlay=shortest=1" output3.mp4

-> 但帧速率output3.mp4始终是固定值 30。我不喜欢这样。

问题:输出帧率怎样才能自动再次使用与输入相同的帧率?

(设置:duration=0.001-vsync passtrough没有帮助。)

答案1

我发现没有办法使用coloroverlay保持输入视频的帧速率。

堆栈有时可以代替overlay,并且xstackfill不存在 与 相同的问题color

答案2

不使用color源文件,您可以复制原始源文件并将每一帧涂成黑色,然后将其用作覆盖背景。它将具有与原始文件相同的尺寸和帧速率。

ffmpeg -i input_60fps.mp4 -filter_complex "drawbox=t=fill:c=black [c]; [c][0:v] overlay [c]; [c] [0:v] overlay=shortest=1" output3.mp4

相关内容