使用 FFmpeg 进行 VP9 编码:-speed 和 -deadline 选项之间的关系

使用 FFmpeg 进行 VP9 编码:-speed 和 -deadline 选项之间的关系

我在不同的地方读到-speed-deadline关于VP9编码ffmpeg,它们似乎控制或多或少相同的方面(压缩效率与执行时间比),但我找不到两者之间究竟有何关联。

许多网页仅提及其中之一。FFmpeg 维基两者都提到了,但在不同的部分:控制速度和质量部分提到-dealine但只字未提-speed,并且-speed在其他地方被间接提及。

两者之间有什么关系?同时指定两者是否有意义,还是其中一个会覆盖另一个?

答案1

-speed是相同的-cpu-used

FFmpeg 源代码(libavcodec/libvpxenc.c) 表明这-speed是 的遗留别名-cpu_used

使用和-deadline-cpu-used控制速度

-deadline有 3 种模式:bestgoodrt-cpu-used选项可以调整每种模式以进一步调整速度。 的含义/值-cpu-used取决于模式。

  • best- 这通常能提供最佳质量的输出,但速度非常慢。一般来说,除非您有很多空闲时间,否则不建议使用此设置。

  • good- 如果您未设置,则这是默认值-deadline。这将是大多数用户大多数时间应该使用的。在“良好”质量范围内,还有 6 个进一步的速度步骤可通过参数设置-cpu-used(值从 0 到 5)。

    • 设置-cpu-used 0将提供通常非常接近甚至有时更好的质量-deadline best,但编码器的运行速度通常会快两倍。

    • 设置-cpu-used 1-cpu-used 2将进一步显著提高编码速度,但将开始对质量产生更明显的影响,也可能开始影响数据速率控制的准确性。

    • 设置值 4 或 5 将关闭“率失真优化”,这对质量有很大影响,但也会大大加快编码器的速度。

  • rt- 实时模式允许编码器自动调整速度与质量之间的平衡,以尝试达到特定的 CPU 利用率目标。在此模式下,参数-cpu-used控制 %cpu 目标如下:

    target cpu utilisation = (100*(16-cpu-used)/16)%
    

    -cpu-used与 结合时的合法值为-deadline rt(0-15)。值得注意的是,在实时模式下,编码质量将取决于特定剪辑或剪辑部分的难度以及编码机器的速度。因此,在此模式下,结果将因机器而异,甚至因您正在执行的其他操作而因运行而异。

来源:WebM 项目 | VP8 编码参数指南. 也应适用于 VP9。

请注意-quality是 的旧别名-deadline

相关内容