X264码率控制总结——ABR,CQP,CRF
参考:https://blog.csdn.net/tanningzhong/article/details/51545389 |
X264
显式支持的一趟码率控制方法有:ABR
,CQP
,CRF
. 缺省(即默认)方法是CRF
。这三种方式的优先级是ABR
>CQP
>CRF
.bitrate
和QP
都没有缺省值,一旦设置他们就表示要按照相应的码率控制方法进行编码,CRF
有缺省值23,没有任何关于编码控制的设置时就按照缺省值23来编码。一般的使用建议:
CQP – 不推荐使用,在一些算法验证工作中会使用这种模式。(本人编辑此文时还未理解)
CRF – 适合在 一遍 编码质量而输出文件大小 或 码率不是太紧要的场景下使用,一般网络压片使用CRF。
1 pass ABR – 适用于流媒体、目标码率受限的实时应用。
2 pass VBR – 适用于有码率限制、有时间二次编码的非实时应用。
CQP,恒定QP. 无缺省值 (不建议使用。本人编辑此文时还未理解)
最简单的码率控制方式,每帧图像都按照一个特定的
QP
来编码,每帧编码后的数据量有多大是未知的。连续多个
B帧
时,QP
会渐增。QP
值越小,编码视觉质量越好。QP=0
为无失真编码。相同视觉质量时,
CQP
编码输出的文件会比CRF
模式更大。一般而言CRF
都能代替CQP
方法,不过CQP
因为完全不需要预测所以它会运行得更快一些。帧的重要级别为:IDR帧 > I帧 > P帧 > 做参考的B帧 > 不做参考的B帧。QP可以依次增大。
QPmin,默认值: 0。定义X264可以使用的最小量化值。量化值越小,输出视频质量就越好。
当QP小于某一个值后,编码输出的宏块质量与原始块极为相近,这时没必要继续降低QP。
如果开启了自适应量化器(默认开启),不建议提高QPmin的值,因为这会降低平滑背景区域的视觉质量。\
QPmax,默认值: 51。定义X264可以使用的最大量化值。默认值51是H.264规格中可供使用的最大量化值。如果想要控制X264输出的最低品质,可以将此值设置的小一些。
QPmin和QPmax在CRF,ABR方法下是有效的,过低的设置QPmax,可能造成ABR码率控制失败。不建议调整这个参数。\
QPstep,默认值: 4。设置两帧间量化值的最大变化幅度。帧间QP变化,帧内宏块QP不变,输出码率未知,各帧输出视觉质量有变化(高QP低码率的情况下会更明显)。
CRF,恒定Rate Factor(码率系数),缺省值23
CQP
是把某个量化值作为目标,bitrate
是把某个输出文件大小作为目标,而CRF
则是把某个输出“视觉质量”作为目标。CRF
可以提供跟QP
一样的视觉质量,但是文件更小,CRF
是通过降低那些less important
帧的质量来达到此目的的。less important
的意思是那些过于耗费码率、难肉眼察觉的帧,比如复杂或者高速运行的场景。省下来的码率会分配给其它更有效的帧。它也是通过改变不同重要级别帧(I,P,B类型),以及帧内不同宏块类型(高速运动,复杂纹理,平坦区域)的
QP
值,以此来调整输出视觉质量。和
QP
的范围一样RF
的范围也是[0,51]。其中0为无损模式,23为缺省,51质量最差。和QP
一样的趋势。RF
值加6,输出码率大概减少一半;减6,输出码率翻倍。从主观上讲,18-28是一个合理的范围,18往往被认为从视觉上看是近似无损的。
帧间
QP
变化,帧内宏块QP
变化,输出码率未知,各帧输出视觉质量基本恒定。
ABR, 恒定平均目标码率。 想要选择这种码率控制方法,必须先设置
bitrate
。X264
中bitrate
的单位是Kbps
.--bitrate 128
指的是设置目标码率为128Kbps
, 这样一秒钟的数据量为 128K bit/8 = 16K Byte。如果输入为
352x288@15fps
,相当于128Kbit/(352_288_15) = 0.086比特每像素。编码后每个像素平均分配不到0.1个比特。与
ABR
相应的技术有CBR
,VBR
。这些码率控制技术首先都是在音频编码中采用,是解决音频编码采用什么样的比特率最优的问题。CBR
编码码比特率基本保持恒定在目标比特率,有利于流式播放。CBR
的缺点在于复杂场景码率不够用,简单场景码率浪费,因此编码内容的视觉质量不稳定。通常在较低比特率下,这种质量的变化会更加明显。VBR
编码为简单场景分配较大的QP
,为复杂的场景分配较小的QP
,得到基本稳定的输出视觉质量。相对于
CBR
,在相同文件大小的条件下,VBR
的输出结果要比CBR
好的多,这有利于媒体下载和本地存储。VBR的缺点在于输出码流大小不可控。同时对于复杂度恒定的内容(例如新闻播音)没什么优势。
ABR
编码为简单场景分配较少的比特,从而留出足量的比特用于生成高质量的复杂部分。使得有限的比特数能够在不同的场景间合理分配,这类似于VBR
。同时
ABR
分配码率,使得在一定时间内,平均码率趋近于目标码率,这样可以控制输出文件大小,这点类似于CBR
。因此可以认为
ABR
是CBR
和VBR
的一种折中优化方案。- 比较这三种码率控制方式如下:
\ | 视觉质量稳定性 | 即时输出码率 | 输出文件大小 |
---|---|---|---|
CBR | 不稳定 | 恒定 | 可控 |
VBR | 稳定 | 变化 | 不可控 |
ABR | 基本稳定 | 变化 | 可控(即时码率变化,但一段时期内平均码率趋近目标码率) |