【问题标题】:How can I learn the effective quality of the h264_nvenc encoder?如何学习 h264_nvenc 编码器的有效质量?
【发布时间】:2020-09-24 02:16:27
【问题描述】:

我试图确定 h264_nvenc 视频编码器的各种 cq(“恒定质量”)值的最终产品质量。

要通过 ffmpeg 并以目标质量使用 h264_nvenc 编码器,我按照链接锚的最后一段 Nvidia's documentation 中的说明进行操作。

我指定了可变比特率控制模式 (rc=vbr_hq) 和目标质量 (cq=)。这应该足以测试 cq 的各种值。故事应该到此结束。

但是,对于任何 cq 值,它只会输出相同质量的超大尺寸视频。 (使用 cq=1、cq=20 和 cq=51 都输出具有相同哈希的文件。)

根据文档,我还可以指定一个 maxBitRate (maxrate=)。如果我没有指定 maxrate,文档会指出:

如果未指定 maxBitRate,编码器将使用尽可能多的比特来达到目标​​质量。

但这不是我观察到的行为。我看到编码器使用尽可能多的位,而不是需要的位。生成的视频的总比特率约为 100Mb/s。将源视频翻倍。

如果我确实设置了一个最大速率,它会被编码器观察到。但是,如果我必须为每个 cq 值正确设置比特率,那么 cq 值的意义何在?我只需设置 cq=1 并测试各种比特率,然后这些比特率仅适用于特定视频。

是否有一些警告或输出表明比特率不足以达到我没有看到的目标质量?这至少可以让我暴力破解。

还是我误解了这些设置之间的关系?

【问题讨论】:

  • 同样的hash部分肯定很奇怪,能把你用的完整的ffmpeg命令贴出来吗?

标签: ffmpeg rendering nvidia x264 nvenc


【解决方案1】:

恒定的质量正如它所说的那样,它保持感知质量的恒定水平。它将改变压缩量以保持所需的质量。生成的文件大小与此用例无关。

添加最大速率用于避免比特率峰值,例如当您通过网络发送视频时,您通常知道该限制是多少。

如果您想评估视频压缩质量,可以使用 VMAF 等算法。

更多阅读:

CRF Guide

Understanding Rate Control Modes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2019-02-26
    • 2015-12-02
    • 2018-10-30
    相关资源
    最近更新 更多