1. X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF。这三种方式的优先级是ABR > CQP > CRF.
if ( bitrate ) rc_method = ABR;
else if ( qp || qp_constant ) rc_method = CQP;
else rc_method = CRF;
bitrate和QP都没有缺省值,一旦设置他们就表示要按照相应的码率控制方法进行编码,CRF有缺省值23,没有任何关于编码控制的设置时就按照CRF缺省值23来编码。
一般的使用建议:
CQP – 一般不推荐使用,在一些算法验证工作中会使用这种模式
CRF – 适合在关注一遍编码质量而输出文件大小或码率不是太紧要的场景下使用,一般网络压片使用CRF。
1 pass ABR – 适用于流媒体或者目标码率受限的实时应用场景。
2 pass VBR – 适用于有目标码率限制而又有时间可以进行二次编码的非实时应用。
2. CQP,恒定QP. 无缺省值
最简单的码率控制方式,每帧图像都按照一个特定的QP来编码,每帧编码后的数据量有多大是未知的。
参数qp_constant设置的是P帧的QP。I,B帧的QP根据f_ip_factor, f_pb_factor,计算得到。
rc->ip_offset = 6.