一种视频实时编码的变码率控制方法与流程

文档序号:34377255发布日期:2023-06-07 23:40阅读:54来源:国知局
一种视频实时编码的变码率控制方法与流程

本发明涉及视频编码,特别涉及一种视频实时编码的变码率控制方法。


背景技术:

1、目前应用于视频实时编码的vbr算法均采用在简单场景分配较少的目标码率,复杂场景分配较大的目标码率,以达到维持视频图像编码质量稳定的目的。现有vbr优化算法都是基于图像内容和运动状态的,通过对一段时间内的图像复杂度信息进行分析,将其作为计算目标码率的一个影响因子,实现不同复杂度下分配不同的目标码率。

2、但是,现有vbr控制技术中仍采用精确的目标码率进行控制,当瞬时码率在目标码率上下波动时易引起qp的振荡,不利于维持图像质量的稳定。而对于不同复杂度和运动强度的场景没有一个合适的分配策略,当视频图像发生场景变化时,易出现实际码率过大或过小的现象。

3、此外,现有技术中的常用术语如下:

4、视频编码就是通过压缩技术,将原始视频格式的文件转换成另一种便于传输和存储的视频格式文件的方式。

5、码率就是数据传输时单位时间传送的数据位数,单位时间内传输的位数越大,精度就越高,处理出来的文件就越接近原始文件。

6、码率控制就是在满足信道带宽和传输时延限制的情况下有效传输视频数据,保证视频业务的播放质量,需要对视频编码过程进行码率控制。

7、vbr(variable bit rate)变码率控制,允许其编码码率随着图像复杂程度的变化而波动,以保证编码图像质量平稳。算法根据场景图像内容分配目标比特率,图像内容比较简单则分配较少的码率,图像内容复杂则分配较多的码率,既要保证图像质量,又要兼顾带宽限制。

8、图像组gop表示两个相邻编码i帧间隔的帧数,一般设置为帧率fps的倍数。

9、gops表示gop的倍数。

10、ippp编码结构表示每个gop只有一个i帧,其他全为p帧。实时编码时每个p帧只参考前一帧已编码图像。

11、量化参数qp是视频编码中非常重要的参数,直接影响着视频的编码比特率和图像失真。码率控制通过控制量化参数qp使得编码速率尽量接近目标码率。


技术实现思路

1、为了解决上述问题,本方法的目的在于:根据用户对码率波动的容忍度为当前gop级目标码率设定其允许波动的上下限,减少因瞬时码率正常波动而引起的qp振荡,更好的维持图像质量的稳定。当视频图像发生场景变化时,通过估计的瞬时码率和分配的目标码率波动上下限进行加权求和,得到一个合理的新码率控制上下限。其中加权的比重和当前帧在gop中的位置相关,越靠近i帧的控制强度越大,越远离i帧的控制强度越弱,保证在码率可控的前提下质量的稳定,减少码流的浪费。

2、具体地,本发明提供一种视频实时编码的变码率控制方法,所述方法应用于视频实时编码的ippp结构,实现帧级目标码率控制,包括gops和gop级码率分配、帧级码流分配、帧级qp计算、编码信息统计;所述方法采用分级策略,分为:gops级、gop级、帧级,依次为不同编码单元分配目标码率;

3、在gops级设置编码允许的最大码率,以保证数据的有效传输和存储;

4、在gop级依据图像特征分析算法获取的图像复杂度和运动强度信息分配目标码率,允许在gops统计时间内编码码率波动,从而保证编码图像质量平稳;

5、在帧级对于瞬时估计码率波动在用户容忍范围内的情况下,不调整量化参数qp;当瞬时估计码率超出容忍范围时,根据场景变化对码率的影响程度及场景变化位置,计算一个新的码率波动上下限,并指导qp的调整。

6、所述方法进一步包括:

7、s1,码率分配:

8、s1.1,gops级目标码率分配:只为gops级设定最大码率maxbr,指导该统计时间内的实际编码的平均码率不超出该最大值,保证码率传输和存储:gopsbγ≤maxbγ;

9、s1.2,gop级目标码率分配:gop级目标码率gopbr受到gops级的剩余最大码率maxrembr、视频图像复杂度cplx、运动强度motionstrength的限制;gop级目标码率的分配随图像复杂度、运动强度增加而增加,以保证在场景变换后依然平稳的视频质量;根据用户对码率波动的容忍度fluctlvl,确定gop级码率波动上下限;

10、s1.3,帧级的码流分配:将最后已编码帧的码流值作为gop剩余未编码帧的码流估计值,从而得到当前的瞬时估计码率estbr;将estbr与最大码率maxbr、最小码率minbr比较,计算新的最大码率newmaxbr和新的最小码率newminbr;为当前帧分配目标码流tgtfrmbits;

11、s2,帧级p帧qp的计算:

12、1)对于稳定场景,将estbr与maxbr、minbr比较,判断当前帧qp的调整方向和偏移量qpofst;

13、2)对于不稳定场景,根据estbr和maxbr、minbr获取当前的newmaxbr和newminbr,将estbr与maxbr、minbr比较,判断当前帧qp的调整方向和偏移量qpofst;

14、则当前待编码p帧qp为当前帧前一已编码帧的qp值lastfrmqp与qpofst之和;

15、s3,编码完一帧后或一个gop后更新相关统计信息,为下一帧或下一个gop编码做准备。

16、所述方法中,

17、设置控制参数:最大码率maxbr、最大静止码率maxstillbr、最小码率minbr、码率波动容忍度fluctlvl、qp的最大值maxqp和最小值minqp、gops统计时间tstat,其中,

18、最大码率maxbr用来保证编码码率的正常传输和存储;

19、最小码率minbr用来控制编码的最差质量;

20、最大静止码率maxstillbr用来控制静止场景对码率的不必要浪费;

21、码率波动容忍度fluctlvl用来计算客户对瞬时码率在目标码率上下允许波动的范围;

22、qp最大值maxqp和最小值minqp用来控制图像的质量范围;

23、gops统计时间tstat越长,允许的瞬时码率波动越大,否则允许的瞬时码率波动越小。

24、所述步骤s1.2中,进一步包括:

25、s1.2.1,依据场景复杂度分配码率:

26、根据图像特征分析获取当前帧的复杂度;将最小码率到最大静止码率的范围分为n个区间,其中n≥2的正整数,由小到大依次标号为0~n-1,将视频图像复杂度与阈值cplxthrd[n-1]比较,判断其所在区间的标号cplxidx,通过查表cplxratio[cplxidx]得到码率偏移比率,该表格数值根据经验得到;那么gop级在该图像复杂度下的静止目标码率cplxbr计算方法如下:

27、cplxbγ=minbγ+(maxstillbγ-minbγ)·cplxratio[cplxidx];

28、s1.2.2,依据场景运动强度分配码率:

29、根据图像特征分析获取当前帧的视频图像运动强度;将该复杂度下的静止码率到最大允许码率的范围分为n个区间,其中n≥2的正整数,由小到大依次标号为0~n-1,将当前场景下的运动强度与阈值motionthrd[n-1]比较,判断其所在区间的标号motionidx,通过查表motionratio[motionidx]得到码率偏移比率,该表格数值根据经验得到;那么在该场景运动强度下的gop级目标码率计算方法如下:

30、gopbγ=cplxbγ+(maxbγ-cplxbγ)·motionratio[motionidx];

31、对gop级目标码率进行限制,避免gops级实际编码的平均码率不可控:

32、

33、其中,剩余最大码率maxrembr;

34、s1.2.3,根据用户对码率波动的容忍度fluctlvl,确定gop级码率波动上下限:

35、maxbγ=gopbγ·(100+upfluctbγ[fluctlvl])/100

36、minbγ=gopbγ·(100-dwfluctbγ[fluctlvl])/100,

37、对目标码率上下限进行限制:

38、

39、

40、maxbr表示当前gop允许达到的最大码率,maxrembr是为满足gops级码率可控条件下实时调整的gops内剩余未编码gop的最大平均目标码率。

41、所述步骤s1.2.1中,

42、假设n=6,即根据实际测试情况划分了6个区间,由小到大依次标号为0~5,将视频图像复杂度与阈值cplxthrd[5]比较,判断其所在区间的标号cplxidx,通过查表cplxratio[cplxidx]得到码率偏移比率。其中,cplxthrd[5]和cplxratio[6]分别表示图像复杂度阈值和所计算目标码率相对于最小码率minbr向最大静止码率maxstillbr偏移的比率值,表格中数值根据经验得到,

43、设cplxthrd[5]={20,50,80,110,150}

44、设cplxratio[6]={0,0.15,0.45,0.65,0.8,1.0}

45、那么gop级在该图像复杂度下的静止目标码率cplxbr计算方法如下:根据公式cplxbr=minbγ+(maxstillbγ-minbr)·cplxratio[cplxidx]

46、若最小码率minbr设置为500kbps,最大静止码率maxstillbr允许达到800kbps,当前复杂度为85时,通过查表cplxthrd[5],可得对应索引cplxidx=3,再查表cplxratio[6]可得cplxbr=500+(800-500)*0.65,当前图像复杂度下的静止目标码率为695kbps。

47、所述步骤s1.2.2中,

48、假设n=6,即根据实际测试情况划分了6个区间,由小到大依次标号为0~5,将当前场景下的运动强度与阈值motionthrd[5]比较,判断其所在区间的标号motionidx,通过查表motionratio[motionidx]得到码率偏移比率,其中,motionthrd[5]和motionratio[6]分别表示运动强度阈值和所计算目标码率相对于该场景复杂度下的静止码率偏移的比率值,该表格数值根据经验得到,

49、设motionthrd[5]={10,30,50,75,90}

50、设motionratio[6]={0,0.15,0.35,0.5,0.85,1.0}

51、那么在该场景运动强度下的gop级目标码率计算方法如下:

52、根据公式gopbγ=cplxbγ+(maxbr-cplxbγ)·motionratio[motionidx]

53、若当前图像复杂度下的码率gopbr为600kbps,最大码率maxbr为1000kbps,运动强度为40时,通过查表motionthrd[5],可得对应运动强度索引motionidx=2,再查表motionratio[6]可得600+(1000-600)*0.35,则当前场景运动强度下的gop级目标码流为740kbps;

54、对gop级目标码率进行限制,若计算得到的gopbr为700kbps,而由于gops级前几个gop消耗的码率过多,使得maxrembr小于700kpbs,假设为650kbps,则当前gop级的目标码流被限制到650kbps。

55、所述步骤s1.2.3中,

56、设upfluctbr[6]={0,10,15,25,40,50}

57、设dwfluctbr[6]={0,3,5,10,15,20}

58、当用户期望得到更稳定的编码图像质量而允许一定的码率波动时,将fluctlvl作为upfluctbr[6]和dwfluctbr[6]的表格索引值,查表得到相对于目标码率的上下限码率,假设用户对码率波动的容忍度fluctlvl为3,

59、允许的码率波动上下限可下面同时计算得到:

60、maxbγ=gopbγ·(100+upfluctbγ[fluctlvl])/100

61、minbγ=gopbγ·(100-dwfluctbγ[fluctlvl])/100

62、gop级目标码率为1000kbps,则gop级目标码率的上限可由公式计算得到maxbr=1000*(100+25)/100=1250kbps,下限可有公式计算得到minbr=1000*(100-10)/100=900kbps;

63、对目标码率上下限进行限制,根据公式:

64、

65、

66、若最大码率maxbr为1000kbps,当gops内已编码的gop的平均码率超出了maxbr,则剩余未编码的gop的最大码率maxrembr将小于maxbr,假设为900kbps,此时maxbr需限制为900kbps,gops级的平均码率才可能控制在最大允许的范围内。

67、所述步骤s1.3中,进一步包括:

68、所述得到当前的瞬时估计码率estbr如下,其中,gopencbits表示当前gop已经编码的bits,lastfrmbits表示当前帧前一已编码帧的编码码流值,nenc表示gop以编码帧数,nleft表示gop未编码帧数,nttl表示gop总的编码帧数,nfps表示编码帧率:

69、

70、所述将estbr与maxbr、minbr比较,计算newmaxbr和newminbr如下:

71、

72、

73、所述当前帧分配目标码流tgtfrmbits如下:

74、

75、所述步骤s2进一步包括:

76、设定up_ratiobr[5]={1.05,1.25,1.875,2.5,3.125}

77、设定dw_ratiobr[5]={1.05,1.25,1.875,2.5,3.125}

78、up_ratiobr[5]为估计码率estbr超出目标码率的程度划分了6个级别,根据所处的级别对qp做不同程度的增大调整;dw_ratiobr[5]为估计码率estbr低于目标码率的程度划分了6个级别,根据所处的级别对qp做不同程度的减小调整;

79、1)对于稳定场景,将estbr与maxbr、minbr比较,判断当前帧qp的调整方向和偏移量:

80、当estbr>maxbr时,ratiobr=estbr/maxbr,获取ratiobr在up_ratiobr[5]所属的区间索引号upidx;

81、当estbr<minbr时,ratiobr=minbr/estbr,获取ratiobr在dw_ratiobr[5]所属的区间索引号dwidx;

82、

83、2)对于不稳定场景,根据estbr和maxbr、minbr获取当前的newmaxbr和newminbr:

84、当estbr>newmaxbr时,ratiobr=estbr/newmaxbr,获取ratiobr在up_ratiobr[5]所属的区间索引号upidx;

85、当estbr<newminbr时,ratiobr=newminbr/estbr,获取ratiobr在dw_ratiobr[5]所属的区间索引号dwidx;

86、

87、则当前待编码p帧qp为当前帧前一已编码帧的qp值lastfrmqp与qpofst之和,即lastfrmqp+qpofst。

88、所述步骤s3中的相关统计参数包括estbr、newmaxbr和newminbr。

89、由此,本技术的优势在于:本方法通过码率波动容忍度,将瞬时估计码率与目标码率允许波动的上下限进行比较,而不是和目标码率作比较,来决定如何调整qp以减少qp的不必要波动。更好的维持图像质量的稳定,保证在码率可控的前提下质量的稳定,减少码流的浪费。本方法简单有效,很好的解决了现有技术中的问题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1