提高旧 i5 Windows 机器上的 ffmpeg 性能

提高旧 i5 Windows 机器上的 ffmpeg 性能

我被迫在较旧的 Windows 机器上使用 ffmpeg 进行一些视频转换。不幸的是,每当 ffmpeg 运行时,我的应用程序就会停止运行。有没有 ffmpeg 专家可以提出一些性能优化技巧?

这些是我提供给 ffmpeg 的参数

['-i', _master, '-s', '720x540', '-sws_flags', 'lanczos', '-qscale:v', '1', '-y', _tempMaster]

实际上忘记了另外 2 个操作

2 连接

['-i', "concat:" + _head + "|" + _tempMaster + "|" + _tail, '-c', 'copy', '-y', _concatALL] 

3 MUX 带音频和高质量转码

['-i', _audio, '-i', _concatALL, '-vcodec', 'libx264', '-crf', '22', '-vf', 'hqdn3d=1:1:1:1,unsharp=2:2:.7:2:2:0.0', '-y', _finalOutput] 

答案1

  • Lanczos 过滤非常昂贵。您可以尝试不同的图像过滤器吗?fast_bilinear与 Lanczos 相比,速度非常快,但会略微降低图像质量。只需替换lanczosfast_bilinear进行比较即可。

  • ffmpeg 运行缓慢的原因很多,与编解码器有关,从命令行选项中无法清楚看出除了 libswscale 之外,您还使用了哪些多路复用器/解复用器/编码器/解码器/过滤器。编解码器选项与视频作业的计算复杂性有很大关系。

  • 确保您正在运行最新版本的 ffmpeg。

  • 尝试更换 libav/ffmpeg 看看是否有帮助。它们最近有点不同。

  • 也许可以从源代码编译新版本的 ffmpeg,使用具有链接时间优化和其他昂贵优化的更高级的编译器,例如 Visual Studio 2012 的编译器,或者

  • 如果操作系统是 64 位的,那么使用 ffmpeg 的 64 位版本至少可以将性能提高 5% 到 10%。额外的 CPU 寄存器肯定会对编码器或图像调整大小算法的紧密循环有所帮助。我认为迄今为止所有标记为“i5”的处理器都支持 64 位,因此如果您运行的是 32 位操作系统,那么安装 64 位操作系统将是一个选择。

  • 如果你严重地需要节省几毫秒的时间,并且需要大量的时间和 C 语言知识,请使用分析器来计时 ffmpeg 的调试版本。查看它在哪里(在哪些方法/过滤器/编解码器中)花费了最多的时间。看看您是否可以进行一些微优化,或者在质量上偷工减料以加快速度。

相关内容