本發(fā)明流媒體技術(shù)領(lǐng)域,更具體地,涉及一種基于PID控制器的動(dòng)態(tài)調(diào)整視頻碼率的方法。
背景技術(shù):
近年來(lái),隨著高速數(shù)據(jù)網(wǎng)絡(luò)的發(fā)展以及智能終端設(shè)備的迅速普及,人們對(duì)流媒體的需求也不斷增長(zhǎng),這也導(dǎo)致流媒體在互聯(lián)網(wǎng)流量中的比重呈爆炸式增長(zhǎng),與之相對(duì)應(yīng)的流媒體技術(shù)引起了國(guó)內(nèi)外的高度重視和積極研究。傳統(tǒng)的流媒體技術(shù)(如RTP和RTSP)有各種各樣的弊端,如不支持現(xiàn)有的網(wǎng)絡(luò)基礎(chǔ)設(shè)施和無(wú)法通過(guò)防火墻等問(wèn)題,而HTTP漸進(jìn)式下載又會(huì)因?yàn)榫W(wǎng)絡(luò)帶寬波動(dòng)對(duì)用戶(hù)產(chǎn)生不好的用戶(hù)體驗(yàn)并且不支持直播?;贖TTP的動(dòng)態(tài)自適應(yīng)流媒體技術(shù)(DASH,Dynamic Adaptive Streaming over HTTP)克服了以上的缺點(diǎn),已經(jīng)逐漸成為主流的流媒體技術(shù)。
基于HTTP的實(shí)時(shí)流媒體協(xié)議現(xiàn)已成為移動(dòng)互聯(lián)網(wǎng)上多媒體業(yè)務(wù)的主流協(xié)議,目前在各移動(dòng)終端和服務(wù)廠(chǎng)商推出的自身產(chǎn)品和平臺(tái)相關(guān)的流媒體解決方案中,大部分都是基于HTTP協(xié)議實(shí)現(xiàn)的。其中較成熟的有蘋(píng)果公司的HLS(Apple HTTP Live Streaming),微軟公司的MSS(Microsoft Smooth Streaming)和Adobe公司的HDS(Adobe HTTP Dynamic Streaming)。上述三大商業(yè)流媒體解決方案都是將視頻編碼成多種碼率,將打包好的視頻文件進(jìn)行切片處理,然后用一個(gè)索引文件來(lái)描述視頻內(nèi)容。但它們之間互不兼容,只能播放遵循自己標(biāo)準(zhǔn)的媒體文件。
3GPP和MPEG總結(jié)三大商業(yè)系統(tǒng)的特點(diǎn),聯(lián)合提出的一種解決方案:MEPG-DASH。該協(xié)議綜合了現(xiàn)有主流移動(dòng)流媒體協(xié)議的基本構(gòu)架,對(duì)所有平臺(tái)提供了良好的兼容性。
圖1展示了DASH系統(tǒng)的架構(gòu)。整個(gè)系統(tǒng)由三個(gè)部分組成,包括媒體服務(wù)器(MediaServer)、緩存服務(wù)器(Cache Server)和客戶(hù)端(Client)。在媒體服務(wù)器里,視頻內(nèi)容被編碼成多種碼率,碼率高對(duì)應(yīng)的視頻清晰度也高,同時(shí)視頻被切成固定長(zhǎng)度的視頻片段??蛻?hù)端播放視頻時(shí),根據(jù)網(wǎng)絡(luò)狀況,通過(guò)HTTP協(xié)議向服務(wù)器請(qǐng)求相應(yīng)碼率的視頻切片,從而最大程度地利用網(wǎng)絡(luò)帶寬,并保證視頻播放流暢。用戶(hù)觀(guān)看過(guò)的視頻會(huì)在相應(yīng)的緩存服務(wù)器上備份,以備用戶(hù)再次觀(guān)看和與用戶(hù)相近的其他用戶(hù)觀(guān)看。在客戶(hù)端的流控制器是用來(lái)控制媒體內(nèi)容的請(qǐng)求過(guò)程。一個(gè)典型的控制器會(huì)先從原始媒體內(nèi)容服務(wù)器取得媒體內(nèi)容的基本信息,如媒體描述文件(MPD,Media Presentation Description),再根據(jù)網(wǎng)絡(luò)狀況、流媒體策略和設(shè)備的配置信息請(qǐng)求相應(yīng)碼率的視頻內(nèi)容。在此之后,視頻塊就會(huì)通過(guò)HTTP協(xié)議從服務(wù)器傳到并保存在客戶(hù)端的緩存中。
目前碼率的選取策略主要有以下兩種方式:基于帶寬預(yù)測(cè)的方法和基于緩存的方法?;趲掝A(yù)測(cè)的方法得到廣泛的研究和應(yīng)用,該方法是根據(jù)實(shí)時(shí)檢測(cè)用戶(hù)帶寬狀況,動(dòng)態(tài)調(diào)整視頻流的質(zhì)量。然而使用這種方法在有網(wǎng)絡(luò)資源競(jìng)爭(zhēng)的情況下服務(wù)器的性能會(huì)嚴(yán)重下降,降低了用戶(hù)體驗(yàn)。導(dǎo)致這種現(xiàn)象主要有兩個(gè)原因:一是帶寬預(yù)測(cè)是很難的并且是不準(zhǔn)確的;二是決定在瓶頸情況下有多少帶寬可利用是傳輸層TCP的職責(zé),而HTTP是屬于應(yīng)用層的協(xié)議?;谶@樣的原因,很多研究者就建議不要嘗試去預(yù)測(cè)用戶(hù)的帶寬使用情況,而是通過(guò)考慮客戶(hù)端的緩存狀態(tài)來(lái)動(dòng)態(tài)選取視頻的碼率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明為解決以上基于帶寬預(yù)測(cè)碼率的方法預(yù)測(cè)準(zhǔn)確度低的缺陷,提供了一種基于PID控制器的動(dòng)態(tài)調(diào)整視頻碼率的方法,該方法利用PID控制器根據(jù)緩存狀態(tài)信息動(dòng)態(tài)地對(duì)視頻碼率進(jìn)行調(diào)整,使得播放系統(tǒng)能夠?qū)?fù)雜的網(wǎng)絡(luò)環(huán)境做出響應(yīng)并保持穩(wěn)定性,保證用戶(hù)具有良好的體驗(yàn)。
為實(shí)現(xiàn)以上發(fā)明目的,采用的技術(shù)方案是:
一種基于PID控制器的動(dòng)態(tài)調(diào)整視頻碼率的方法,包括以下步驟:
S1.對(duì)PID控制器比例單元、積分單元、微分單元的參數(shù)Kp、Ki和Kd進(jìn)行初始化,PID控制器的狀態(tài)轉(zhuǎn)移方程為:
S2.對(duì)于下載的第K塊視頻塊,其對(duì)應(yīng)的碼率通過(guò)下式計(jì)算獲得:
rk=Kp1(bk-bf)+C
其中k的初始值為1,bf表示緩存穩(wěn)定時(shí)緩存隊(duì)列的長(zhǎng)度,bk表示更新的下載第k塊視頻塊時(shí)緩存隊(duì)列的長(zhǎng)度,Kp1、C表示設(shè)定的常數(shù),常數(shù)Kp1和C滿(mǎn)足:
ck表示下載第k個(gè)視頻塊時(shí)網(wǎng)絡(luò)的平均帶寬,τ表示每個(gè)視頻塊的長(zhǎng)度;
S3.使用流近似來(lái)對(duì)緩存狀態(tài)的變化率進(jìn)行計(jì)算:
其中bk-1表示下載第k-1塊視頻塊時(shí)緩存隊(duì)列的長(zhǎng)度,tk、tk-1分別表示下載下載第k塊視頻塊、第k-1塊視頻塊的具體時(shí)刻;
S4.由上可知,rk、bt′滿(mǎn)足以下線(xiàn)性狀態(tài)方程組:
δ(rk)=rk-rf,其中rf表示當(dāng)緩存處于穩(wěn)定狀態(tài)時(shí)的視頻碼率;δ(·)表示差分運(yùn)算;
因此狀態(tài)轉(zhuǎn)移方程為:
S5.將步驟S4的狀態(tài)轉(zhuǎn)移方程應(yīng)用到PID控制器的狀態(tài)轉(zhuǎn)移方程中,得:
S6.根據(jù)PID控制器的特性,視頻碼率的調(diào)整表示為:
因此,rk=Q(δ(rk)+rf);其中Q(·)表示量化算子;
S7.令k=k+1,然后重復(fù)執(zhí)行步驟S2~S6。
優(yōu)選地,所述步驟S2中,更新bk的過(guò)程表示如下:
其中Δtk-1表示緩存存滿(mǎn)的時(shí)候,暫停下載視頻塊的時(shí)間,Bmax表示緩存的最大容量。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
(1)本發(fā)明提供的方法利用PID控制器根據(jù)緩存狀態(tài)信息動(dòng)態(tài)地對(duì)視頻碼率進(jìn)行調(diào)整,使得播放系統(tǒng)能夠?qū)?fù)雜的網(wǎng)絡(luò)環(huán)境做出響應(yīng)并保持穩(wěn)定性,保證用戶(hù)具有良好的體驗(yàn)。
(2)本發(fā)明提供的方法在更新緩存隊(duì)列時(shí),若緩存存滿(mǎn),則暫停下載視頻塊,防止緩存隊(duì)列溢出。
附圖說(shuō)明
圖1為DASH系統(tǒng)架構(gòu)示意圖。
圖2為本發(fā)明提供的方法的流程圖。
圖3為PID控制器的結(jié)構(gòu)示意圖。
圖4為線(xiàn)性系統(tǒng)的框圖。
具體實(shí)施方式
附圖僅用于示例性說(shuō)明,不能理解為對(duì)本專(zhuān)利的限制;
以下結(jié)合附圖和實(shí)施例對(duì)本發(fā)明做進(jìn)一步的闡述。
實(shí)施例1
如圖2所示,本發(fā)明提供的基于PID控制器的動(dòng)態(tài)調(diào)整視頻碼率的方法,包括以下步驟:
第一步、對(duì)PID控制器比例單元、積分單元、微分單元的參數(shù)Kp、Ki和Kd進(jìn)行初始化,如圖3所示,PID控制器的狀態(tài)轉(zhuǎn)移方程為:
第二步、對(duì)于下載的第k塊視頻塊,其對(duì)應(yīng)的碼率通過(guò)下式計(jì)算獲得:
rk=Kp1(bk-bf)+C
其中k的初始值為1,bf表示緩存穩(wěn)定時(shí)緩存隊(duì)列的長(zhǎng)度,bk表示更新的下載第k塊視頻塊時(shí)緩存隊(duì)列的長(zhǎng)度,Kp1、C表示設(shè)定的常數(shù),常數(shù)Kp1和C滿(mǎn)足:
第三步、使用流近似來(lái)對(duì)緩存狀態(tài)的變化率進(jìn)行計(jì)算:
其中bk-1表示下載第k-1塊視頻塊時(shí)緩存隊(duì)列的長(zhǎng)度,tk、tk-1分別表示下載下載第k塊視頻塊、第k-1塊視頻塊的具體時(shí)刻;
第四步、由上可知,如圖4所示,rk、bk滿(mǎn)足以下線(xiàn)性狀態(tài)方程組:
因此狀態(tài)轉(zhuǎn)移方程為:
第五步、將第四步的狀態(tài)轉(zhuǎn)移方程應(yīng)用到PID控制器的狀態(tài)轉(zhuǎn)移方程中,得:
第六步、根據(jù)PID控制器的特性,視頻碼率的調(diào)整表示為:
因此,rk=Q(δ(rk)+rf);其中Q(·)表示量化算子;
第七步、令k=k+1,然后重復(fù)執(zhí)行步驟第二步~第六步。
優(yōu)選地,所述第二步中,更新bk的過(guò)程表示如下:
其中Δtk-1表示緩存存滿(mǎn)的時(shí)候,暫停下載視頻塊的時(shí)間,Bmax表示緩存的最大容量。
上述方法的偽代碼如下:
輸入:
PID控制模型參數(shù):Kp,Ki,Kd
緩存的平穩(wěn)狀態(tài):bf
初始視頻碼率和緩存狀態(tài):v0,b0
碼率選擇系數(shù):Kp1
輸出:
所要獲取的視頻塊的碼率。
1、初始化步驟:t←0,b(0)←0,r←r0;
2、for i←1 to N:
3、下載碼率為ri-1第i-1個(gè)視頻塊,等待其下載完成;
4、更新緩存狀態(tài)
5、計(jì)算
6、計(jì)算rk=Q(δ(rk)+rf);
end for
顯然,本發(fā)明的上述實(shí)施例僅僅是為清楚地說(shuō)明本發(fā)明所作的舉例,而并非是對(duì)本發(fā)明的實(shí)施方式的限定。對(duì)于所屬領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在上述說(shuō)明的基礎(chǔ)上還可以做出其它不同形式的變化或變動(dòng)。這里無(wú)需也無(wú)法對(duì)所有的實(shí)施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。