楊 華,趙香華
(沈陽航空航天大學(xué)計(jì)算機(jī)學(xué)院,遼寧 沈陽 110136)
隨著流媒體技術(shù)的發(fā)展,智能終端設(shè)備和移動(dòng)通信網(wǎng)絡(luò)大面積普及,在線直播憑借其較好的互動(dòng)性和實(shí)時(shí)性,成為互聯(lián)網(wǎng)傳播內(nèi)容的主要方式之一。為了在直播過程中帶給用戶更好的體驗(yàn),動(dòng)態(tài)碼率自適應(yīng)技術(shù)普遍應(yīng)用于視頻直播中。碼率自適應(yīng)技術(shù)通常需要服務(wù)器根據(jù)網(wǎng)絡(luò)狀況[1],將原始碼流轉(zhuǎn)換成適應(yīng)不同帶寬條件的碼率,客戶端根據(jù)帶寬選擇對(duì)應(yīng)碼率的視頻下載緩沖。因此,可以在編碼過程中對(duì)視頻進(jìn)行碼率控制。通常情況下,高的視頻質(zhì)量意味著高的視頻編碼復(fù)雜度[2],但是編碼復(fù)雜度過高會(huì)造成成本浪費(fèi)以及編碼效率降低;在不穩(wěn)定的環(huán)境中,編碼器輸出的碼率變化比較大,容易導(dǎo)致視頻的卡頓;在帶寬受限時(shí),必須對(duì)視頻進(jìn)行壓縮。由此可知,在不同環(huán)境下,對(duì)編碼器的需求各不相同,所以如何權(quán)衡視頻編碼質(zhì)量、復(fù)雜度與編碼效率至關(guān)重要。
在x264以及之前的碼率控制算法中,R-Q(Rate-Quantization Model)模型得到了廣泛的應(yīng)用,在其它編碼參數(shù)均固定的情況下[3],Q是決定碼率的關(guān)鍵因素。碼率自適應(yīng)技術(shù)中比較常用的編碼器為x264,其中的碼率控制模型是為連續(xù)碼流而設(shè)計(jì)的[4],未考慮視頻被分成切片下載的情況,缺乏對(duì)切片層級(jí)視頻的控制算法。實(shí)際上現(xiàn)有的碼率控制算法主要是通過調(diào)整離散余弦變換的量化參數(shù)大小輸出目標(biāo)碼率[5]。量化參數(shù)(Quantization Parameter,QP)反映了空間細(xì)節(jié)壓縮狀況[4],若QP減小,大部分的細(xì)節(jié)都會(huì)被保留,從而碼率增大;若QP增大,細(xì)節(jié)則會(huì)丟失,導(dǎo)致碼率降低,并且圖像失真嚴(yán)重,視頻質(zhì)量下降[5],即QP和碼率成反比關(guān)系。由此可知,視頻編碼的參數(shù)選擇能明顯影響到碼率、編碼速度以及視頻質(zhì)量。碼率控制算法應(yīng)當(dāng)在切片層級(jí)實(shí)現(xiàn)恒定碼率[6],即在視頻播放過程中碼率維持在穩(wěn)定值,在切片內(nèi)部實(shí)現(xiàn)可變碼率,提高視頻質(zhì)量。除此之外,視頻切片碼率波動(dòng)過大時(shí),會(huì)造成帶寬浪費(fèi),嚴(yán)重時(shí)會(huì)導(dǎo)致播放不流暢卡頓,直接影響用戶觀看體驗(yàn)和服務(wù)質(zhì)量(QoS)[7]。
基于上述問題,本文提出一種基于x264的碼率控制模型CVBV(ConstantVideo Buffering Verifier),在切片層級(jí)上進(jìn)行編碼控制,使得視頻在傳輸過程中既能保證視頻質(zhì)量又能提高視頻壓縮率,滿足帶寬需求。
x264編碼器的碼率控制主要有以下四種模式[8]:
平均比特率(Average Bit-Rate,ABR):該模式在指定的文件大小內(nèi)產(chǎn)生幾乎恒定的比特率。為了在下一幀未知的情況下能準(zhǔn)確控制速率[9],設(shè)置平均比特率作為預(yù)定值來維持穩(wěn)定性。但由于編碼器不知道到達(dá)該比特率的具體時(shí)間,所以不能提供很好的視頻質(zhì)量。
兩遍編碼模式(2-Pass),即“兩次”ABR,適用于非實(shí)時(shí)性編碼。一定程度上提高了ABR的效率,第二遍編碼是在第一遍編碼的基礎(chǔ)上再進(jìn)行編碼[11],確保在一定比特率的約束下輸出最好的質(zhì)量,但增加了編碼時(shí)間,并且容易出現(xiàn)超出客戶端接受范圍的情況。
恒定比特率(Constant Bit-Rate,CBR):該模式主要關(guān)注于緩沖區(qū)控制[10],這樣就不會(huì)發(fā)生下溢或上溢。在這種模式下,用于實(shí)現(xiàn)請(qǐng)求的是基于本地平均值的比特率的縮放因子,而不是所有過去的幀,所以此模式下浪費(fèi)的帶寬更多,并且視頻質(zhì)量無法確定。
恒定量化參數(shù)(Constant QuantizerParameter,CQP):該模式下改變量化參數(shù)而不控制碼率[12],盡最大可能保證視頻質(zhì)量,卻不考慮帶寬利用率和碼率波動(dòng),不能確定最終生成的文件大小。
視頻緩沖校驗(yàn)(Video Buffering Verifier,VBV),是構(gòu)成視頻編碼標(biāo)準(zhǔn)的重要部分,通常與其它編碼結(jié)合控制碼流平滑程度,并且很適合用于流式傳輸和直播場(chǎng)景[19]。該模型可以防止視頻在難以編碼的部分(如快速運(yùn)動(dòng)的視頻場(chǎng)景)期間超限[13]。在H.264系列標(biāo)準(zhǔn)中[7],該部分也稱假想?yún)⒖冀獯a器(Hypothetical Reference Decoder,HRD),VBV假想傳輸信道的容量是受限的,解碼設(shè)備在解碼前有一個(gè)緩存,解碼器實(shí)時(shí)從緩沖區(qū)取數(shù)據(jù)解碼,并且VBV必須保證緩存區(qū)不會(huì)發(fā)生上溢和下溢。由于緩沖區(qū)的存在,使得視頻的碼率可以在一定范圍波動(dòng)。恒定碼率因子(Constant Rate Factor,CRF),是最好的單次編碼碼率控制模型[16],通過降低復(fù)雜度和低速運(yùn)動(dòng)場(chǎng)景幀的質(zhì)量減小文件大小,并且由于少一次編碼,可以減少編碼時(shí)間。本文的模型保留了原有的緩存區(qū)模型、宏區(qū)塊樹和自適應(yīng)量化算法,流程圖如圖1所示。
圖1 CVBV模型
1)首先,利用rate_estimate_qscale()計(jì)算當(dāng)前幀的SATD值,并根據(jù)SATD值得出圖像復(fù)雜度估計(jì)值(BlurCplx),而復(fù)雜度估計(jì)值由上一幀的累計(jì)復(fù)雜度(Cps)和加權(quán)累計(jì)幀數(shù)(Cpc)的比值得出,計(jì)算公式如式(1)、(2)所示
Cps[i+1]=0.5Cps[i]+SATD[i]
(1)
Cpc[i+1]=5Cpc[i]+1
(2)
2)其次,根據(jù)當(dāng)前幀的模糊復(fù)雜度計(jì)算量化等級(jí)參數(shù)qsc,為了得到精準(zhǔn)的QP對(duì)qsc進(jìn)行兩次修正,計(jì)算公式如式(3)、(4)所示。CRF模式下,設(shè)置qcom為0.6,basecp是經(jīng)驗(yàn)常數(shù)取默認(rèn)值,qp2qsc函數(shù)將QP變換為qsc。mbtreeoffset為mbtree的偏移量,用于Mb(宏區(qū)塊樹)級(jí)調(diào)整,提高壓縮率,通過修改rfconst和mbtreeoffset的值,與幀壓縮后的復(fù)雜度一起計(jì)算出下一幀的qsc。
qsc[i]=base_cp1-qcomp
(3)
(4)
3)經(jīng)過兩次修正后開啟VBV模式,使用clip_qsc根據(jù)緩沖區(qū)狀態(tài)調(diào)整qsc。根據(jù)qsc計(jì)算最終QP值,其中α,β,γ分別為12,6,0.85,計(jì)算公式如式(5)、(6)所示。
(5)
(6)
本文所用電腦配置為Intel(R)4核3.90GHz處理器,內(nèi)存為8GB。所有的測(cè)試視頻都從MJPEG Tools流媒體庫(kù)中下載,考慮到視頻多樣性,將視頻分割成片段在多個(gè)實(shí)例上分配編碼來減少編碼時(shí)間,最大限度地提高編碼效率。
實(shí)驗(yàn)采用的視頻均為原始視頻,分別是big_buck_bunny_720p_stereo.avi(以下簡(jiǎn)稱BBB)和Lecture01.avi(以下簡(jiǎn)稱Lec01)。BBB分辨率為1280×720,BBB視頻序列通過淡入和平滑的漸變開始,視頻宏區(qū)塊的變化小,不必花費(fèi)較高的碼率也可壓縮出高質(zhì)量的視頻;Lec01分辨率為1920×1080,由人物和不間斷的場(chǎng)景切換組成,需要更多的運(yùn)動(dòng)估計(jì),受高低碼率的影響也較大。兩個(gè)視頻對(duì)應(yīng)的總視頻幀數(shù)分別是14315幀和98780幀,兩視頻對(duì)應(yīng)的幀率分別為24fps和29.97fps。實(shí)驗(yàn)將每個(gè)視頻分片的大小分別設(shè)置為720幀和899幀,使得截取視頻分片均為30秒。
本文選取的六個(gè)對(duì)比模型分別是2-Pass、2-Pass+VBV、ABR、ABR+VBV、CRF和CQP。對(duì)同一視頻分別設(shè)置不同的碼率和QP值,對(duì)比這幾種模型與本文模型的實(shí)際碼率、PSNR值、SSIM值變化和視頻壓縮率大小;對(duì)兩種視頻設(shè)置不同的碼率、QP值和偏移量,比較本文模型在不同偏移量和不同復(fù)雜度視頻下的實(shí)際碼率、PSNR值、SSIM值和碼率波動(dòng)變化情況。由于在視頻的實(shí)時(shí)播放過程獲取率失真性能難度較大,故采用離線的方式,這樣的做法不用在編碼過程中實(shí)時(shí)獲得,而是選擇在編碼完成后進(jìn)行對(duì)比。本文共設(shè)置240組實(shí)驗(yàn),所使用的參數(shù)如表1、表2所示。
表2 CVBV在不同偏移量(0,120,240)下的對(duì)比實(shí)驗(yàn)
率失真用于衡量視頻質(zhì)量和編碼碼率[19],一般通過峰值信噪比及結(jié)構(gòu)相似性進(jìn)行評(píng)價(jià)。本文對(duì)所有編碼之后的視頻進(jìn)行峰值信噪比及結(jié)構(gòu)相似性的計(jì)算,分析其率失真性能。
峰值信噪比[18](Peak Signal to Noise Ratio,PSNR),使用基于人眼對(duì)誤差敏感的一種評(píng)價(jià)圖像的客觀標(biāo)準(zhǔn):
其中,MSE(Mean Square Error)表示當(dāng)前圖像和上一幀圖像的均方誤差。本文將不同碼率控制模式下的切片視頻先計(jì)算MSE(mse_avg,mse_y,mse_u, mse_v),再計(jì)算PSNR(psnr_avg,psnr_y,psnr_u,psnr_v),其中H、W分別為圖像的高度和寬度,n為圖像的總比特?cái)?shù),計(jì)算公式如式(7)、(8)所示。
(7)
(8)
結(jié)構(gòu)相似性(Structural Similarity,SSIM),一種全參考偏向主觀的圖像質(zhì)量評(píng)價(jià)指標(biāo),可以評(píng)估圖像間相似度,包含亮度、對(duì)比度、結(jié)構(gòu)比較三方面。
1)首先,計(jì)算當(dāng)前幀和下一幀圖像的平均灰度μx/μy,用來做亮度測(cè)量的估計(jì);
(9)
(10)
(11)
3)最后將三個(gè)函數(shù)分配權(quán)重(本文都取1),得出SSIM的計(jì)算公式如式(12)所示。
SSIM(x,y)=l(x,y)α·c(x,y)β·s(x,y)γ
(12)
通過表1和表2可知,實(shí)際碼率與設(shè)定的碼率通常有一定的差距。控制QP值時(shí),QP越高目標(biāo)碼率越低,但在視頻緩沖校驗(yàn)?zāi)P偷淖饔孟?所有視頻壓縮率都有一定的降低,平均降低約0.47%。并且本文提出模型的最高壓縮率達(dá)到了98.72%,提高了約9.23%,有效節(jié)省了存儲(chǔ)空間。
在視頻編碼時(shí)如何選擇合適(使其效率達(dá)到最高)的碼率,往往不容易確定。因此,本文為了找出CVBV模型在不同偏移量下的最低碼率,進(jìn)行表2的實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明偏移量取0,QP值取23,碼率取1500kb時(shí)PSNR值最高,視頻失真率最低。并且隨著偏移量的增加,在碼率較低時(shí)才能達(dá)到較好的效果。偏移量增加到240時(shí),圖像劣化已經(jīng)非常嚴(yán)重,只有提升QP值,才能降低率失真。
6種編碼方式中,通過觀察碼率波動(dòng)曲線的平滑程度,可以看出在編碼過程中碼率的持續(xù)變化情況。除了CQP和CRF表現(xiàn)出較大的波動(dòng),其它方式均較為平緩,可以很容易看出加上視頻緩沖校驗(yàn)?zāi)P椭?CRF碼率在原有基礎(chǔ)上降低并且波動(dòng)更少,如圖2所示。
為了評(píng)價(jià)本文模型對(duì)視頻質(zhì)量的影響,表3給出幾種編碼模式下切片視頻的平均PSNR值。從下表可以看出,CVBV模型與x264本身的模型相比PSNR值提升0.03dB,最大可以達(dá)到47.91dB,說明本文提出的模型可在一定程度上降低失真。
表3 PSNR對(duì)比
為了防止PSNR計(jì)算得出的結(jié)果帶有一定的局限性,人眼觀察事物會(huì)受到亮度、對(duì)比度、視頻中圖像的結(jié)構(gòu)影響,對(duì)該模型的SSIM進(jìn)行評(píng)估:由表4可以看出,CVBV模型與x264本身的模型相比,SSIM值平均提升0.011,最大可達(dá)到0.993,說明改進(jìn)模型編碼的視頻與原視頻相似度更高,從主觀上來講更能滿足人的視覺感知。
表4 SSIM對(duì)比
合理有效的碼率控制是視頻編碼器實(shí)現(xiàn)自適應(yīng)編碼的重要組成部分,在保證視頻質(zhì)量的同時(shí)提高信道的利用率,才能滿足用戶需求。本文提出CVBV模型,調(diào)整量化參數(shù)、目標(biāo)碼率和偏移量,使編碼效率達(dá)到最優(yōu)。對(duì)x264中幾種碼率控制模型進(jìn)行了分析對(duì)比,實(shí)驗(yàn)結(jié)果顯示,視頻質(zhì)量和視頻壓縮率在一定程度上有所提升,在保證視頻質(zhì)量的同時(shí)可以節(jié)省帶寬,更適合于低帶寬的直播場(chǎng)景。