【问题标题】:How can I figure out the optimized number of parallel running encoding jobs with the x264 encoder library如何使用 x264 编码器库计算优化的并行运行编码作业数量
【发布时间】:2020-01-08 17:01:13
【问题描述】:

我正在将数百个视频批量转换为 mp4 并尝试优化我的方法。

我编写了一个节点脚本,它会生成 FFMPEG 进程来转换视频。

据我了解,FFMPEG 和 libx264 编码器已经针对多线程支持进行了优化。我在编码器中使用默认线程选项。

我正在尝试找到我应该创建的最佳 FFMPEG 衍生进程数。在拥有太多和减慢所有作业的编码与太少的进程通过作业队列太慢之间似乎存在平衡。

我还想知道为每个编码作业指定特定数量的线程是否会有所帮助而不是使用默认设置?

对于我的设置,我使用的是一台过时的 24 线程 12 核 Mac Pro,尽管这个问题是关于找到一般的最佳平衡。

【问题讨论】:

    标签: multithreading video ffmpeg core


    【解决方案1】:

    在编码视频时,线程总是以质量为代价。 libx264 非常擅长线程化,但也不能幸免于这种影响。在我的测试中,大约 4 个线程可以开始在低比特率下看到视觉差异。通常情况下,这是可以的,并且是加快编码速度的一个值得权衡的选择。

    但你没有这样做。您正在单个处理器上编码许多视频。因此,最好每个编码使用 1 个线程,并行编码与内核一样多。

    这不会加速编码,这将花费相同的时间,但完成后会产生更高质量的视频。

    【讨论】:

    • 谢谢,我有点好奇为什么线程会影响质量?
    • 这很好用,12 次渲染每个线程都比 3 次渲染每个线程 4 线程快得多。再次感谢!
    • 线程会影响质量,因为压缩是通过引用过去类似编码的数据来工作的(这个像素块看起来很像前一帧中的另一个像素块,所以我们不要对其进行两次编码)。但如果前一帧仍在另一个线程上编码,则该信息尚无法参考,因此编码器会做出次优选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 2014-05-24
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2016-05-10
    • 2014-11-18
    相关资源
    最近更新 更多