x264 和 x265 码率控制方式ABR、CQP、CRF

一、CBR和VBR

       CBR(Constant Bitrate Encoding)恒定码率编码:以恒定码率方式进行编码,不考虑场景的复杂度。当运动场景时,由于码率恒定,图像质量变差(可能会产生马赛克);当静止场景时,图像质量变好;因此图像质量不稳定。CBR是single-pass技术。

       VBR(Variable Bitrate Encoding)动态码率编码:码率随着场景复杂度而变化,因此编码效率较高。运动场景复杂则分配较多的码字保证图像质量,静止场景简单则分配较少的码字,因此图像质量较稳定又兼顾宽带限制。VBR是two-pass技术,first pass扫描视频分析场景复杂度,second pass码率编码。

       CBR和VBR比较,如下图:

x264 和 x265 码率控制方式ABR、CQP、CRF

  CBR码率基本没有波动;VBR码率随场景复杂度波动较大,而且针对不同视频文件,码率平均值不同。因此CBR在成本和可传输性上优,VBR在整体视频质量上优。

二、x264和x265支持的ABR、CQP、CRF

       ABR(Average Bitrate Encoding)平均码率编码:在一定的时间范围内达到设定的码率,但局部码率峰值可以超过设定的码率,平均码率恒定。ABR结合了CBR和VBR的优点。

x264 和 x265 码率控制方式ABR、CQP、CRF

       CBR、VBR、ABR都需要设定一个目标码率,编码器根据目标码率调整视频质量。对于所有视频文件使用相同的码率阶梯,导致最终视频质量不合理。例:假设有100个视频,平均码率为2,编码时设定目标码率为2。其中一个视频A场景较复杂,平均码率为4,编码器使用目标码率为2进行编码,导致最终视频质量低。

       CQP(Constant Quantization Parameter)恒定量化参数:追求量化失真的恒定,瞬间码率会随着场景复杂度而波动,一般不推荐使用,被CRF取代。x264和x265中支持CQP模式。QP范围是[0 51],QP值越大表示量化步长越大,编码视频的质量越低。QP=0表示无损编码。

       CRF(Constant Rate Factor Encoding)恒定质量因子:设定目标质量,编码器通过调整码率达到目标质量恒定。追求直观感知到的质量恒定,瞬间码率也会随场景复杂度波动。x264和x265默认码率控制方式。CRF范围是[0 51],CRF值越大视频压缩率越高,但视频质量越低。

三、源码及应用

       x264码率控制

#define X264_RC_CQP                  0
#define X264_RC_CRF                  1
#define X264_RC_ABR                  2

     x265码率控制:

/* rate tolerance method */
typedef enum
{
    X265_RC_ABR,
    X265_RC_CQP,
    X265_RC_CRF
} X265_RC_METHODS;

在x264中,一般取值为18-28,默认值是23

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

在x265中,默认的crf值是28

ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/45064.html

(0)

相关推荐

发表回复

登录后才能评论