?

基于x264編碼的碼率控制模型優化方法

2023-09-20 10:36趙香華
計算機仿真 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可知,實際碼率與設定的碼率通常有一定的差距??刂芉P值時,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多線程下碼率控制算法的優化
多光譜圖像壓縮的聯合碼率分配—碼率控制方法
基于能量分配提高糾錯碼誤比特率性能的研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合