[转载] [Codec系列] 之常用码率控制算法分析
来源:博客园,
链接:https://www.cnblogs.com/SoaringLee/p/10532170.html
0、前言
视频编码中的码率控制是一种重要的编码技术,旨在保证码率平稳或者图像质量平稳,在实际应用中,码率控制应用很多,这里分析一下常用的码率控制算法。主要以当前海思IPC芯片中实现的码率控制方式为例进行分析。
CBR(Constant Bit Rate)固定比特率。 即在码率统计时间内保证编码码率平稳。码率
稳定主要由两个量来评估。(保带宽,牺牲图像质量)
- 码率统计时间 u32StatTime
单位为秒(s),码率统计时间越长,每帧图像的码率波动对于码率调节的影响越
弱,码率的调节会更缓慢,图像质量的波动会更轻微;码率统计时间越短,每帧
图像的码率波动对于码率调节的影响越强,图像码率的调节会更灵敏,图像质量
的波动会更剧烈。 - 行级码率控制调节幅度 u32RowQpDelta
行级码率控制调节幅度是一帧内行级调节的最大范围,其中行级以宏块行为单
位。调节幅度越大,允许行级调整的 QP 范围越大,码率越平稳。对于图像复杂
度分布不均匀的场景,行级码率控制调节幅度设置过大会带来图像质量不均匀。
VBR(Variable Bit Rate)可变比特率,即允许在码率统计时间内编码码率波动,从而保证编码图像质量平稳。
以 H.264 编码为例,VENC 模块提供用户可设置 MaxQp,MinQp,MaxBitrate 和 ChangePos。MaxQp,MinQp 用于控制图像的质量范围,MaxBitrate 用于钳位码率统计时间内的最大编码码率,ChangePos 用于控制开始调整Qp 的码率基准线。(保图像质量)
- 当编码码率大于 MaxBitrate*ChangePos 时,图像 qp 会逐步向MaxQp 调整,如果图像 QP 达到 MaxQp,QP 会被钳位到最大值,MaxBitrate 的钳位效果失效,编码码率有可能会超出 MaxBitrate。
- 当编码码率小于 MaxBitrate*ChangePos时,图像 QP 会逐步向 MinQp 调整,如果图像 QP 达到 MinQp,此时编码的码率已经达到最大值,而且图像质量最好。
Fix Qp 固定 Qp 值。在码率统计时间内,编码图像所有宏块 Qp 值相同,采用用户设定的图像 Qp 值,I 帧、P 帧和B帧的 QP 值可以分别设置。(所有宏块的Qp值相同意味着巨大的带宽,图像质量要视Qp值与实际图像情况来匹配,如剧烈变化的画面和静止画面都使用相同的Qp值,不太合理,个人感觉仅仅用于调试和排查问题时用)
AVBR(Adaptive Variable Bit Rate)可变比特率,即允许在码率统计时间内编码码率波动,从而保证编码图像质量平稳。
核心思想:码率控制内部会检测当前场景的运动静止状态,在运动时用较高码率编码,在静止时主动降低目标码率。
以 H.264 编码为例,VENC 模块提供用户可设置 MaxBitrate,ChangePos 和 MinStillPercent。MaxBitrate 表示运动场景下的最大码率,MaxBitrate*ChangePos*MinStillPercent 表示静止情况下的最小码率。根据运动程度的不同目标码率会在最大码率和最小码率间调整。MaxQp,MinQp 用于控制图像的质量范围,码率控制以 QP 钳位为最高优先级,超出 MinQp,MaxQp 范围内码率控制将失效。(这种控制策略应该是最有,但实际部署时每个网络环境的MaxBitrate可能不同,需要根据场景定制化参数,有点难用)
QPMAP Qp 表,该码控模式下,码控的策略由用户决定,且一帧编码图像以 16*16 块为单位,每一个 16*16 块的 Qp 值,采用用户设定的相应块的 Qp 值。所有这些块的QP 值组成 QP 表,该表中 QP 值的组织方式如图 6-3 所示。
CVBR(Constrained Variable Bit Rate) 是以VBR为基础,旨在提供平稳的图像质量的码率,同时对VBR的码率进行限制,以满足传输宽带以及存储空间的要求。
具体来说,CVBR设置了瞬时,短期和长期码率的限制。其中,瞬时码率的限制保证网络带宽对传输带宽的要求;长期码率保证了在长时间视频录制时,存储设备有足够的空间存储数据;同时,短期码率会根据长期码率的设置和实际使用情况进行调节,以在场景复杂的情况下提供更加平稳的图像质量,并在场景简单时节省码率。
QVBR(Quality Variable Bit Rate) 基于主观质量的可变比特率,该方式是利用实时统计的PSNR的大小来动态调整码率,从而保证编码图像质量平稳。在PSNR较小时主动升高目标码率,PSNR较大时主动降低码率。
参考:《Hi3559A HiMPP V4.0 媒体处理软件开发参考.pdf》