我试图确定 h264_nvenc 视频编码器的各种 cq(“恒定质量”)值的最终产品质量。 If maxBitRate is not specified, the encoder will use as many bits as needed to achieve the target quality.
要通过 ffmpeg 并以目标质量使用 h264_nvenc 编码器,我按照 Nvidia's documentation 中的说明进行操作。 ,链接 anchor 的最后一段。
我指定了可变比特率控制模式 (rc=vbr_hq) 和目标质量 (cq=
但是,对于任何 cq 值,它只会输出相同质量的超大尺寸视频。 (使用 cq=1、cq=20 和 cq=51 都输出具有相同哈希的文件。)
根据文档,我还可以指定一个 maxBitRate (maxrate=
但这不是我观察到的行为。我看到编码器使用尽可能多的位,而不是需要的位。生成的视频的总比特率约为 100Mb/s。将源视频加倍。
如果我确实设置了最大速率,编码器会观察到它。但是,如果我必须为每个 cq 值正确设置比特率,那么 cq 值的意义何在?我只需设置 cq=1 并测试各种比特率,这将仅适用于特定视频。
是否有一些警告或输出表明比特率不足以达到我没有看到的目标质量?这至少可以让我暴力破解。
还是我误解了这些设置之间的关系?
最佳答案
恒定质量正如它所说的那样,它保持恒定的感知质量水平。它将改变压缩量以保持所需的质量。生成的文件大小与此用例无关。
添加最大速率用于避免比特率峰值,例如当您通过网络发送视频时,您通常知道该限制是多少。
如果您想评估视频压缩质量,可以使用 VMAF 等算法。命名一个。
更多阅读:
CRF Guide
Understanding Rate Control Modes
关于ffmpeg - 如何学习 h264_nvenc 编码器的有效质量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64038626/