孫 鵬,丁國梁,劉海濤,吳 濤,凌 洋,王 健
(中國移動通信集團(tuán)設(shè)計(jì)院有限公司 江蘇分公司,江蘇 南京 210029)
用戶體驗(yàn)質(zhì)量(Quality of Experience,QoE)是從用戶角度來對一個(gè)服務(wù)感知體驗(yàn)的評判。QoE的定義和影響因素在不同的文獻(xiàn)中被展開諸多討論,目前仍未達(dá)成一致的研究共識。其中QoE在ITU的定義為終端用戶對應(yīng)用或者服務(wù)整體的主觀可接受程度[1]。綜合文獻(xiàn)中對QoE的定義描述,本文將QoE定義為終端的用戶在實(shí)際環(huán)境下與服務(wù)交互的過程中產(chǎn)生的對流媒體服務(wù)的主觀感受與認(rèn)可程度的評判。流媒體服務(wù)的QoE包含了用戶在一定客觀環(huán)境下使用流媒體服務(wù)過程中的身心體驗(yàn)、與服務(wù)交互時(shí)產(chǎn)生的主觀感受以及服務(wù)結(jié)束后對服務(wù)的認(rèn)可程度,因此QoE貫穿了流媒體服務(wù)的整個(gè)生命周期。
QoE的評價(jià)量化方案分為主觀評測和客觀評測,常規(guī)QoE主觀評價(jià)是隨機(jī)選擇一批事先不知情人員,將其暴露于特定環(huán)境可控的氛圍中,采用規(guī)定的時(shí)間讓其觀看一系列連續(xù)的測試序列,通過不同方法來計(jì)算收集他們對觀看的視頻的評分,即平均意見分(Mean Opinion Score,MOS),并對所得數(shù)據(jù)進(jìn)行分析。
而文中將QoE客觀評價(jià)方案歸并為網(wǎng)絡(luò)QoS參數(shù)的獲取評判以及基于視頻內(nèi)容本身的相似度對比或質(zhì)量評判。有效獲取流媒體服務(wù)中的客觀參數(shù)是能否準(zhǔn)確量化QoE的關(guān)鍵因素。將針對視頻碼率調(diào)節(jié)中產(chǎn)生的客觀參數(shù)提出一套QoE的映射關(guān)系。
視頻碼率調(diào)整(Rate Adaptation,RA)是一種為了最大化用戶QoE來進(jìn)行視頻塊碼率分配的策略。一般來說,最高的視頻質(zhì)量(泛指視頻碼率),最少的視頻播放中斷(重載)和最平滑的碼率變化可帶來最好的觀感體驗(yàn)。
基于網(wǎng)絡(luò)容量的方法和基于緩沖區(qū)的方法是現(xiàn)有碼率的主流調(diào)節(jié)方法。前者基于預(yù)估計(jì)的網(wǎng)絡(luò)容量來調(diào)整視頻碼率,這導(dǎo)致調(diào)節(jié)很難準(zhǔn)確。過高估計(jì)和過低估計(jì)可用網(wǎng)絡(luò)容量將分別導(dǎo)致不必要的重載和偏低的視頻質(zhì)量?;诰彌_區(qū)的策略則盡可能地利用緩沖區(qū)占用率來引導(dǎo)碼率調(diào)節(jié)過程。如果緩沖區(qū)接近其最大容量大小,則采取更積極的策略來獲取更高質(zhì)量的視頻塊,反之就更保守地選擇下一塊的視頻碼率。在文獻(xiàn)[2]中,雖然視頻碼率自適應(yīng)基于網(wǎng)絡(luò)容量估計(jì),但其實(shí)該模型將客戶端的緩存容量級別作為反饋。在文獻(xiàn)[3]中,設(shè)計(jì)兩種不同的獨(dú)立操作步驟,當(dāng)緩沖區(qū)剛建立并開始增長時(shí),可用網(wǎng)絡(luò)容量的編碼信息不充分,碼率調(diào)節(jié)依賴于網(wǎng)絡(luò)估計(jì),并且當(dāng)緩沖區(qū)已經(jīng)建立時(shí),碼率調(diào)節(jié)僅基于播放緩存區(qū)(BBA)。在文獻(xiàn)[4]中,通過使用Lyapunov優(yōu)化技術(shù)改進(jìn)BBA。在文獻(xiàn)[5]中,HAS動態(tài)緩存驅(qū)動碼率調(diào)節(jié)是依靠客戶端和基站側(cè)的協(xié)作來執(zhí)行的。在文獻(xiàn)[6]中,研究了聯(lián)合用戶關(guān)聯(lián)和碼率調(diào)節(jié)的問題,以在滿足用戶QoE要求的同時(shí)最大化系統(tǒng)效用?,F(xiàn)有的DASH方法使所選擇的目標(biāo)處于平等的基礎(chǔ)而不考慮在視頻播放期間時(shí)變用戶QoE焦點(diǎn)的變化。
基于這樣的一個(gè)觀點(diǎn),在視頻播放過程中,不同階段的關(guān)鍵QoE感知因素不相同。盡量最大化視頻質(zhì)量,在視頻啟動階段的關(guān)鍵QoE感知因素是啟動延遲,而碼率變化和重載決定了后續(xù)播放階段的QoE。利用這些特點(diǎn),可以通過目標(biāo)改善用戶實(shí)時(shí)體驗(yàn)的退化,簡化用戶的服務(wù)質(zhì)量優(yōu)化。
本文首先分別定義視頻播放過程中的啟動階段和回放階段,然后分析影響用戶QoE的關(guān)鍵因素,并提出每個(gè)階段的視頻碼率自適應(yīng)方法。
根據(jù)客戶端緩沖區(qū)的占用率將視頻觀看過程分為兩個(gè)階段:啟動階段和回放階段。客戶端緩沖區(qū)大小通過下載的視頻塊的時(shí)間長度(以秒為單位)來度量,標(biāo)定播放器的總緩沖區(qū)大小為240 s。當(dāng)長度Ts= 4s的單個(gè)視頻塊在被下載好后,可以被添加到視頻緩存區(qū)去。每秒從緩沖區(qū)中移除1 s的視頻內(nèi)容并播放給用戶。播放器在從緩沖區(qū)播放4 s視頻塊時(shí)探測緩沖區(qū),保證緩沖區(qū)占用量必須是4 s的倍數(shù)。將緩沖區(qū)占用80 s內(nèi)的部分對應(yīng)于視頻播放的啟動階段。當(dāng)緩沖區(qū)占用率超過80 s時(shí),則判斷為進(jìn)入視頻播放的播放階段。影響用戶在視頻播放兩個(gè)階段體驗(yàn)的關(guān)鍵因素不同,在啟動階段,用戶對啟動延遲更敏感,而在播放過程中,不好的視頻質(zhì)量和頻繁的重載很難被接受。因此,使用不同的自適應(yīng)方法來選擇適當(dāng)?shù)囊曨l塊碼率,從而改善用戶的QoE。
在啟動播放的階段,啟動延遲對QoE的影響大于視頻碼率高低和碼率波動帶來的影響,因?yàn)橛脩魧σ曨l打開即刻播放的要求迫切。因此面向QoE的視頻碼率自適應(yīng)需要確保啟動延遲盡可能小,并且該策略基于網(wǎng)絡(luò)帶寬估計(jì)。為了最小化啟動延遲,一旦用戶按下視頻的播放按鈕,就為前3個(gè)連續(xù)時(shí)間的視頻塊選擇最低級別的視頻碼率R1,這保證了給定網(wǎng)絡(luò)帶寬下的最短啟動延遲。實(shí)際流媒體播放過程中開頭大多數(shù)是廣告以及背景信息,其視頻質(zhì)量對用戶QoE幾乎沒有影響,因此為這些內(nèi)容選擇較低的視頻碼率是可行的。
然后,在緩存區(qū)占用達(dá)到80 s之前,視頻碼率調(diào)節(jié)必須考慮視頻碼率和重載之間的權(quán)衡,盡量最小化視頻碼率調(diào)節(jié)的頻率。在視頻服務(wù)剛開始的階段,緩沖區(qū)占用率仍處于較低水平,其編碼的可用容量信息不足,不適合作為碼率調(diào)節(jié)的參照。啟動階段的核心碼率適配策略基于容量估計(jì)。啟動階段,當(dāng)下載最后一個(gè)視頻塊并將其推入緩沖區(qū)時(shí),將整個(gè)階段的平均下載速率Rd作為網(wǎng)絡(luò)容量的估計(jì)值,并將當(dāng)前視頻塊的碼率記錄為Rc。下一個(gè)視頻塊Rnext的視頻碼率由當(dāng)前視頻塊Rd和Rc之間的關(guān)系確定。
(1)Rd>Rc:這表明了可選擇更高級別的碼率,因?yàn)樵谠摋l件下緩存占有率變大。其中將視頻碼率R看做一系列離散值,R={R1,R2,...,Rn}。碼率自適應(yīng)調(diào)節(jié)策略意在從R中為下一個(gè)視頻塊選擇一個(gè)合適的值。假設(shè)以高一階的視頻碼率Rc+1獲取下一個(gè)視頻塊,那么在與最新的一個(gè)視頻段相同的網(wǎng)絡(luò)條件下所需的下載時(shí)間是:
一個(gè)新視頻塊被下載的同時(shí),緩沖區(qū)中的視頻內(nèi)容將以秒為單位向外播放。預(yù)防緩沖區(qū)耗盡的方法,需要確保下載新視頻塊的時(shí)間比占用緩沖區(qū)的時(shí)間短。定義BO(t)為下載新視頻塊之前的緩沖區(qū)剩余占有量。若Tthr≥BO(t),則繼續(xù)保留Rc作為下一個(gè)視頻塊的碼率;若Tthr<BO(t),進(jìn)行類似于有限狀態(tài)機(jī)的碼率轉(zhuǎn)換[7]。
在BDRM中,最小視頻碼率R1被用來預(yù)測最壞情況下的網(wǎng)絡(luò)容量,并且當(dāng)下一個(gè)視頻塊的計(jì)算下載時(shí)間小于緩沖器占用量時(shí),視頻碼率立即增加[8]。相反,采用一個(gè)更積極的預(yù)測指標(biāo)Rd來估計(jì)網(wǎng)絡(luò)容量,當(dāng)計(jì)算出的下一個(gè)塊的下載時(shí)間小于緩沖器大小時(shí),視頻碼率的增加更為謹(jǐn)慎。檢測到最后3個(gè)下載的視頻塊的碼率,如果它們共享相同的視頻碼率Rc,那么當(dāng)Tthr<BO(t)再次發(fā)生時(shí)下一個(gè)視頻塊的碼率將調(diào)整為Rc+1;在其他情況下,仍然選擇與前一個(gè)塊相同的視頻碼率Rc。也就是說,只有當(dāng)最后3個(gè)塊共享相同的視頻碼率時(shí),視頻碼率才會根據(jù)指標(biāo)Rd提示增加而調(diào)整增加。表1提供了2-S和BDRM之間的碼率調(diào)節(jié)比較。與BDRM相比,2-S更細(xì)致地增加視頻碼率,體現(xiàn)在以下兩個(gè)方面。
一是由于前3個(gè)視頻塊使用最小碼率R1,所以在一開始就可以很容易地滿足Rd>Rc和Tthr<BO(t)的條件,隨后視頻碼率就會被提升;
二是由于視頻碼率只有在連續(xù)3個(gè)視頻塊碼率都是Rc后才能提高到Rc+1,因此可以降低碼率變化的頻率,補(bǔ)償對網(wǎng)絡(luò)容量的過度估計(jì)。
(2)Rd≤Rc:在這種情況下將降低或保持視頻碼率。為了避免重載事件,應(yīng)滿足以下公式:
對于可以滿足式(2)的最大視頻碼率Ri,若Ri<Rc,將R′設(shè)置為Ri,否則設(shè)R′為Rc;與情景(1)中增加部分不同,視頻碼率的降低將在下一個(gè)塊中立即執(zhí)行,且可以一次將視頻碼率降低幾個(gè)級別,如表1所示,2-S 在t 355時(shí)刻立即將視頻速率從R27降至R8。由于啟動階段的緩沖區(qū)占用時(shí)間不足以抵消低下載速率與高視頻碼率之間的不匹配,因此立即降低視頻碼率有助于避免重載。
表1 比較 2-S和 BDRM之間的碼率調(diào)節(jié)
當(dāng)最開始的3個(gè)視頻塊以最低級別的碼率(R1)被下載后開始實(shí)行算法1,即啟動階段的2-S算法。在網(wǎng)絡(luò)容量估計(jì)的基礎(chǔ)上,當(dāng)網(wǎng)絡(luò)條件良好時(shí),視頻速率從最小值R1逐步提高,當(dāng)網(wǎng)絡(luò)條件很差,視頻碼率立即降低。這一階段的主要目標(biāo)是將啟動延遲保持在最小值,并在填充緩存器時(shí)降低重載發(fā)生的可能性。本文提出的2-S與BDRM相比,通過加入有窮狀態(tài)自動機(jī)來控制所選視頻碼率的變化性,這有利于降低因?yàn)橐曨l質(zhì)量波動導(dǎo)致的不悅觀感[8]。
當(dāng)儲存器被填滿,即緩沖器占用率延伸到80 s時(shí),添加到緩沖器最后一塊的視頻碼率是隨機(jī)的,并且其分布與啟動階段期間的網(wǎng)絡(luò)狀況密切相關(guān)。該視頻碼率值提供用于播放階段以下的基于緩沖器的速率適配策略的網(wǎng)絡(luò)容量先驗(yàn)信息。
算法1啟動階段的碼率調(diào)節(jié)1:If BO(t) < 0 then 2:Rnext(t) = Rmin 3:end if 4:if BO(t - 1) >= 0 &&BO(t - 1) < 80 then 5:Rd = C(t - 1) // 將其平均下載速率Rd作為網(wǎng)絡(luò)容量的估計(jì)值6:Rc = Rnext(t - 1)7:if Rd >Rc then //對應(yīng)階段(1)8: R’ = min(Rc+1, Rmax)9: Tthr = (R’ * Ts) / Rd 10: if Tthr < BO(t) && Rnext(t - 3) = = Rnext(t - 2) = = Rc // 判斷是否需要提升碼率11: then 12: Rnext(t) = R’13: else 14: Rnext(t) = Rc 15: end if 16: else 17: fine max R’ in R that satisfies (R’ * Ts) / Rd < BO(t - 1)18: if R’ < Rc then 19: Rnext(t) = R’20: else 21: Rnext(t) = Rc 22: end if 23: end if 24: end if
在回放階段期間,儲存器被填滿,即緩沖器占用率大于80 s。假設(shè)緩沖器占用足以抵抗網(wǎng)絡(luò)容量的波動,并且可以采取更積極的策略來基于緩沖器以提升視頻碼率[9]。當(dāng)緩沖區(qū)達(dá)到80 s時(shí),將最后一個(gè)塊的視頻碼率表示為Rbase,然后Rbase∈R是一個(gè)不確定的值,它受啟動階段的網(wǎng)絡(luò)條件的影響。算法2為正常播放階段的碼率調(diào)節(jié)。
本節(jié)的視頻碼率自適應(yīng)方案實(shí)際上給出了所選碼率R和緩沖器占用率BO(t)之間的映射關(guān)系。如圖1所示,由于碼率自適應(yīng)基于網(wǎng)絡(luò)估計(jì),因此在啟動階段R和BO(t)之間沒有確定的關(guān)系。在播放階段,BO(t)的范圍為80~240 s,R與BO(t)成直線關(guān)系,直到BO(t)= 216 s,之后最大視頻碼率Rn用于獲取下一個(gè)塊。應(yīng)當(dāng)注意,當(dāng)80 s≤BO(t)≤216 s時(shí),所確定的具有端點(diǎn)(80 s,Rbase)和(216 s,Rn)的區(qū)間以及構(gòu)成R和BO(t)的映射關(guān)系。由于R是一系列離散值,只要碼率映射圖建議的碼率不超過下一個(gè)更高(Rc+1)或更低(Rc-1)的離散視頻碼率,R就保持在Rc,否則R被切換提升或者降低到碼率映射圖所建議的新離散值[10]。當(dāng)緩沖區(qū)已滿時(shí),即BO(t)接近240 s時(shí),將暫停下載并等待從緩沖區(qū)中消耗3個(gè)視頻塊,然后繼續(xù)使用新的2-S指令。
圖1 在2-S中碼率映射圖
算法2 正常播放階段的碼率調(diào)節(jié)if BO(t-1) >= 80 && BO(t-1)<216 Rnext(t) = map(BO(t-1))End if if BO(t-1) >= 216 && BO(t-1)<236 Rnext(t) = Rn End if if BO(t-1) >= 236 Rnext(t) = 0 End if
播放階段的碼率調(diào)整策略根據(jù)緩沖區(qū)占用率選擇合適的視頻碼率。它可以在一定程度上避免頻繁的碼率變化。在實(shí)際中只要維持Rd∈(0.5Rc,1.5Rc),即平均網(wǎng)絡(luò)下載速率Rd的估計(jì)值在給定范圍內(nèi)波動,就不需要調(diào)整視頻碼率。算法3中提供了2-S策略的總體框架。與BBA-0相比,本章中的R-BO(t)映射關(guān)系隨著在前一階段確定的端點(diǎn)值Rbase而變化。在啟動階段,還采用基于網(wǎng)絡(luò)條件的適當(dāng)碼率增加,而不是將視頻碼率固定在R1。提出的2-S策略更有利于在回放階段匹配視頻速率和網(wǎng)絡(luò)容量,并提高網(wǎng)絡(luò)效率。
算法3兩階段的碼率調(diào)節(jié)框架輸入: C: 模擬的網(wǎng)絡(luò)下載速率;R:視頻碼率集合;K: 總刻度時(shí)間;map: 播放階段的映射關(guān)系;f: 提出的QoE 預(yù)測模型;輸出: Rnext(t): 下一個(gè)視頻塊的碼率; BO(t): 緩存器大小;QoE: 實(shí)時(shí) QoE 分值;1: initialize BO(t)2: initialize t = 1 3: if t < = K 4: if BO(t) < = 80 then 5: do Algorithm 1 6: else 7: do Algorithm 2 8: end if 9: update BO(t):10: if BO(t - 1) < 236 then 11: BO(t) = BO(t - 1) + Ts - Rnext(t) * Ts / C(t)12: else 13:BO(t) = BO(t - 1) - Ts 14: end if 15:分別計(jì)算出重載和碼率變化的次數(shù) rb_t,rw_t 16: 生成元組 T = { Rnext(t), rb_t, rw_t }17: 計(jì)算實(shí)時(shí)QoE: QoE(t) = f(T)18: t++19: end if
在該節(jié)將提出的兩階段碼率調(diào)節(jié)策略與其他3種碼率調(diào)節(jié)算法在關(guān)于包括平均視頻碼率,碼率變化次數(shù),重載次數(shù)和平均QoE分?jǐn)?shù)這幾個(gè)方面進(jìn)行橫向?qū)Ρ取?種碼率調(diào)節(jié)算法描述如下。
(1)Baseline,如果在12 s的視頻內(nèi)容(3個(gè)視頻塊)中沒有重載,則將視頻碼率提高到更高水平,并采用與啟動階段相同的碼率調(diào)節(jié)策略,以在重載發(fā)生之后立即將視頻碼率降低到適當(dāng)?shù)乃絒11]。
(2)BBA-0是一種基于緩沖的方案,它在啟動階段保持最小視頻碼率,然后根據(jù)一種碼率映射圖進(jìn)入碼率快速增長周期,當(dāng)每次對應(yīng)的網(wǎng)絡(luò)吞吐量不足需要降低碼率時(shí)碼率降低到最小值。
(3)BDRM,以保守的方式估算最壞情況的網(wǎng)絡(luò)容量,但在容量允許的情況下根據(jù)碼率映射指標(biāo)立即提高視頻碼率,并且在整個(gè)過程中保持視頻碼率不變。
如圖2所示,在下載1 000個(gè)視頻塊期間,波動的網(wǎng)絡(luò)帶寬由1 000個(gè)隨機(jī)下載速率模擬,范圍主要在28 Mb / s附近徘徊。視頻碼率集R= {1,1.5,2,2.5,...,13,13.5},單位為Mb / s,|R| =25,當(dāng)緩沖器占用率BO(t)≤0時(shí)發(fā)生重載。在這種情況下,下一個(gè)視頻塊將以1Mb/s下載,直到BO(t)≥TS。對于每種視頻碼率自適應(yīng)方法,從中獲得對應(yīng)于1 000個(gè)視頻塊的1000個(gè)碼率和緩沖器BO(t)的動態(tài)變化[12]。結(jié)果產(chǎn)生了一系列的三元組,即視頻碼率R、重載次數(shù)T和碼率波動次數(shù)V即表述為(R、T、V)[1];考慮到人類視覺系統(tǒng)的新近性,本文提出以下公式來進(jìn)行三元組與QoE的映射:
式中,N代表視頻塊的數(shù)量;Rn指當(dāng)前視頻塊的碼率;|q(Rn)代表碼率和QoE之間的映射。本文采用文獻(xiàn)[13]中提出的BOLA模型中的計(jì)算方法:
而重載懲罰系數(shù)也是源自BOLA模型之中,其為固定值2.66。
所有4種碼率調(diào)節(jié)算法都運(yùn)行在圖2中的模擬網(wǎng)絡(luò)的環(huán)境中[12]。通過到目前為止計(jì)算的模擬結(jié)果,為了量化4種視頻碼率自適應(yīng)算法的綜合性能,將(R,T,V)導(dǎo)入提出的映射模型,以測算用戶的QoE。如表2中的前3行所示,可以構(gòu)成一系列(R,T,V)三元組。可以看到2-S具有最高的平均碼率,最低的碼率變化數(shù)量,并且重載的數(shù)量仍然是非常低的水平。
圖2 網(wǎng)絡(luò)吞吐量的概率分布圖
表2 比較三元組中R,T,V值以及QoE值
本文提出了一種兩階段碼率自適應(yīng)(2-S)策略,該策略充分利用影響因子的變化對用戶的體驗(yàn),并實(shí)現(xiàn)目標(biāo)碼率自適應(yīng)以改善實(shí)時(shí)視頻QoE。2-S算法將視頻播放過程分為初始啟動階段和穩(wěn)定播放階段,保守地調(diào)節(jié)碼率使得前一階段的啟動延遲縮短,同時(shí)專注于平衡視頻碼率和后階段的緩沖。仿真結(jié)果表明,2-S可以改善影響用戶QoE的3個(gè)關(guān)鍵因素,有效改善視頻播放服務(wù)的平均QoE得分。