- 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
我发现没有办法使用color
并overlay
保持输入视频的帧速率。
但堆栈有时可以代替overlay
,并且xstack
,fill
不存在 与 相同的问题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