一基于超前预测的码率控制方法转让专利

申请号 : CN201811253297.7

文献号 : CN109379593A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 曹俊沈雪峰林佳鑫高超符均陈伟

申请人 : 西安交通大学

摘要 :

本发明公开了一种基于超前预测的码率控制方法,通过LOOKAHEAD预测未来视频复杂度,并以此为基准选择编码方式,当视频码率大幅度低于门限码率时,不对视频进行码率惩罚;当视频码率接近门限码率或超越门限码率时,基于超前预测对码率进行控制。本发明更符合网络电视需求,比现有AVBR编码效率高,提高了信道利用率,充分地利用信道资源,使信道不发生下溢造成信道资源浪费,并在尽可能保证视频画面质量的情况下,使信道不发生上溢造成数据丢失,在有限的信道容量下尽可能多传输视频节目。

权利要求 :

1.一种基于超前预测的码率控制方法,其特征在于,通过LOOKAHEAD预测未来视频复杂度,并以此为基准选择编码方式,当视频码率大幅度低于门限码率时,不对视频进行码率惩罚;当视频码率接近门限码率或超越门限码率时,基于超前预测对码率进行控制。

2.根据权利要求1所述的基于超前预测的码率控制方法,其特征在于,包括以下步骤:S1、采用LOOKAHEAD预编码,获知未来数帧可能码率;

S2、结合已编码码率及未来数帧可能码率,计算出平均码率;

S3、将步骤S2计算的平均码率与码率门限作比较,判断平均码率是否接近码率门限,若未接近码率门限,则不改变编码质量;若接近或超越码率门限,则降低编码质量,提升平均码率当前帧的QP值;

S4、采用步骤S3的平均码率当前帧QP值作为编码当前帧的参考进行正式编码。

3.根据权利要求2所述的基于超前预测的码率控制方法,其特征在于,步骤S1中,先对一个预测长度内的每个帧的QP值进行码率预测,将计算得出的码率预测值保存在数组中等待正式编码步骤时调用。

4.根据权利要求3所述的基于超前预测的码率控制方法,其特征在于,正式编码步骤中,先利用未来数帧的帧内帧间关联度与依存度计算得出QP值,然后通过惩罚系数Y计算出新的QP值。

5.根据权利要求2所述的基于超前预测的码率控制方法,其特征在于,步骤S2中,对一个预测长度内的每个帧调出在预编码阶段计算出的码率预测值,然后求和再作统计平均,将最终得出的数值作为当前帧的码率值。

6.根据权利要求1或2所述的基于超前预测的码率控制方法,其特征在于,以门限码率数值的60%作为判断当前帧码率是否接近门限码率的基准;若当前帧的预测码率值低于门限码率数值的60%,认为此刻视频码率大幅度低于门限码率,不对码率进行惩罚;若当前帧的预测码率值高于门限码率数值的60%,认为此刻视频码率开始接近门限码率,开始对码率进行惩罚。

7.根据权利要求6所述的基于超前预测的码率控制方法,其特征在于,惩罚QP值的计算方法为取码率值与门限码率之比对于2的对数再乘以惩罚系数Y。

8.根据权利要求7所述的基于超前预测的码率控制方法,其特征在于,惩罚系数Y的计算公式如下:Y=0.3045e1.9623x

其中,x为预测码率值与门限码率之比。

9.根据权利要求6所述的基于超前预测的码率控制方法,其特征在于,根据超限比例及预编码结果,估计出质量惩罚值,降低编码质量,得到整段视频码率不超越码率门限,码率峰值部分超越码率门限5~10%。

10.根据权利要求1所述的基于超前预测的码率控制方法,其特征在于,码率惩罚的起点为门限码率数值的60%,以预测QP值与惩罚QP值相加得到最终计算QP值作为最终返回的QP值。

说明书 :

一基于超前预测的码率控制方法

技术领域

[0001] 本发明属于视频编码技术领域,具体涉及一种基于超前预测的码率控制方法。

背景技术

[0002] 视频编码有多种码率控制方法,主要分为两大类:质量优先,码率优先。质量优先是保证视频画质不变,鉴于视频内容复杂度随时间变化,故编码后的码率也是随时间变化的,称其为变比特率(VBR)编码;码率优先是保证编码后的码率恒定,为此,画质随视频复杂度变化,称其为固定比特率(CBR)编码。
[0003] CBR适用于固定信道传输,如各个省级电视台卫视节目编码;VBR适用于文件存储,如硬盘存储。
[0004] 对于实时节目,可以采用超前(LOOKAHEAD)方式,先预编码一些帧,得到其复杂度与关联度,为正式编码提供更精确的码流分配依据。LOOKAHEAD方式可以用于CBR或VBR编码。
[0005] 随着网络发展,网络电视正在普及。目前网络电视编码主要存在以下问题:
[0006] 1、CBR编码,浪费网络带宽。为了提高画质,必须把码率设的较高,以满足复杂视频编码质量,但对于简单视频,这种码率编码很浪费。如果把码率设为一个较为中立的数值,由于码率恒定不变化,视频中的复杂的场景会因为码率不足导致画质较差,而简单场景码率则会比较高,造成码率的浪费。
[0007] 2、VBR编码,能按需分配码流,一旦画面复杂,会出现超高码流,造成网络拥塞,观看卡顿。
[0008] 3、目前网络电视常用平均变比特率(AVBR)编码,瞬时码流随画面复杂度变化,在一段时间内(大约几秒钟)平均码流恒定。AVBR兼具CBR与VBR优点,但对于复杂度低的视频,本可用更低码率编码,但必须用平均码率,浪费了编码效率及网络带宽。

发明内容

[0009] 本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于超前预测的码率控制方法,通过LOOKAHEAD预测未来视频复杂度,提前选择VBR或AVBR编码方式。
[0010] 本发明采用以下技术方案:
[0011] 一种基于超前预测的码率控制方法,通过LOOKAHEAD预测未来视频复杂度,并以此为基准选择编码方式,当视频码率大幅度低于门限码率时,不对视频进行码率惩罚;当视频码率接近门限码率或超越门限码率时,基于超前预测对码率进行控制。
[0012] 具体的,包括以下步骤:
[0013] S1、采用LOOKAHEAD预编码,获知未来数帧可能码率;
[0014] S2、结合已编码码率及未来数帧可能码率,计算出平均码率;
[0015] S3、将步骤S2计算的平均码率与码率门限作比较,判断平均码率是否接近码率门限,若未接近码率门限,则不改变编码质量;若接近或超越码率门限,则降低编码质量,提升平均码率当前帧的QP值;
[0016] S4、采用步骤S3的平均码率当前帧QP值作为编码当前帧的参考进行正式编码。
[0017] 进一步的,步骤S1中,先对一个预测长度内的每个帧的QP值进行码率预测,将计算得出的码率预测值保存在数组中等待正式编码步骤时调用。
[0018] 更进一步的,正式编码步骤中,先利用未来数帧的帧内帧间关联度与依存度计算得出QP值,然后通过惩罚系数Y计算出新的QP值。
[0019] 进一步的,步骤S2中,对一个预测长度内的每个帧调出在预编码阶段计算出的码率预测值,然后求和再作统计平均,将最终得出的数值作为当前帧的码率值。
[0020] 具体的,以门限码率数值的60%作为判断当前帧码率是否接近门限码率的基准;若当前帧的预测码率值低于门限码率数值的60%,认为此刻视频码率大幅度低于门限码率,不对码率进行惩罚;若当前帧的预测码率值高于门限码率数值的60%,认为此刻视频码率开始接近门限码率,开始对码率进行惩罚。
[0021] 进一步的,惩罚QP值的计算方法为取码率值与门限码率之比对于2的对数再乘以惩罚系数Y。
[0022] 更进一步的,惩罚系数Y的计算公式如下:
[0023] Y=0.3045e1.9623x
[0024] 其中,x为预测码率值与门限码率之比x=1。
[0025] 进一步的,根据超限比例及预编码结果,估计出质量惩罚值,降低编码质量,得到整段视频码率不超越码率门限,码率峰值部分超越码率门限5~10%。
[0026] 具体的,码率惩罚的起点为门限码率数值的60%,以预测QP值与惩罚QP值相加得到最终计算QP值作为最终返回的QP值。
[0027] 与现有技术相比,本发明至少具有以下有益效果:
[0028] 本发明一种基于超前预测的码率控制方法,通过LOOKAHEAD预测未来视频复杂度,并以此为基准提前选择不同的编码方式,在视频码率大幅度低于门限码率时,不对视频进行码率惩罚,确保低码率高质量;在视频码率接近门限码率甚至超越门限码率时,使用基于超前预测的码率控制方法,确保高码率时网络不拥塞。
[0029] 进一步的,LOOKAHEAD预编码,提供了详细的未来数帧的帧内帧间关联度与依存度,以及各种QP下可能的码率。好处在于这样我们就可以利用在预编码阶段得到的这些信息在正式编码阶段对QP值进行修正。
[0030] 进一步的,结合已编码码率及未来可能码率,计算出平均码率,并以该平均码率作为选择编码该帧视频QP值的基准。目的在于得到这一帧视频的平均码率,好处在于这样我们就可以依据这一平均码率的大小来选择我们编码这一帧视频所使用的最优QP值。
[0031] 进一步的,判断平均码率是否接近码率门限。目的在于判断是否要对QP值进行惩罚。设置码率门限的目的在于设立一个标尺,以此来判断码率是否超出我们的期望值,进而决定是否对其进行惩罚。该步骤中的门限码率可以根据用户需要灵活设置,主要与视频分辨率和用户需要相关。用户的需要即为用户的设备所能支持的码率上限或者所希望得到的观看体验。
[0032] 进一步的,根据超限比例及步骤一预编码结果,可以计算出对应的质量惩罚数值,在保证观众观看体验的情况下,以降低编码质量为代价,保证最终编码输出码率不超限。
[0033] 综上所述,本发明符合网络电视需求,比现有AVBR编码效率高,提高了信道利用率,充分地利用信道资源,使信道不发生下溢造成信道资源浪费,并在尽可能保证视频画面质量的情况下,使信道不发生上溢造成数据丢失,在有限的信道容量下尽可能多传输视频节目。
[0034] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

[0035] 图1为本发明方法框图;
[0036] 图2为惩罚系数Y的曲线图;
[0037] 图3为一组测试视频的码率条形图对比图。

具体实施方式

[0038] 请参阅图1,本发明提供了一种基于超前预测的码率控制方法,通过LOOKAHEAD预测未来视频复杂度,并以此为基准提前选择不同的编码方式,在视频码率大幅度低于门限码率时,不对视频进行码率惩罚,确保低码率高质量;在视频码率接近门限码率甚至超越门限码率时,使用基于超前预测的码率控制方法确保高码率时网络不拥塞,包括以下步骤:
[0039] S1、在预编码步骤中,先对一个预测长度内的每个帧的各种QP值进行码率预测,将计算得出的码率预测值保存在数组中等待正式编码步骤时调用;
[0040] S2、在正式编码步骤中,核心关键是得到即将编码的当前帧的QP值,先利用未来数帧的帧内帧间关联度与依存度计算得出QP值,但利用该QP值编码的帧无法实现码率控制的功能,利用该QP值计算出新的QP值;
[0041] S3、对一个预测长度内的每个帧调出在预编码阶段计算出的码率预测值,然后对这些数值求和再作统计平均,将最终得出的数值作为当前帧的码率值;
[0042] S4、将步骤S3的码率值与码率门限作比较,并判断该码率值是否接近码率门限,根据该码率值是否接近或者是否超越码率门限来决定惩罚的力度,惩罚的力度与接近或者超越门限码率的程度相关;
[0043] S5、码率门限的设置与编码视频的分辨率以及用户的具体需求相关,惩罚QP的公式由多次实验得到,效果较好的基准为使最终得到的整段视频的码率基本不超越码率门限,码率峰值部分至多超越码率门限5~10%。
[0044] S6、返回我们最终计算得出的QP值作为编码当前帧的参考。
[0045] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中的描述和所示的本发明实施例的组件可以通过各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0046] 实施例
[0047] 1.本发明算法的实现是在一台搭载了Intel第六代Sky Lake平台桌面级酷睿处理器的PC机来完成,CPU的型号为Intel(R)Core(TM)i3-6100CPU@3.70GHz,双核四线程,搭载了Intel HD Graphics 530核芯显卡,运行的操作系统为Intel Media SDK推荐使用的CentOS 7.4 64位系统。使用的Intel Media SDK的版本是1.26。
[0048] 2.本发明所修改源程序的位置如下:
[0049] MediaSDK\_studio\mfx_lib\encode_hw\h264\src\mfx_h264_encode_hw_utils.cpp,主要修改的位置在LookAheadCrfBrc::PreEnc和LookAheadCrfBrc::GetQp。前者是关于预编码代码的位置,后者是关于计算当前帧QP值代码的位置。
[0050] 3.关于预编码代码处的修改,主要是要对一个预测长度内的每个帧的各种QP值进行码率预测和计算出一个预测长度内各个帧的大致预测QP数值,首先是对于码率的预测,具体的方法是仿照开源的MediaSDK代码如下:
[0051] MediaSDK\_studio\mfx_lib\encode_hw\h264\src\mfx_h264_encode_hw_utils.cpp
[0052] 其中,LookAheadBrc2::PreEnc(此处为LA的预编码)在LookAheadCrfBrc::PreEnc(此处为LA-ICQ的预编码)中复现,复现的方法只需要改动源码中相对应位置的参数名称并在相应结构体中加入新的成员变量即可,具体的原理和方法是一样的。源码中计算未来数帧可能码率的方法是利用预编码得到的intercost等信息计算得到newData.estRate[qp],该数值的单位为比特每宏块,其次需要修改的是在预编码PreEnc阶段加入计算一个预测长度内各个帧的大致预测QP数值的步骤。
[0053] 具体的方法与源代码中LookAheadCrfBrc::GetQp处的代码相似,只不过源代码是在GetQP阶段才计算了当前帧的大致预测QP数值,而我们需要调用一个预测长度内各个帧的intercost,intracost,propcost数据,用一个for循环在预编码PreEnc阶段就提前计算得出我们需要的一个预测长度内各个帧的大致预测QP数值。
[0054] 利用未来数帧的帧内帧间关联度与依存度计算得出的QP值(即大致预测QP数值)的具体方法为:
[0055] strength=0.03*m_crfQuality+.75;//strength为常数
[0056] ratio=1.0;//比率设置为1.0
[0057] deltaQpF=log((m_interCost+m_propCost*ratio)/m_intraCost)/log(2.0);
[0058] deltaQp=(m_interCost>=m_intraCost*0.9)//此处比较帧间与帧内cost来得到Qp
[0059] ?-mfxF32(deltaQpF*2*strength+0.5)//来自参考帧的信息小于10%,选择大Qp[0060] :-mfxF32(deltaQpF*1*strength+0.5);//来自参考帧的信息大于10%,选择小Qp[0061] m_curQpF=CLIPVAL(1,51,m_crfQuality+deltaQp);//计算得出的QP值(即大致预测QP数值)
[0062] 参数说明:intercost是由MediaSDK中计算得出的数值,意义为帧间预测所花费的计算量,同理intracost为帧内预测所花费的计算量,propcost为当前帧贡献给未来帧的信息量。
[0063] 4.关于计算当前帧QP值代码的修改,首先取出在预编码阶段计算得出的当前帧的大致预测QP值,然后用该QP值计算出回归系数rateCoeff=m_rateCoeffHistory[qp].GetCoeff(),接下来对一个预测长度内的帧数做for循环,利用在与编码阶段计算出的预测QP值和预测码率值,将它们依次累加,然后对预测长度作平均,得出的值即为预测码率值。
[0064] for(mfxU32i=m_first;i
[0065] {
[0066] mfxU32qp=floor(m_laicqData[i].curQpF;
[0067] m_laicqData[i].estRateTotal[qp]=MFX_MAX(MIN_EST_RATE,rateCoeff*m_laicqData[i].estRate[qp]);
[0068] totalEstRate+=m_laicqData[i].estRateTotal[qp];//实际上预测的是一共m_laicqData.size()个的dataLength}
[0069] }
[0070] 此时计算出的数值单位为比特每宏块,需进行单位的换算,以视频帧率25帧每秒,1080P为例,则此数值乘以202.5即单位转换为Kbps。
[0071] 惩罚QP值的计算公式为取码率值与门限码率之比对于2的对数再乘以一个系数。以门限码率数值的60%作为判断当前帧码率是否接近门限码率的基准,也就是说,若当前帧的预测码率值低于门限码率数值的60%,认为此刻视频码率大幅度低于门限码率,不对码率进行惩罚;若当前帧的预测码率值高于门限码率数值的60%,认为此刻视频码率开始接近门限码率,开始对码率进行惩罚。
[0072] 公式中惩罚系数Y的计算公式为:
[0073] Y=0.3045e1.9623x
[0074] 其中,x为预测码率值与门限码率之比,把预测QP值与惩罚QP值相加得到的最终计算的QP值作为最终返回的QP值。
[0075] 5.参数设置:初始化的目标质量QP值即设为35,预测深度lad设为25,GOPSize设为25,视频分辨率为1080P,GOPdist设为5,参考帧个数num-ref设为2。
[0076] 6.对两个样本视频分别进行测试,测试结果见表1和表2。
[0077] 表1为样本视频一的测试结果
[0078]
[0079]
[0080] 表2样本视频二的测试结果
[0081]
[0082] 请参阅图3,为测试过程中其中一组测试视频的码率条形图对比图,上方的条形图为为利用源码中的LOOKAHEAD_ICQ编码结果,下方的条形图为利用本算法编码后的视频编码结果,可以看出,在视频码率较低的部分得到了保持,视频码率较高的部分得到了明显的限制,峰值码率得到了较为有效的控制。
[0083] 以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。