ffmpeg将25fps视频提速至60fps出现丢帧重复帧问题求助
问题原因
-r 60作为输出参数时,ffmpeg默认强制输出固定帧率(CFR)视频。调整PTS后的原25帧时间戳无法完全对齐60fps要求的固定1/60s间隔,ffmpeg会自动丢弃或重复帧匹配固定帧率的时间戳网格,就出现了每秒约1帧丢帧、重复帧的问题。
你第一条62.5fps的命令没有问题,是因为25*2.5=62.5,原每帧PTS乘以0.4后刚好对齐1/62.5s的间隔,不需要做帧调整。
解决方案
要保留全部原帧、同时输出标称60fps的视频,关闭ffmpeg的自动帧率同步逻辑即可,使用如下命令:
ffmpeg -i Spider.mov -filter:v "setpts=PTS/2.4" -c:v libx264 -vsync passthrough -r 60 -y Spider4k60.mov
参数说明:
-vsync passthrough(也可写为-vsync 0):让ffmpeg直接传递所有输入帧的PTS,不做任何丢弃、重复操作来对齐固定帧率网格- 此处的
-r 60仅设置容器层面的标称帧率,不会触发帧转换逻辑,播放器会按照60fps速率播放所有原帧,刚好实现提速后每秒60帧的效果,无丢帧或重复帧问题。
如果你的播放器对可变帧率(VFR)支持不佳,可选择先做帧率上变换再提速,但会生成额外插值帧,不符合「保留原有全部帧数」的要求,因此优先使用上述方案。
内容的提问来源于stack exchange,提问作者BarkerChippy
相关产品推荐
相关产品推荐

