APP下载

基于x264编码的码率控制模型优化方法

2023-09-20赵香华

计算机仿真 2023年8期
关键词:比特率码率偏移量

杨 华,赵香华

(沈阳航空航天大学计算机学院,辽宁 沈阳 110136)

1 引言

随着流媒体技术的发展,智能终端设备和移动通信网络大面积普及,在线直播凭借其较好的互动性和实时性,成为互联网传播内容的主要方式之一。为了在直播过程中带给用户更好的体验,动态码率自适应技术普遍应用于视频直播中。码率自适应技术通常需要服务器根据网络状况[1],将原始码流转换成适应不同带宽条件的码率,客户端根据带宽选择对应码率的视频下载缓冲。因此,可以在编码过程中对视频进行码率控制。通常情况下,高的视频质量意味着高的视频编码复杂度[2],但是编码复杂度过高会造成成本浪费以及编码效率降低;在不稳定的环境中,编码器输出的码率变化比较大,容易导致视频的卡顿;在带宽受限时,必须对视频进行压缩。由此可知,在不同环境下,对编码器的需求各不相同,所以如何权衡视频编码质量、复杂度与编码效率至关重要。

在x264以及之前的码率控制算法中,R-Q(Rate-Quantization Model)模型得到了广泛的应用,在其它编码参数均固定的情况下[3],Q是决定码率的关键因素。码率自适应技术中比较常用的编码器为x264,其中的码率控制模型是为连续码流而设计的[4],未考虑视频被分成切片下载的情况,缺乏对切片层级视频的控制算法。实际上现有的码率控制算法主要是通过调整离散余弦变换的量化参数大小输出目标码率[5]。量化参数(Quantization Parameter,QP)反映了空间细节压缩状况[4],若QP减小,大部分的细节都会被保留,从而码率增大;若QP增大,细节则会丢失,导致码率降低,并且图像失真严重,视频质量下降[5],即QP和码率成反比关系。由此可知,视频编码的参数选择能明显影响到码率、编码速度以及视频质量。码率控制算法应当在切片层级实现恒定码率[6],即在视频播放过程中码率维持在稳定值,在切片内部实现可变码率,提高视频质量。除此之外,视频切片码率波动过大时,会造成带宽浪费,严重时会导致播放不流畅卡顿,直接影响用户观看体验和服务质量(QoS)[7]。

基于上述问题,本文提出一种基于x264的码率控制模型CVBV(ConstantVideo Buffering Verifier),在切片层级上进行编码控制,使得视频在传输过程中既能保证视频质量又能提高视频压缩率,满足带宽需求。

2 码率控制模型

x264编码器的码率控制主要有以下四种模式[8]:

平均比特率(Average Bit-Rate,ABR):该模式在指定的文件大小内产生几乎恒定的比特率。为了在下一帧未知的情况下能准确控制速率[9],设置平均比特率作为预定值来维持稳定性。但由于编码器不知道到达该比特率的具体时间,所以不能提供很好的视频质量。

两遍编码模式(2-Pass),即“两次”ABR,适用于非实时性编码。一定程度上提高了ABR的效率,第二遍编码是在第一遍编码的基础上再进行编码[11],确保在一定比特率的约束下输出最好的质量,但增加了编码时间,并且容易出现超出客户端接受范围的情况。

恒定比特率(Constant Bit-Rate,CBR):该模式主要关注于缓冲区控制[10],这样就不会发生下溢或上溢。在这种模式下,用于实现请求的是基于本地平均值的比特率的缩放因子,而不是所有过去的帧,所以此模式下浪费的带宽更多,并且视频质量无法确定。

恒定量化参数(Constant QuantizerParameter,CQP):该模式下改变量化参数而不控制码率[12],尽最大可能保证视频质量,却不考虑带宽利用率和码率波动,不能确定最终生成的文件大小。

2.1 CVBV模型

视频缓冲校验(Video Buffering Verifier,VBV),是构成视频编码标准的重要部分,通常与其它编码结合控制码流平滑程度,并且很适合用于流式传输和直播场景[19]。该模型可以防止视频在难以编码的部分(如快速运动的视频场景)期间超限[13]。在H.264系列标准中[7],该部分也称假想参考解码器(Hypothetical Reference Decoder,HRD),VBV假想传输信道的容量是受限的,解码设备在解码前有一个缓存,解码器实时从缓冲区取数据解码,并且VBV必须保证缓存区不会发生上溢和下溢。由于缓冲区的存在,使得视频的码率可以在一定范围波动。恒定码率因子(Constant Rate Factor,CRF),是最好的单次编码码率控制模型[16],通过降低复杂度和低速运动场景帧的质量减小文件大小,并且由于少一次编码,可以减少编码时间。本文的模型保留了原有的缓存区模型、宏区块树和自适应量化算法,流程图如图1所示。

图1 CVBV模型

1)首先,利用rate_estimate_qscale()计算当前帧的SATD值,并根据SATD值得出图像复杂度估计值(BlurCplx),而复杂度估计值由上一帧的累计复杂度(Cps)和加权累计帧数(Cpc)的比值得出,计算公式如式(1)、(2)所示

Cps[i+1]=0.5Cps[i]+SATD[i]

(1)

Cpc[i+1]=5Cpc[i]+1

(2)

2)其次,根据当前帧的模糊复杂度计算量化等级参数qsc,为了得到精准的QP对qsc进行两次修正,计算公式如式(3)、(4)所示。CRF模式下,设置qcom为0.6,basecp是经验常数取默认值,qp2qsc函数将QP变换为qsc。mbtreeoffset为mbtree的偏移量,用于Mb(宏区块树)级调整,提高压缩率,通过修改rfconst和mbtreeoffset的值,与帧压缩后的复杂度一起计算出下一帧的qsc。

qsc[i]=base_cp1-qcomp

(3)

(4)

3)经过两次修正后开启VBV模式,使用clip_qsc根据缓冲区状态调整qsc。根据qsc计算最终QP值,其中α,β,γ分别为12,6,0.85,计算公式如式(5)、(6)所示。

(5)

(6)

3 实验结果与分析

3.1 实验环境

本文所用电脑配置为Intel(R)4核3.90GHz处理器,内存为8GB。所有的测试视频都从MJPEG Tools流媒体库中下载,考虑到视频多样性,将视频分割成片段在多个实例上分配编码来减少编码时间,最大限度地提高编码效率。

3.2 实验设置

实验采用的视频均为原始视频,分别是big_buck_bunny_720p_stereo.avi(以下简称BBB)和Lecture01.avi(以下简称Lec01)。BBB分辨率为1280×720,BBB视频序列通过淡入和平滑的渐变开始,视频宏区块的变化小,不必花费较高的码率也可压缩出高质量的视频;Lec01分辨率为1920×1080,由人物和不间断的场景切换组成,需要更多的运动估计,受高低码率的影响也较大。两个视频对应的总视频帧数分别是14315帧和98780帧,两视频对应的帧率分别为24fps和29.97fps。实验将每个视频分片的大小分别设置为720帧和899帧,使得截取视频分片均为30秒。

本文选取的六个对比模型分别是2-Pass、2-Pass+VBV、ABR、ABR+VBV、CRF和CQP。对同一视频分别设置不同的码率和QP值,对比这几种模型与本文模型的实际码率、PSNR值、SSIM值变化和视频压缩率大小;对两种视频设置不同的码率、QP值和偏移量,比较本文模型在不同偏移量和不同复杂度视频下的实际码率、PSNR值、SSIM值和码率波动变化情况。由于在视频的实时播放过程获取率失真性能难度较大,故采用离线的方式,这样的做法不用在编码过程中实时获得,而是选择在编码完成后进行对比。本文共设置240组实验,所使用的参数如表1、表2所示。

表2 CVBV在不同偏移量(0,120,240)下的对比实验

3.3 评价指标

率失真用于衡量视频质量和编码码率[19],一般通过峰值信噪比及结构相似性进行评价。本文对所有编码之后的视频进行峰值信噪比及结构相似性的计算,分析其率失真性能。

峰值信噪比[18](Peak Signal to Noise Ratio,PSNR),使用基于人眼对误差敏感的一种评价图像的客观标准:

其中,MSE(Mean Square Error)表示当前图像和上一帧图像的均方误差。本文将不同码率控制模式下的切片视频先计算MSE(mse_avg,mse_y,mse_u, mse_v),再计算PSNR(psnr_avg,psnr_y,psnr_u,psnr_v),其中H、W分别为图像的高度和宽度,n为图像的总比特数,计算公式如式(7)、(8)所示。

(7)

(8)

结构相似性(Structural Similarity,SSIM),一种全参考偏向主观的图像质量评价指标,可以评估图像间相似度,包含亮度、对比度、结构比较三方面。

1)首先,计算当前帧和下一帧图像的平均灰度μx/μy,用来做亮度测量的估计;

(9)

(10)

(11)

3)最后将三个函数分配权重(本文都取1),得出SSIM的计算公式如式(12)所示。

SSIM(x,y)=l(x,y)α·c(x,y)β·s(x,y)γ

(12)

3.4 结果分析

通过表1和表2可知,实际码率与设定的码率通常有一定的差距。控制QP值时,QP越高目标码率越低,但在视频缓冲校验模型的作用下,所有视频压缩率都有一定的降低,平均降低约0.47%。并且本文提出模型的最高压缩率达到了98.72%,提高了约9.23%,有效节省了存储空间。

在视频编码时如何选择合适(使其效率达到最高)的码率,往往不容易确定。因此,本文为了找出CVBV模型在不同偏移量下的最低码率,进行表2的实验。实验结果表明偏移量取0,QP值取23,码率取1500kb时PSNR值最高,视频失真率最低。并且随着偏移量的增加,在码率较低时才能达到较好的效果。偏移量增加到240时,图像劣化已经非常严重,只有提升QP值,才能降低率失真。

6种编码方式中,通过观察码率波动曲线的平滑程度,可以看出在编码过程中码率的持续变化情况。除了CQP和CRF表现出较大的波动,其它方式均较为平缓,可以很容易看出加上视频缓冲校验模型之后,CRF码率在原有基础上降低并且波动更少,如图2所示。

为了评价本文模型对视频质量的影响,表3给出几种编码模式下切片视频的平均PSNR值。从下表可以看出,CVBV模型与x264本身的模型相比PSNR值提升0.03dB,最大可以达到47.91dB,说明本文提出的模型可在一定程度上降低失真。

表3 PSNR对比

为了防止PSNR计算得出的结果带有一定的局限性,人眼观察事物会受到亮度、对比度、视频中图像的结构影响,对该模型的SSIM进行评估:由表4可以看出,CVBV模型与x264本身的模型相比,SSIM值平均提升0.011,最大可达到0.993,说明改进模型编码的视频与原视频相似度更高,从主观上来讲更能满足人的视觉感知。

表4 SSIM对比

4 结束语

合理有效的码率控制是视频编码器实现自适应编码的重要组成部分,在保证视频质量的同时提高信道的利用率,才能满足用户需求。本文提出CVBV模型,调整量化参数、目标码率和偏移量,使编码效率达到最优。对x264中几种码率控制模型进行了分析对比,实验结果显示,视频质量和视频压缩率在一定程度上有所提升,在保证视频质量的同时可以节省带宽,更适合于低带宽的直播场景。

猜你喜欢

比特率码率偏移量
基于格网坐标转换法的矢量数据脱密方法研究
基于状态机的视频码率自适应算法
搅拌针不同偏移量对6082-T6铝合金接头劳性能的影响
基于最小二乘平差的全极化SAR配准偏移量估计方法
基于多个网络接口的DASH系统设计与实现
相同比特率的MPEG视频双压缩检测*
基于场景突变的码率控制算法
X264多线程下码率控制算法的优化
多光谱图像压缩的联合码率分配—码率控制方法
基于能量分配提高纠错码误比特率性能的研究