ffmpeg 将视频从 25 fps 加速到 60 fps 丢帧
ffmpeg speed up video from 25 to 60 fps dropping frames
我正在尝试将视频从 25fps 加速到 60fps。我想要完全相同的帧数,只是更快地呈现给我,无论是每秒 60 帧。
ffmpeg -i Spider.mov -r 62500/1000 -filter:v "setpts=PTS*0.4" -c:v libx264 Spider4k60.mov
这有效并且不会丢失或复制任何帧。但是我的播放器不会达到 62.5 fps。
但是当我尝试时:
ffmpeg -i Spider.mov -r 60 -filter:v "setpts=PTS/2.4" -c:v libx264 -y Spider4k60.mov
即使那是正确的分数 (60/25=2.4),我每秒也有大约一帧丢失和一帧重复。
同样:
ffmpeg -i Spider.mov -r 60 -filter:v "setpts=PTS*0.416666666667" -c:v libx264 -y Spider4k60.mov
我也一样。
有什么想法吗?我认为 PTS/2.4 是正确的解决方案。
时间戳是根据 来命名的,它是计时刻度。
setpts
将分配最接近流时基中可能的表达式值的值。像这里一样压缩时间戳时,请确保使用 settb 过滤器可以获得足够的分辨率。
对于 25 和 60,300 是 LCM,但让我们选择更高的值,例如 6000。
-filter:v "settb=1/6000,setpts=PTS/2.4"
如果您的视频是固定帧率,这将满足您的要求。如果是 VFR,-r 60
可能仍会导致帧为 dropped/duped。为此添加 -vsync vfr
。
我正在尝试将视频从 25fps 加速到 60fps。我想要完全相同的帧数,只是更快地呈现给我,无论是每秒 60 帧。
ffmpeg -i Spider.mov -r 62500/1000 -filter:v "setpts=PTS*0.4" -c:v libx264 Spider4k60.mov
这有效并且不会丢失或复制任何帧。但是我的播放器不会达到 62.5 fps。
但是当我尝试时:
ffmpeg -i Spider.mov -r 60 -filter:v "setpts=PTS/2.4" -c:v libx264 -y Spider4k60.mov
即使那是正确的分数 (60/25=2.4),我每秒也有大约一帧丢失和一帧重复。
同样:
ffmpeg -i Spider.mov -r 60 -filter:v "setpts=PTS*0.416666666667" -c:v libx264 -y Spider4k60.mov
我也一样。
有什么想法吗?我认为 PTS/2.4 是正确的解决方案。
时间戳是根据
setpts
将分配最接近流时基中可能的表达式值的值。像这里一样压缩时间戳时,请确保使用 settb 过滤器可以获得足够的分辨率。
对于 25 和 60,300 是 LCM,但让我们选择更高的值,例如 6000。
-filter:v "settb=1/6000,setpts=PTS/2.4"
如果您的视频是固定帧率,这将满足您的要求。如果是 VFR,-r 60
可能仍会导致帧为 dropped/duped。为此添加 -vsync vfr
。