码率控制(二):CRF详解

在之前关于码率控制的文章中,我们已初步了解了CRF(Constant Rate Factor)的概念。本篇文章将深入剖析CRF的工作原理及其在实际应用中的重要性。

CRF是x264和x265编码器默认的码率控制模式,同时也在libvpx中得到应用。CRF的取值范围在0到51之间,数值越小,视频质量越高但压缩率越低;反之,数值越大则压缩率提升而质量下降。

CRF的码率控制机制并不追求固定的码率输出,而是力求保持稳定的视频质量。最终生成的码流大小将取决于原始视频的复杂度。

对于x264编码器,CRF建议的取值范围是18到28,而默认值为23。对于x265编码器,默认值则为28。

在libvpx中,CRF的取值范围更广,为0到63,且没有固定的默认值。对于1080p分辨率的视频,一般建议取值为31。

若您不确定应设置何种CRF值,可以从默认值开始尝试调整。若视频质量低于预期,可适当减小CRF值;若文件大小过大,则可适当增大CRF值。CRF每增减6个单位,文件大小大致会减半或加倍。

CRF更适用于离线场景,以确保达到最优的视频质量和压缩效果。

如何理解码率的变化?

为了更直观地展示不同分辨率视频在CRF值变化时码率的变化情况,以下图表展示了使用x264编码器编码的4段复杂度各异的1分钟视频的平均码率(MBit/s)与CRF之间的关系。

码率控制(二):CRF详解-有驾

从图表中可以看出,不同分辨率的视频在CRF值变化时,其码率均呈现出对数关系的变化趋势。

CRF与CQP的对比

CQP模式在编码过程中保持每帧的QP值恒定,例如设定QP=18,则整个序列的每帧QP值均为18(尽管帧类型不同可能会有微小的QP偏移,但影响不大)。而CRF模式则通过动态调整每帧的QP值来保持整体质量的稳定。例如,设定CRF=18时,对于运动剧烈的帧,QP值可能会增加到20;而对于运动较少的帧,QP值则可能减小至16。

下图展示了当QP和CRF分别设置为17和23时,每帧比特数的变化情况。

码率控制(二):CRF详解-有驾

从图中可以明显看出,在保持相同质量的前提下,CRF模式的比特数总是少于CQP模式,这表明CRF在节省比特方面更具优势。

运动为何如此关键?

相较于运动中的物体,人类视觉系统对静止物体的细节感知更为敏锐。因此,编码器在处理运动物体时可以采用更大的压缩比(去除更多细节),而在处理静止物体时则采用较小的压缩比(保留更多细节)。

此外,由于运动物体在屏幕上停留的时间较短,人眼对其失真的感知也相应减少;而静止物体在屏幕上停留时间较长,人眼有更多时间去观察并注意到其失真情况。

如何评价视频质量?

若您仅使用如PSNR等简单的评价指标来比较视频质量,可能会发现CRF模式的质量低于CQP模式。然而,通过人眼主观观察,您会发现CRF模式的质量并不低于甚至可能高于CQP模式。这是因为PSNR等评价指标主要关注每帧的统计结果,而不考虑人眼的感知质量。在实际应用中,建议使用如VQM或VMAF等更贴近人眼感知的评价指标来评估视频质量。

0

全部评论 (0)

暂无评论