FFmpeg运动插值替代方法或加速

3
我使用ffmpeg创建视频,它是一个很棒的工具。我从图片中创建视频,并且需要使它们尽可能平滑。我发现我需要的被称为“运动插值”。我开始在所有论坛上搜索,只发现有3个可以帮助我的东西:slowmovideo、butterflow和新的ffmpeg过滤器minterpolate。
slowmovideo需要许多配置,我无法按照自己的意愿使其正常工作。对于butterflow,我尝试了一切。从安装OpenCL、OpenGL和其他软件到切换到nvidia二进制驱动程序并安装所有sdk工具和cuda。但它从未起作用。出现了一些关于cuda的错误,谷歌也不知道怎么解决。
因此第三个选项是唯一可用的。当我尝试它时,它正好做到了我想要的!但是它非常慢。我有8核CPU,它处理速度大约是0.1-0.3 fps。而且只使用了一个核心,没有使用显卡。
有没有任何方法可以在GPU或CPU上更快地进行运动插值?只能在GNU/Linux上。

尝试使用SVP,它是目前尝试过的所有选项中最快的,并具有使60fps实时播放更少伪影的功能,但在Windows上不是免费的。 - PauAI
3个回答

3

有没有在GPU上插值帧的方法?

使用minterpolate吗?不行。它使用的是libswscale,我不知道它是否支持视频硬件加速。

或者在CPU上但更快?

您可以尝试使用各种minterpolate选项来可能增加速度。或者在bug跟踪器Bountysource上提供悬赏以启用线程支持,或提交一个启用它的补丁(虽然我不确定这对于这个过滤器是否可能或现实)。

编辑:回答后不久,我看到您在ffmpeg-devel邮件列表上提出了这个问题,其中一位开发人员建议悬赏,因此如果您想使用此过滤器并获得更高的速度,则这可能是您最好的选择。


3

我知道这个解决方案很笨,但是它确实可以给你想要的加速效果:如果你有多个剪辑,你可以同时为每个剪辑运行一个单独的ffmpeg命令,而不会影响每个进程的性能,直到你拥有的进程数大于核心数。


0

这里有一个Linux/MacOS的技巧:

@thomashollier所建议,使用一个bash脚本来创建主视频的片段,对这些片段运行并行的minterpolate实例,然后将生成的“minterpolated”片段连接在一起。

这是一个可行的解决方案:
https://gist.github.com/majal/1e63a511b41faeae188083777f8e4b46

(对于Windows系统,转到Linux需要有人制作类似这样的批处理文件。)

正如预期的那样,在连接点可能会出现一些有趣的问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接