黃 勝,胡凌煒,付園鵬
(重慶郵電大學(xué) 光通信與網(wǎng)絡(luò)重點實驗室,重慶 400065)(*通信作者電子郵箱hulw1018@163.com)
基于超文本傳輸協(xié)議(Hyper Text Transfer Protocol, HTTP)的動態(tài)自適應(yīng)流媒體傳輸技術(shù)(Dynamic Adaptive Streaming over HTTP, DASH)定義了媒體呈現(xiàn)描述(Media Presentation Description, MPD)文件以及媒體段的文件格式。MPD文件包含了媒體段的一些基本信息,如位置、時序、比特率等,服務(wù)器依據(jù)標(biāo)準(zhǔn)將同一視頻內(nèi)容編成多種碼率版本,并以固定的時間間隔對視頻進(jìn)行切片,客戶端實時檢測網(wǎng)絡(luò)帶寬、播放緩存變化等信息,并根據(jù)MPD文件所記載的信息向服務(wù)器請求不同碼率的視頻片段[1-2]。
然而DASH并沒有對碼率自適應(yīng)機(jī)制給出標(biāo)準(zhǔn)定義,高性能的碼率自適應(yīng)算法能夠提升客戶的觀看體驗,因此基于DASH的碼率自適應(yīng)算法成為視頻傳輸領(lǐng)域的研究熱點[3]?,F(xiàn)有的碼率自適應(yīng)方法主要從傳輸帶寬和播放緩存兩個角度進(jìn)行考慮。文獻(xiàn)[4-6]中所提出的方法是典型的基于帶寬的碼率自適應(yīng)算法,其中文獻(xiàn)[5]運(yùn)用調(diào)和平均值來估計帶寬,減小帶寬估計中的離群值帶來的影響;文獻(xiàn)[6]對三個不同的客戶端的碼率自適應(yīng)機(jī)制進(jìn)行對比,其中一個客戶端是Adobe公司的開源媒體框架(Open Source Media Framework, OSMF)流媒體播放器,其自適應(yīng)機(jī)制是根據(jù)最近請求的兩個片段的下載時長來估計可用帶寬,而下一個片段的碼率則小于該估計帶寬的最大等級碼率。文獻(xiàn)[7-10]所提出的算法是典型的基于播放緩存的碼率自適應(yīng)控制算法,文獻(xiàn)[9]提出基于模糊邏輯控制器的DASH(Fuzzy-based DASH, FDASH)碼率自適應(yīng)算法,根據(jù)當(dāng)前播放緩存與目標(biāo)緩存的差值和播放緩存變化量這兩個參數(shù),按照一定的規(guī)則控制輸出碼率。文獻(xiàn)[10]對客戶端緩沖區(qū)進(jìn)行分級,實現(xiàn)帶寬的不同比例縮放,并采用滑動窗口技術(shù)對帶寬進(jìn)行平滑處理。同時,通過設(shè)置每個緩沖區(qū)等級的帶寬持續(xù)上升或下降時間的限制和采用高低帶寬的中間碼率等級,使碼率等級不會劇烈變化。結(jié)合基于帶寬和播放緩存算法兩者的特點,文獻(xiàn)[11-12]從體驗質(zhì)量(Quality of Experience, QoE)的角度提出碼率自適應(yīng)算法,通過對QoE進(jìn)行數(shù)值分析,并利用一定的控制方法對請求的視頻碼率進(jìn)行控制,力求達(dá)到較好的QoE。然而上述方法無法避免帶寬快速波動導(dǎo)致碼率頻繁切換的問題,或者不能很好解決播放流暢性和視頻質(zhì)量之間的矛盾。
針對上述問題,本文提出一種基于狀態(tài)機(jī)的DASH(State machine-based DASH, SDASH)算法,用狀態(tài)機(jī)對碼率切換過程進(jìn)行分析與控制,充分考慮QoE影響因素,將影響因素的數(shù)值變化和視頻碼率之間的聯(lián)系作為碼率切換的驅(qū)動條件,在保證播放緩存和碼率偏移率處于一定閾值的條件下將片段碼率切換至視頻質(zhì)量和播放流暢性整體性能相對最優(yōu)的碼率等級上,從而達(dá)到較好的觀看體驗。
由于網(wǎng)絡(luò)帶寬存在動態(tài)隨機(jī)性,如果沒有一個高效的碼率自適應(yīng)切換算法,用戶在觀看過程中可能會遇到播放停頓,碼率切換頻繁,碼率階躍、驟降等情況,視頻傳輸過程采用碼率自適應(yīng)算法的最主要目的就是盡量避免上述情況出現(xiàn),最大化QoE。在基于DASH的流媒體系統(tǒng)中,QoE的主要影響因素為以下三個:視頻碼率、碼率切換的頻率及幅度、播放停頓次數(shù)及停頓時長[13]。
為不失一般性,本文假設(shè)服務(wù)器中存儲的視頻碼率等級為{L0,L1,…,LK-1|L0 (1) 播放的流暢性,即碼率切換頻率和幅度,則可以通過N個片段碼率的標(biāo)準(zhǔn)差σk來定量描述,得到如下計算式: (2) 式(3)代表第k+1個片段下載完成時的播放緩存為開始下載第k+1個片段時的播放緩存加上片段時長T,再減去下載第k+1個片段所需的時間,也就是在下載過程中播放器消耗的緩存時長。另外,如果帶寬過高,播放緩存存在溢出的可能性,那么就需要一個暫停請求機(jī)制來防止緩存溢出,暫停時間為τs。為避免播放出現(xiàn)停頓,需要盡量將qk保持在一定閾值內(nèi)。 (3) 本文采用狀態(tài)機(jī)的設(shè)計思想對碼率切換過程進(jìn)行分析與控制。狀態(tài)機(jī)通過監(jiān)測QoE影響因素的數(shù)值變化,充分利用影響因素與各個碼率狀態(tài)間的聯(lián)系控制碼率切換,使切換過程具有較好的QoE。本文考慮到QoE影響因素中的播放流暢性,將碼率切換幅度作為其中一個重要影響因素,特別是當(dāng)播放緩存不足時需要進(jìn)行碼率下降操作,如果直接將碼率切換至初始碼率則可能引起碼率驟降,因此需要為碼率切換設(shè)定對應(yīng)的過渡狀態(tài)lt以減小碼率驟降對QoE的影響;同時考慮到視頻傳輸過程的網(wǎng)絡(luò)帶寬利用率,將最接近平均帶寬的碼率等級lb設(shè)置為其中一個目標(biāo)狀態(tài);當(dāng)存在帶寬波動等原因需要進(jìn)行碼率切換時,為減少碼率切換對QoE帶來的影響,在一般情況下采用逐級遞增或者遞減的切換方式,因此將碼率等級加1和碼率等級減1作為目標(biāo)狀態(tài);其他碼率等級狀態(tài)分別為碼率等級保持和避免出現(xiàn)緩存溢出而設(shè)定的暫停請求狀態(tài)。假設(shè)lk為vk對應(yīng)的碼率等級,在第k個片段完成下載之后,其對應(yīng)的可轉(zhuǎn)移狀態(tài)如圖1所示。接下來需要確定狀態(tài)轉(zhuǎn)移條件1~6,使碼率自適應(yīng)過程為客戶提供盡可能好的QoE。 圖1 狀態(tài)轉(zhuǎn)移圖 根據(jù)文獻(xiàn)[15]可知碼率對于用戶體驗的影響遵循對數(shù)準(zhǔn)則。因為mk和σk都與片段的碼率直接相關(guān),所以視頻碼率和播放流暢性對QoE的影響就可以分別用如下公式表示: Q_m=ln (mk+ε) (4) Q_σ=ln (σk+φ) (5) 兩者整體對QoE的影響則可以通過式(6)描述: Qk=a*Q_m-b*Q_σ (6) 其中ε和φ為常系數(shù),防止式(4)和(5)取對數(shù)時出現(xiàn)異常值,一般取數(shù)值1即可,片段碼率均方差越小視頻越流暢,{a,b|a+b=1,a>0,b>0}為兩個影響因素的系數(shù)。 定義qmin、qmax分別為播放緩存qk的上下兩個閾值,使qk保持在一定范圍內(nèi)即可避免出現(xiàn)緩存不足導(dǎo)致播放停頓或者緩存溢出等問題,如下所示: qmin (7) θk=|mk-bN|/bN (8) 其中:bN為最新請求的N個片段的平均下載帶寬。定義θmax為碼率偏移率的最大閾值,使θk保持在一定范圍內(nèi),當(dāng)視頻碼率與鏈路帶寬在一定范圍內(nèi)保持一致時即可對播放緩存起到一個穩(wěn)定作用,從而盡量避免碼率出現(xiàn)周期性切換,限定條件如式(9)所示: 0≤θk≤θmax (9) 綜上所述,轉(zhuǎn)移條件1、2、3總的切換準(zhǔn)則是:在滿足播放緩存和碼率偏移率在一定閾值的條件下選擇Qk+1_max所對應(yīng)的碼率等級,因此,狀態(tài)轉(zhuǎn)移條件如下。 狀態(tài)轉(zhuǎn)移條件1 在滿足總的切換準(zhǔn)則的前提下,進(jìn)行上升或者下降操作后的碼率等級必須屬于事先設(shè)定的碼率等級集合{L0,L1,…,LK-1|L0 狀態(tài)轉(zhuǎn)移條件2 0≤θk≤θmax&&qmin 穩(wěn)定的作物經(jīng)濟(jì)狀況以及良好的種植條件促進(jìn)了巴西種植的快速開始。有分析師認(rèn)為未來巴西大豆面積將增加3%至5%,玉米面積將增加5%以上。 狀態(tài)轉(zhuǎn)移條件3 0≤θk≤θmax&&qmin 接下來對條件4進(jìn)行分析,當(dāng)θk>θmax&&qmin 狀態(tài)轉(zhuǎn)移條件4 θk>θmax&&qmin 此外,在視頻請求的初始階段,為保證盡可能低的初始播放時延,將初始碼率設(shè)置為L0,當(dāng)播放緩存達(dá)到閾值qmin時,狀態(tài)轉(zhuǎn)移條件4的限制能夠?qū)⒊跏即a率直接從L0提升至lb,不必經(jīng)歷碼率逐步提升的階段,從而盡快為客戶提供高碼率片段。 狀態(tài)轉(zhuǎn)移條件5 狀態(tài)轉(zhuǎn)移條件6 qk≥qmax 在播放緩存滿足條件6的情況下,需要進(jìn)行暫停請求的操作,當(dāng)qk 本文所提算法的具體步驟如下所示。 2)計算mk、bN、θk。 3)判斷是否滿足條件qmin 4)判斷是否滿足條件qk 7)判斷是否滿足條件θk>θmax&&qmin 8)進(jìn)行暫停請求操作,暫停時間為τs,并將lk賦予lk+1,算法結(jié)束。 為驗證算法的有效性,本文采用NS3中DASH模塊對算法進(jìn)行仿真,操作系統(tǒng)為Ubuntu 14.04,主機(jī)CPU為2.3 GHz,RAM為4 GB,將本文所提算法SDASH與文獻(xiàn)[9]所提的FDASH碼率自適應(yīng)算法在相同環(huán)境下進(jìn)行對比,并分析其結(jié)果。在算法的驗證實驗中,將SDASH的QoE影響系數(shù)a和b分別設(shè)置為0.5和0.5,播放緩存的上下限qmin和qmax分別設(shè)置為8 s和90 s,碼率偏移率的閾值θmax設(shè)置為0.25,最新請求的片段個數(shù)N設(shè)置為4。按照文獻(xiàn)[9]原文的設(shè)定,F(xiàn)DASH的目標(biāo)播放緩存設(shè)置為35 s,吞吐量估計周期設(shè)置為60 s,模糊邏輯控制器的輸出成員函數(shù)的系數(shù)N1、N2、Z、P1、P2分別設(shè)置為0.5、0.25、1、1.5、2。本實驗中服務(wù)端存儲的視頻碼率設(shè)定為300 Kb/s、700 Kb/s、1 500 Kb/s、2 500 Kb/s、3 500 Kb/s五個等級,視頻片段的固定長度為2 s,實驗設(shè)定的仿真時長為500 s。 圖2顯示了兩種自適應(yīng)算法在鏈路帶寬緩慢隨機(jī)波動的情況下各自的片段碼率變化曲線。圖2顯示的FDASH碼率自適應(yīng)機(jī)制在仿真的前112 s所傳輸?shù)囊曨l片段碼率都是300 Kb/s,之后逐步攀升至3 500 Kb/s,持續(xù)到284 s后碼率逐步下降到1 500 Kb/s,經(jīng)過一段時間后又逐步上升到3 500 Kb/s。FDASH算法在仿真初始階段持續(xù)請求低碼率的視頻片段,原因在于當(dāng)播放緩存低于閾值時,F(xiàn)DASH采用保守的決策機(jī)制。當(dāng)播放緩存達(dá)到一定閾值之后,又采用窮盡式的方式提升視頻碼率,雖然這可以短時提升觀看體驗,但同時也會使播放緩存出現(xiàn)大幅波動,容易產(chǎn)生周期性碼率等級變化,且長時間請求低碼率視頻會嚴(yán)重降低QoE。 從圖2中可以看出,本文所提的SDASH算法在仿真開始階段,當(dāng)播放緩存達(dá)到閾值之后,因為碼率偏移率的限制,能夠快速使視頻碼率從300 Kb/s提升至1 500 Kb/s,隨著鏈路帶寬的提升和播放緩存的增加逐步提升至2 500 Kb/s,并一直保持到仿真結(jié)束,整個過程沒有出現(xiàn)碼率階躍或者驟降的情況。表1給出了本次實驗兩種算法各自的視頻平均碼率和碼率切換次數(shù)。表1的結(jié)果顯示,相比FDASH算法,本文所提SDASH算法決策出的片段平均碼率要高0.11 Mb/s,且碼率切換次數(shù)較少。 圖2 帶寬緩慢隨機(jī)變化環(huán)境下算法性能對比 Tab. 1 Statistics of simulation results under slow and stochastic bandwidth variation 圖3顯示了兩種自適應(yīng)算法在鏈路帶寬快速波動的情況下各自的片段碼率變化曲線。 圖3 帶寬快速隨機(jī)變化環(huán)境下算法性能對比 圖3仿真結(jié)果顯示,F(xiàn)DASH算法的仿真結(jié)果與圖2中該算法的片段碼率曲線整體趨勢相似。SDASH算法能夠在初始階段就將視頻片段碼率從300 Kb/s提升至2 500 Kb/s,隨著播放緩存和碼率偏移率的變化,碼率在1 500 Kb/s與2 500 Kb/s間緩慢波動;在278 s處由于播放緩存下降至8 s以下,因此碼率下降兩個等級至700 Kb/s,隨著播放緩存的恢復(fù),碼率又回升至2 500 Kb/s,整個過程不存在碼率階躍或者驟降的情況。表2為帶寬快速隨機(jī)變化下的兩種算法的平均碼率和碼率切換次數(shù)的對比結(jié)果,結(jié)果顯示,SDASH算法決策的片段平均碼率高出FDASH的決策結(jié)果0.28 Mb/s,提高約14.14%。碼率切換次數(shù)方面,在帶寬快速且大幅波動的情況下,經(jīng)過SDASH算法決策的片段碼率比FDASH算法的片段碼率切換次數(shù)要多;但是在視頻傳輸?shù)某跏茧A段,SDASH算法相比FDASH算法能夠更快將請求的片段上升到較高的碼率等級。顯然,持續(xù)提供較長時間的低碼率視頻將會降低觀看體驗質(zhì)量,而本文所提算法SDASH能夠一定程度上克服FDASH算法所存在的視頻傳輸初始階段碼率決策較為保守的缺點。 表2 帶寬快速隨機(jī)變化下仿真結(jié)果統(tǒng)計 針對DASH應(yīng)用環(huán)境中存在的播放流暢性與視頻質(zhì)量之間的矛盾,本文提出一種基于狀態(tài)機(jī)的碼率自適應(yīng)算法,采用狀態(tài)機(jī)對碼率自適應(yīng)過程進(jìn)行控制,將影響因素的數(shù)值變化與視頻碼率之間的聯(lián)系作為狀態(tài)轉(zhuǎn)移條件,依據(jù)一定的準(zhǔn)則作出碼率切換決策。實驗結(jié)果表明,本文所提出的碼率自適應(yīng)機(jī)制能夠較快將片段初始碼率切換到較高碼率,同時在保證較少碼率切換次數(shù)的條件下,為客戶提供較高的視頻碼率,且減少碼率驟降等情況出現(xiàn)。下一步工作將在實際視頻傳輸系統(tǒng)中應(yīng)用本文所提算法,對碼率切換是否會模糊場景切換這一問題進(jìn)行研究,并對視頻請求過程的QoE進(jìn)行主觀評價,根據(jù)反饋進(jìn)一步優(yōu)化算法。2 基于狀態(tài)機(jī)的碼率自適應(yīng)算法
2.1 碼率切換的狀態(tài)轉(zhuǎn)移過程
2.2 面向QoE的狀態(tài)轉(zhuǎn)移條件
2.3 算法流程
3 實驗結(jié)果與分析
3.1 實驗設(shè)置
3.2 結(jié)果分析
4 結(jié)語