Video那些事--Rate Control Mode

CBR与VBR
 
CBR会在压缩输出的时候就把会每一秒的画面都计算为固定的大小,运算量小,编码时间短而且解码算法也简单,缺点是在画面剧烈运动的时候会由于码率不够而丢失部分画面信息。从视觉上来看就是画面波纹严重,图像不清晰,VBR的出现就是为了解决这个问题。
 
CBR(Constant Bit Rate)是固定码率
VBR(Variable Bit Rate)是可变码率
 
CBR需要设置一个固定码率。
VBR有三个参数分别是MAXAverageMIN,即最大码率,平均码率和最小码率。
 
DVD视频文件平均码率6Mbps,每一秒的视频就是6Mbps/8=750KB,一小时的视频大小就是750KB*3600=2700MB即2.7GB。
采用VBR压缩视频时,Encoder会先逐帧扫描一下,把运动量大的帧码率调高,运动量小或是静止的画面码率调低,保证平均后的码率等于ARG值。
VBR的画面质量相对高,但运算量大压缩时间长,解码算法复杂,对解码器的要求比较高。这就是很多手机可以播出CBR的RM视频,却播不了VBR的RMVB视频的原因。

在MPEG4级压缩的应用还出现了Bitrate VBR和Quality VBR即码率控制与质量控制,前者是单纯的调整码率达到平均值,后者复杂一些是根据图像质量而定所以并不能先给出一个平均值来,只是保证每一帧画面的质量达到要求,至于这一帧画面为了保证质量会达到什么样的码率值并不是提前知道的,当然这种运算就更复杂了。还有更高级的保持质量的压缩方式Two-pass即Two-pass Encoding 的先对影片作一次分析,即First-pass。此时整个影片档案会被先作扫描,定义影片中的影格是动态或是静态,所以再决定相应的每一帧画面的码率来进行压缩。
 
X264 中对于码率控制方法有三种:X264_RC_CQP、X264_RC_CRF、X264_RC_ABR。默认情况是选择 CRF 方法
 

介绍一下 X264 中使用到的与码率控制相关的几个概念:

  • CQP(Constant QP),恒定QP(Quantization Parameter),追求量化失真的恒定,瞬时码率会随场景 复杂度而波动,该模式基本被淘汰(被 CRF 取代),只有用”-pq 0”来进行无损编码还有价值。

  • CRF(Constant Rate Factor),恒定质量因子,与恒定 QP 类似,但追求主观感知到的质量恒定,瞬时码率也 会随场景复杂度波动。对于快速运动或细节丰富的场景会适当增大量化失真(因为人眼不易注意到),反之 对于静止或平坦区域则减少量化失真。

  • ABR(Average Bitrate),平均码率,追求整个文件的码率平均达到指定值(对于流媒体有何特殊之处?)。 瞬时码率也会随着场景复杂度波动,但最终要受平均值的约束。

  • CBR(Constant Bitrate),恒定码率。前面几个模式都属于可变码率(瞬时码率在波动),即VBR(Variable Bitrate); 恒定码率与之相对,即码率保持不变。

x264 并没有直接提供 CBR 这种模式,但可以通过在 VBR 模式的基础上做进一步限制来达到恒定码率的目标。 CRF 和 ABR 模式都能通过--vbv-maxrate --vbv-bufsize来限制码率波动。

posted @ 2020-01-15 17:36  AndyHu518  阅读(492)  评论(0编辑  收藏  举报