如何了解h264_nvenc编码器的有效质量?

问题描述

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

要通过ffmpeg使用h264_nvenc编码器并达到目标质量,请遵循链接锚的最后一段Nvidia's documentation中的说明。

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

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

根据文档,我还可以指定maxBitRate(maxrate = )。如果我未指定最大值,则文档会指出:

如果未指定maxBitRate,则编码器将使用所需的位数以达到目标质量。

但这不是我观察到的行为。我看到编码器使用的比特数越多越好,而不是需要的比特数越多。所得视频的总体比特率约为100Mb / s。将源视频加倍。

如果我确实设置了最大速率,则编码器会观察到它。但是,如果必须为每个CQ值正确设置比特率,那么CQ值的意义是什么?我只需设置cq = 1并测试各种比特率,然后再将其应用于特定视频即可。

是否存在一些警告或输出,指出比特率不足以达到我未看到的目标质量?至少这可以让我蛮力。

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

解决方法

恒定质量完全按照其说的做,它保持恒定的可感知质量水平。它将改变压缩量以保持所需的质量。生成的文件大小与此用例无关。

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

如果您想评估视频压缩质量,可以使用VMAF之类的算法来命名。

更多阅读内容:

CRF Guide

Understanding Rate Control Modes

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...