本發(fā)明屬于視頻傳輸技術(shù)領(lǐng)域,涉及基于mpeg-dash協(xié)議的流媒體視頻或音頻的傳輸,具體涉及一種基于mpeg-dash協(xié)議的動(dòng)態(tài)自適應(yīng)碼率選擇方法。
背景技術(shù):
目前,隨著網(wǎng)絡(luò)帶寬的不斷增加,人們對(duì)媒體信息的需求也在不斷增長(zhǎng)。據(jù)cisco公司在年五月發(fā)布的報(bào)告中顯示,到2017年,媒體流量將占據(jù)整個(gè)網(wǎng)絡(luò)流量的86%,各類媒體應(yīng)用將成為人們信息化生活中不可或缺的一部分。當(dāng)前各種多媒體應(yīng)用層出不窮,它們?yōu)槿藗兲峁┘纛l,視頻,圖文于一體的綜合體驗(yàn)。人們期望獲得更快速,更流暢,更高質(zhì)量的媒體服務(wù)體驗(yàn),如何滿足這一需求成為當(dāng)今流媒體技術(shù)的一大難點(diǎn)。
流媒體技術(shù)指的是采用流式傳輸方式傳輸媒體數(shù)據(jù)的技術(shù),它的主要特點(diǎn)由服務(wù)器向用戶連續(xù)、實(shí)時(shí)地傳送媒體數(shù)據(jù)。在采用流媒體技術(shù)的系統(tǒng)中,用戶無(wú)需等待全部數(shù)據(jù)下載完成即可進(jìn)行播放,即實(shí)現(xiàn)邊下載邊播放的效果,大大降低了用戶啟動(dòng)時(shí)間和對(duì)用戶側(cè)緩存大小的需求。傳統(tǒng)的rtp/rtsp流媒體技術(shù)采用udp協(xié)議進(jìn)行數(shù)據(jù)傳輸,因此僅能提供不可靠的傳輸。此外由于rtp/rtsp流媒體技術(shù)需要特定的流媒體服務(wù)器,導(dǎo)致部署成本較高。針對(duì)這些問(wèn)題,http動(dòng)態(tài)自適應(yīng)流媒體(dash,dynamicadaptivestreamingoverhttp)技術(shù)成為近年來(lái)流媒體界的新寵。該技術(shù)釆用http/tcp協(xié)議架構(gòu),為用戶提供可靠的數(shù)據(jù)傳輸。同時(shí)該技術(shù)使用的是80端口,因此可以輕松穿越防火墻。再者,dash技術(shù)可以重用普通的web服務(wù)器,部署成本低。最后,該技術(shù)支持同一媒體內(nèi)容不同質(zhì)量級(jí)別的媒體表示,尤其是移動(dòng)端用戶可以根據(jù)設(shè)備能力、緩存區(qū)大小和實(shí)時(shí)網(wǎng)絡(luò)帶寬情況實(shí)時(shí)調(diào)整請(qǐng)求的媒體質(zhì)量級(jí)別,具備動(dòng)態(tài)自適應(yīng)的特點(diǎn)。因此,dash技術(shù)得到了各類廠商和標(biāo)準(zhǔn)化組織的廣泛關(guān)注,有望成為下一代主流流媒體技術(shù)。
但是mpeg-dash協(xié)議只定義了mpd文件結(jié)構(gòu)以及流媒體切片格式,并沒(méi)有規(guī)定客戶端選擇切片文件的流程或機(jī)制,在某種程度上基于dash協(xié)議的動(dòng)態(tài)自適應(yīng)碼率選擇方法的好壞直接決定了流媒體傳輸效率的高低和用戶的觀看體驗(yàn),所以基于dash協(xié)議的動(dòng)態(tài)自適應(yīng)碼率選擇方法有著很大的研究和發(fā)展空間,而現(xiàn)在還未有類似技術(shù)出現(xiàn)。
技術(shù)實(shí)現(xiàn)要素:
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種基于mpeg-dash協(xié)議的動(dòng)態(tài)自適應(yīng)碼率選擇方法,實(shí)現(xiàn)了在流暢播放的前提下盡可能的提高視頻質(zhì)量,極大的增強(qiáng)了用戶觀看體驗(yàn)。
本發(fā)明所采用的技術(shù)方案是,基于mpeg-dash協(xié)議的動(dòng)態(tài)自適應(yīng)碼率選擇方法,具體按照以下步驟進(jìn)行:
步驟1,建立服務(wù)器與客戶端的http連接;
步驟2,客戶端向服務(wù)器發(fā)送httpget請(qǐng)求,請(qǐng)求下載mpd文件并存儲(chǔ);
步驟3,服務(wù)器收到客戶端的請(qǐng)求后對(duì)客戶端進(jìn)行響應(yīng)發(fā)送mpd文件,客戶端對(duì)mpd文件進(jìn)行下載并對(duì)下載的mpd文件進(jìn)行解析;為了使視頻可以盡快開始播放,根據(jù)解析mpd文件所得到的視頻分片的url所對(duì)應(yīng)的碼率范圍先以最小碼率下載一部分視頻切片,服務(wù)器收到請(qǐng)求后給客戶端發(fā)送視頻切片文件,客戶端對(duì)切片文件進(jìn)行下載;
步驟4,對(duì)步驟3下載視頻切片時(shí)的網(wǎng)絡(luò)帶寬進(jìn)行計(jì)算,統(tǒng)計(jì)和記錄并運(yùn)用卡爾曼濾波預(yù)測(cè)法對(duì)下載下一個(gè)視頻分片時(shí)的網(wǎng)絡(luò)帶寬進(jìn)行預(yù)測(cè);
步驟5,根據(jù)步驟4所得到的預(yù)測(cè)帶寬并結(jié)合當(dāng)前緩存區(qū)視頻切片剩余情況對(duì)下載下一個(gè)視頻切片的碼率做出選擇;
步驟6,若視頻切片沒(méi)有全部下載完成則跳轉(zhuǎn)到步驟4-5,繼續(xù)執(zhí)行預(yù)測(cè)和下載過(guò)程,否則退出循環(huán)過(guò)程,方法結(jié)束。
進(jìn)一步的,所述步驟1的具體過(guò)程是:
步驟11:創(chuàng)建一個(gè)url對(duì)象;
步驟12:創(chuàng)建一個(gè)http鏈接;
步驟13:使用io流獲取數(shù)據(jù)。
進(jìn)一步的,所述步驟2的具體過(guò)程是:
步驟21:判斷mpd文件是否存在,若存在則返回1否則返回0;
步驟22:文件不存在時(shí)對(duì)文件進(jìn)行下載;
步驟23:對(duì)下載完成的文件進(jìn)行存儲(chǔ)。
進(jìn)一步的,所述步驟3的具體過(guò)程是:
步驟31:獲取mpd文件中representation元素的指定屬性,只需要獲取id,width,height三個(gè)屬性;
步驟32:獲取mpd文件中每個(gè)等級(jí)視頻切片的url;
步驟33:根據(jù)解析mpd文件所得url地址選取最小碼率的視頻切片進(jìn)行下載。
進(jìn)一步的,所述步驟4的具體過(guò)程是:
步驟41:獲取已下載分片的網(wǎng)絡(luò)帶寬bn:
其中:tn(e)表示第n個(gè)切片下載完成的時(shí)間;tn(s)表示第n個(gè)切片開始下載的時(shí)間;r(n)表示第n個(gè)切片所選的碼率;θ表示每個(gè)切片播放持續(xù)的時(shí)間,其值為2秒;bn是第n個(gè)切片的網(wǎng)絡(luò)下載帶寬值;
步驟42:建立系統(tǒng)狀態(tài)方程和量測(cè)方程:
其中:bn+1是第n+1個(gè)切片的預(yù)測(cè)下載帶寬值;yn+1是n+1個(gè)切片帶寬量測(cè)值;a是狀態(tài)轉(zhuǎn)移矩陣,反映了系統(tǒng)從第n個(gè)切片的下載帶寬到第n+1個(gè)的狀態(tài)變化;un是第n個(gè)切片的控制向量;b是控制分配矩陣;qn和rn+1分別是系統(tǒng)噪聲和測(cè)量噪聲,qn的統(tǒng)計(jì)特性e[qn]=0,rn+1的統(tǒng)計(jì)特性e[rn+1]=0;h為觀測(cè)矩陣;
步驟43:由第n個(gè)分片的最優(yōu)帶寬值
步驟44:由上一次的誤差協(xié)方差pn和系統(tǒng)噪聲qn的協(xié)方差q預(yù)測(cè)新的誤差協(xié)方差
其中q為系統(tǒng)噪聲qn的協(xié)方差,類型屬于高斯白噪聲;
步驟45:計(jì)算卡爾曼增益
其中r為測(cè)量噪聲r(shí)n+1的協(xié)方差;
步驟46:對(duì)
此時(shí)
步驟47:若切片尚未全部下載完成則繼續(xù)步驟48,否則退出整個(gè)預(yù)測(cè)過(guò)程;
步驟48:為下一步估計(jì)第n+2個(gè)切片的最優(yōu)帶寬值的迭代進(jìn)行更新操作,即更新pn+1值:
pn+1是第n+1個(gè)切片的最優(yōu)帶寬偏差;
步驟49,跳轉(zhuǎn)到步驟43,一直重復(fù)至到步驟47終結(jié)。
進(jìn)一步的,所述步驟5的具體過(guò)程是:
步驟51:若視頻分片未全部下載完成,即仍然存在預(yù)測(cè)帶寬,則執(zhí)行步驟52,否則下載過(guò)程結(jié)束;
步驟52:
為了確保緩存區(qū)不出現(xiàn)上溢及下溢,同時(shí)確保緩沖區(qū)可以有效抵消帶寬波動(dòng)所造成的預(yù)測(cè)不準(zhǔn)確帶來(lái)的播放停滯或緩沖區(qū)上溢的可能性,現(xiàn)對(duì)緩沖區(qū)設(shè)置兩個(gè)時(shí)間閥值qmin和qmax,根據(jù)緩沖區(qū)設(shè)置的閥值和已經(jīng)存在的分片數(shù)以及預(yù)測(cè)帶寬來(lái)決定所要選取的碼率值。
進(jìn)一步的,所述步驟52的具體過(guò)程是:
步驟521:
計(jì)算第n個(gè)分片sn下載完成后緩沖區(qū)剩余的時(shí)長(zhǎng):
t(tn(e))=t(tn(s))+θ-(tn(e)-tn(s))(8)
其中t(tn(e))表示第n個(gè)分片下載完后緩沖區(qū)時(shí)長(zhǎng),同時(shí)也是開始下載第n+1個(gè)切片時(shí)緩沖區(qū)的時(shí)長(zhǎng),t(tn(s))表示開始下載第n個(gè)分片時(shí)緩沖區(qū)的時(shí)長(zhǎng),同時(shí)也是下載完第n-1個(gè)分片時(shí)緩沖區(qū)的時(shí)長(zhǎng);
步驟522:
當(dāng)t(tn+1(s))<qmin時(shí)緩存區(qū)的切片有用完的可能性,為了確保緩沖區(qū)有足夠的視頻切片必須保證t(tn+1(e))≥qmin,則其碼率需滿足:
ψ無(wú)含義,僅將公式等號(hào)左面計(jì)算得到的值記為ψ,第n+1片所選取的碼率r(n+1)值為max(r(1),ψ),但是由于碼率值是一系列離散值,所以在保證視頻播放流暢的前提下最終的碼率值為距離max(r(1),ψ)最近的向下取定的碼率值,其中r(1)為視頻切片生成時(shí)的最小碼率;
步驟523:
當(dāng)t(tn+1(s))>qmax時(shí)緩沖區(qū)有了足夠的切片,繼續(xù)下載有上溢出的可能性,為了確保緩沖區(qū)不上溢保證t(tn+1(e))≤qmax,則其碼率需要滿足:
ξ無(wú)含義,僅將公式等號(hào)左面得到的值記為ξ;
情況一:r(p)≥ξ為了保證視頻畫面盡可能小的抖動(dòng),選取的碼率值為ξ,同時(shí)由于碼率值是一系列離散值,所以在保證視頻播放流暢的前提下最終的碼率值為距離ξ最近的向上取定的碼率值;
情況二:r(p)<ξ時(shí),繼續(xù)下載必定會(huì)出現(xiàn)緩存區(qū)上溢,為了避免這種情況發(fā)生則啟動(dòng)睡眠機(jī)制,即下載會(huì)被暫停一段時(shí)間,暫停過(guò)后重新計(jì)算第n個(gè)分片sn下載完成后緩沖區(qū)剩余的時(shí)長(zhǎng),繼續(xù)進(jìn)行碼率判決,其中r(p)為視頻切片生成時(shí)的最大碼率;
步驟524:
當(dāng)qmin≤t(tn+1(s))≤qmax時(shí),緩沖區(qū)的分片數(shù)在一個(gè)最優(yōu)的范圍中,碼率的取值范圍為:
為了減少碼率波動(dòng),碼率值與上一個(gè)切片碼率值保持相同即可:r(n+1)=r(n)。
本發(fā)明的有益效果:本發(fā)明是基于dash協(xié)議的動(dòng)態(tài)碼率自適應(yīng)選擇算法,涉及到了帶寬預(yù)測(cè)和緩存區(qū)管理,實(shí)現(xiàn)了視頻質(zhì)量隨網(wǎng)絡(luò)情況的動(dòng)態(tài)改變。算法采用了卡爾曼濾波來(lái)預(yù)測(cè)帶寬,極大的提高了預(yù)測(cè)精度,并將預(yù)測(cè)出的帶寬與緩存區(qū)限制條件相結(jié)合,最終確定待下載切片的碼率并下載該碼率的切片文件。保證了在流暢播放的前提下盡可能的提高視頻播放質(zhì)量,極大的增強(qiáng)了用戶觀看體驗(yàn)。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例的客戶端與服務(wù)器的連接交互過(guò)程圖。
圖2是本發(fā)明實(shí)施例的mpd結(jié)構(gòu)示意圖。
圖3是本發(fā)明實(shí)施例的碼率自適應(yīng)算法的流程圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,本發(fā)明實(shí)施例提供了一種基于mpeg-dash協(xié)議的動(dòng)態(tài)自適應(yīng)碼率選擇方法,其中包括以下功能:建立服務(wù)器與客戶端的http連接、下載與存儲(chǔ)mpd文件、解析mpd文件、碼率自適應(yīng)選擇。
思路如下:首先建立服務(wù)器與客戶端的http連接,當(dāng)連接建立完成后客戶端從服務(wù)器下載mpd文件并對(duì)其進(jìn)行存儲(chǔ)和解析;其次為了縮短緩沖時(shí)間盡快進(jìn)行視頻的播放,和為后續(xù)帶寬預(yù)測(cè)積累原始數(shù)據(jù),根據(jù)解析mpd文件所得到的碼率范圍先以最小碼率下載一部分視頻切片并對(duì)下載該部分視頻切片時(shí)的網(wǎng)絡(luò)帶寬進(jìn)行計(jì)算、統(tǒng)計(jì)和記錄,并運(yùn)用卡爾曼濾波預(yù)測(cè)法對(duì)下載下一個(gè)視頻分片時(shí)的網(wǎng)絡(luò)帶寬進(jìn)行預(yù)測(cè);最后根據(jù)上面所得到的預(yù)測(cè)帶寬和當(dāng)前緩存區(qū)視頻切片剩余情況對(duì)下載下一個(gè)視頻切片的碼率做出選擇,從而使所播放視頻質(zhì)量動(dòng)態(tài)的適應(yīng)不同網(wǎng)路情況。
具體來(lái)說(shuō)按照以下步驟進(jìn)行:
步驟1,
首先建立服務(wù)器與客戶端的http連接;由于dash在應(yīng)用層是以http作為傳輸協(xié)議的,而http在傳輸層是基于tcp協(xié)議的,所以客戶端與服務(wù)器的會(huì)話需要建立連接。
其建立服務(wù)器與客戶端的http連接的具體過(guò)程為:
步驟11:創(chuàng)建一個(gè)url對(duì)象;
步驟12:創(chuàng)建一個(gè)http鏈接;
步驟13:使用io流獲取數(shù)據(jù)。
步驟2,
然后客戶端向服務(wù)器發(fā)送httpget請(qǐng)求,請(qǐng)求下載mpd文件并存儲(chǔ)。
具體過(guò)程為:
步驟21:判斷mpd文件是否存在,若存在則返回1否則返回0;
步驟22:文件不存在時(shí)對(duì)文件進(jìn)行下載;
步驟23:對(duì)下載完成的文件進(jìn)行存儲(chǔ)。
步驟3,
服務(wù)器收到客戶端的請(qǐng)求后對(duì)客戶端進(jìn)行響應(yīng)發(fā)送mpd文件,客戶端對(duì)mpd文件進(jìn)行下載并對(duì)下載的mpd文件進(jìn)行解析;為了使視頻可以盡快開始播放,根據(jù)解析mpd文件所得到的視頻分片的url所對(duì)應(yīng)的碼率范圍先以最小碼率下載一部分視頻切片,服務(wù)器收到請(qǐng)求后給客戶端發(fā)送視頻切片文件,客戶端對(duì)切片文件進(jìn)行下載。mpd文件的結(jié)構(gòu)如圖2所示。
具體過(guò)程為:
步驟31:獲取mpd文件中representation元素的指定屬性,這里只需要獲取id,width,height三個(gè)屬性即可;
步驟32:獲取mpd文件中每個(gè)等級(jí)視頻切片的url;
步驟33:根據(jù)解析mpd文件所得url地址選取最小碼率的視頻切片進(jìn)行下載。
步驟4,
對(duì)步驟3下載視頻切片時(shí)的網(wǎng)絡(luò)帶寬進(jìn)行計(jì)算,統(tǒng)計(jì)和記錄并運(yùn)用卡爾曼濾波預(yù)測(cè)法對(duì)下載下一個(gè)視頻分片時(shí)的網(wǎng)絡(luò)帶寬進(jìn)行預(yù)測(cè)。
圖3是碼率自適應(yīng)選擇算法的流程圖,當(dāng)客戶端對(duì)mpd文件進(jìn)行下載并解析后雖然得到了視頻文件的url,但是為了使用戶得到更好的視聽體驗(yàn)還不能直進(jìn)行下載,必須要經(jīng)過(guò)碼率自適應(yīng)選擇策略。
其具體步驟如下:
步驟41:獲取已下載分片的網(wǎng)絡(luò)帶寬bn:
其中:tn(e)表示第n個(gè)切片下載完成的時(shí)間;tn(s)表示第n個(gè)切片開始下載的時(shí)間;r(n)表示第n個(gè)切片所選的碼率;θ表示每個(gè)切片播放持續(xù)的時(shí)間,這里,每個(gè)切片播放持續(xù)的時(shí)間都相同,在進(jìn)行視頻切割封裝時(shí)都切成相同的時(shí)間長(zhǎng)度其值為2秒;bn是第n個(gè)切片的網(wǎng)絡(luò)下載帶寬值。
步驟42:建立系統(tǒng)狀態(tài)方程和量測(cè)方程:
其中:bn+1是第n+1個(gè)切片的預(yù)測(cè)下載帶寬值;yn+1是n+1個(gè)切片帶寬量測(cè)值;a是狀態(tài)轉(zhuǎn)移矩陣,反映了系統(tǒng)從第n個(gè)切片的下載帶寬到第n+1個(gè)的狀態(tài)變化;un是第n個(gè)切片的控制向量;b是控制分配矩陣;qn和rn+1分別是系統(tǒng)噪聲和測(cè)量噪聲,qn的統(tǒng)計(jì)特性e[qn]=0,rn+1的統(tǒng)計(jì)特性e[rn+1]=0;h為觀測(cè)矩陣。
步驟43:由第n個(gè)分片的最優(yōu)帶寬值
步驟44:由上一次的誤差協(xié)方差pn和系統(tǒng)噪聲qn的協(xié)方差q預(yù)測(cè)新的誤差協(xié)方差
其中q為系統(tǒng)噪聲qn的協(xié)方差,其類型屬于高斯白噪聲;
步驟45:計(jì)算卡爾曼增益
其中r為測(cè)量噪聲r(shí)n+1的協(xié)方差;
步驟46:對(duì)
此時(shí)
步驟47:若切片尚未全部下載完成則繼續(xù)步驟48,否則退出整個(gè)預(yù)測(cè)過(guò)程。
步驟48:為下一步估計(jì)第n+2個(gè)切片的最優(yōu)帶寬值的迭代進(jìn)行更新操作,即更新pn+1值:
pn+1是第n+1個(gè)切片的最優(yōu)帶寬偏差;
步驟49,跳轉(zhuǎn)到步驟43,一直重復(fù)至到步驟47終結(jié)。
步驟5:根據(jù)步驟4所得到的預(yù)測(cè)帶寬并結(jié)合當(dāng)前緩存區(qū)視頻切片剩余情況對(duì)下載下一個(gè)視頻切片的碼率做出選擇,具體過(guò)程為:
步驟51:若視頻分片未全部下載完成,即仍然存在預(yù)測(cè)帶寬,則執(zhí)行步驟52,否則下載過(guò)程結(jié)束。
步驟52:
為了確保緩存區(qū)不出現(xiàn)上溢及下溢,同時(shí)確保緩沖區(qū)可以有效抵消帶寬波動(dòng)所造成的預(yù)測(cè)不準(zhǔn)確帶來(lái)的播放停滯或緩沖區(qū)上溢的可能性,現(xiàn)對(duì)緩沖區(qū)設(shè)置兩個(gè)時(shí)間閥值qmin和qmax,根據(jù)緩沖區(qū)設(shè)置的閥值和已經(jīng)存在的分片數(shù)以及預(yù)測(cè)帶寬來(lái)決定所要選取的碼率值。
其中,步驟52具體為:
步驟521:
計(jì)算第n個(gè)分片sn下載完成后緩沖區(qū)剩余的時(shí)長(zhǎng):
t(tn(e))=t(tn(s))+θ-(tn(e)-tn(s))(8)
其中t(tn(e))表示第n個(gè)分片下載完后緩沖區(qū)時(shí)長(zhǎng)(同時(shí)也是開始下載第n+1個(gè)切片時(shí)緩沖區(qū)的時(shí)長(zhǎng)),t(tn(s))表示開始下載第n個(gè)分片時(shí)緩沖區(qū)的時(shí)長(zhǎng)(同時(shí)也是下載完第n-1個(gè)分片時(shí)緩沖區(qū)的時(shí)長(zhǎng))。
步驟522:
當(dāng)t(tn+1(s))<qmin時(shí)緩存區(qū)的切片有用完的可能性,為了確保緩沖區(qū)有足夠的視頻切片必須保證t(tn+1(e))≥qmin,則其碼率需滿足:
ψ并無(wú)含義,僅將公式等號(hào)左面計(jì)算得到的值記為ψ。第n+1片所選取的碼率r(n+1)值應(yīng)該為max(r(1),ψ),但是由于碼率值是一系列離散值,所以在保證視頻播放流暢的前提下最終的碼率值為距離max(r(1),ψ)最近的向下取定的碼率值。其中r(1)為視頻切片生成時(shí)的最小碼率。
步驟523:
當(dāng)t(tn+1(s))>qmax時(shí)緩沖區(qū)有了足夠的切片,繼續(xù)下載有上溢出的可能性,為了確保緩沖區(qū)不上溢必須保證t(tn+1(e))≤qmax,則其碼率需要滿足:
ξ同理并無(wú)具體含義,僅將公式等號(hào)左面得到的值記為ξ;
情況一:r(p)≥ξ為了保證視頻畫面盡可能小的抖動(dòng),選取的碼率值應(yīng)該為ξ,同時(shí)由于碼率值是一系列離散值,所以在保證視頻播放流暢的前提下最終的碼率值為距離ξ最近的向上取定的碼率值。
情況二:r(p)<ξ時(shí),繼續(xù)下載必定會(huì)出現(xiàn)緩存區(qū)上溢,為了避免這種情況發(fā)生則啟動(dòng)睡眠機(jī)制,即下載會(huì)被暫停一段時(shí)間,暫停過(guò)后重新計(jì)算第n個(gè)分片sn下載完成后緩沖區(qū)剩余的時(shí)長(zhǎng),繼續(xù)進(jìn)行碼率判決。其中r(p)為視頻切片生成時(shí)的最大碼率。
步驟524:
當(dāng)qmin≤t(tn+1(s))≤qmax時(shí),緩沖區(qū)的分片數(shù)在一個(gè)最優(yōu)的范圍中,碼率的取值范圍為:
為了減少碼率波動(dòng),碼率值與上一個(gè)切片碼率值保持相同即可:r(n+1)=r(n)。
步驟6:若視頻切片沒(méi)有全部下載完成則跳轉(zhuǎn)到步驟4-5,繼續(xù)執(zhí)行預(yù)測(cè)和下載過(guò)程,否則退出循環(huán)過(guò)程,方法結(jié)束。
本發(fā)明在帶寬預(yù)測(cè)時(shí)采用了卡爾曼濾波預(yù)測(cè)的方法,由于該方法的原理遵從預(yù)測(cè)—修正的重復(fù)迭代過(guò)程,所以保證了其帶寬預(yù)測(cè)精度;其次,由于移動(dòng)客戶端存在存儲(chǔ)容量不足的實(shí)際情況,這種情況極可能導(dǎo)致緩存區(qū)發(fā)生“溢出”現(xiàn)象,當(dāng)緩存區(qū)發(fā)生下溢出時(shí),會(huì)使得視頻播放出現(xiàn)停滯,當(dāng)發(fā)生上溢出時(shí),又不能充分利用帶寬資源提高視頻播放質(zhì)量。為了解決這個(gè)問(wèn)題又加入了緩存區(qū)控制策略,并通過(guò)將帶寬預(yù)測(cè)與緩存區(qū)控制相結(jié)合的方法來(lái)預(yù)測(cè)待下載視頻切片的碼率,這樣可以使得所選切片碼率既能滿足客戶端緩存實(shí)際情況,減少由緩存區(qū)溢出帶來(lái)的問(wèn)題,優(yōu)先保證了視頻流暢播放,又可以使所選碼率符合網(wǎng)絡(luò)帶寬實(shí)際變化情況,保證視頻質(zhì)量,極大的增強(qiáng)了用戶觀看體驗(yàn)。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。