Answers:
FFmpeg无法做到这一点。
几年前有一些关于实现这样一个功能的讨论,但到目前为止他们还没有在项目中发布任何类似于帧插值的内容。
您当然可以使用类似slowmoVideo的免费工具,如果您想查看源代码,也可以在GitHub上托管。
libavfilter库有一个名为minterpolate的过滤器,该过滤器自2016年11月起可用。根据fitler的描述,其目的是:
“使用运动插值将视频转换为指定的帧速率。”
用法示例:
ffmpeg -i input.60fps.hevc -filter "minterpolate='fps=120'" output.120fps.hevc
我不知道使用哪些设置以获得最佳结果。根据我的经验,默认设置提供了可接受的运动插值质量。但偶尔也会引入一些非常引人注目的视觉伪像。我无法找到完全消除它们的设置组合。
过滤器此刻非常慢。它可以在现代的高端x86 CPU上输出大约2个运动插值帧,每秒1080p视频。我注意到插值只使用一个CPU线程,这可能是这种速度慢的主要原因。
为了加速多核CPU上的滤波器,建议将输入视频分成几个相等长度的块,并将运动插值并行应用于所有这些块。
更新后几个月:
ffmpeg -i input.mp4 -movflags + faststart -filter_complex“[0:v] minterpolate ='fps = 60:mi_mode = mci:me_mode = bidir:mc_mode = obmc:me = ds:vsbmc = 1'” - preset ultrafast output .MP4
原帖:
我可以用tblend滤镜实现这样的效果(虽然不完美)
ffmpeg -i source.mp4 -filter:v tblend -r 120 result.mp4
tblend
不会创造任何文物; 另一方面,结果与简单地改变速度setpts
(用我的肉眼)无法区分。也许更改其默认值会产生更多影响。