一種基于客戶端緩存的自適應流化方法
【技術領域】
[0001]本發(fā)明涉及網(wǎng)絡傳輸領域,特別涉及一種基于客戶端緩存的自適應流化方法。
【背景技術】
[0002]隨著互聯(lián)網(wǎng)的快速發(fā)展,以及人們對于視頻需求量的增長,基于視頻應用產(chǎn)生的網(wǎng)絡流量已經(jīng)占到互聯(lián)網(wǎng)總流量的60%以上。傳統(tǒng)的視頻流化技術已經(jīng)不能滿足人們的需求。自2009年3GP首次提出了其自適應流化標準DASH以來,自適應流化技術一直在飛速的發(fā)展。自適應流化技術的最終目的是給用戶帶來更好的視頻觀看體驗(QoE),提高用戶QoE,可以從以下幾點出發(fā):1)盡可能的避免播放停滯,即客戶端緩存下溢;2)啟動時間盡可能?。?)視頻的平均質(zhì)量盡可能高,盡可能最大化的利用有效帶寬;4)出現(xiàn)網(wǎng)絡擁塞的情況下,不要頻繁的進行碼率切換,一段質(zhì)量較差但穩(wěn)定的視頻比一段碼率頻繁切換的視頻帶來更好的用戶體驗。其中,第一點優(yōu)先級最高,第二點其次,第三和第四點可根據(jù)具體要求進行考慮。
[0003]傳統(tǒng)方法一般根據(jù)帶寬預測來進行自適應碼率的調(diào)整,如專利申請?zhí)枮?01110288958.1,名稱為“基于超文本闡述協(xié)議流化的多碼率媒體流自適應控制方法”的參考文獻1中,主要提出了一種基于帶寬預測的自適應流化方法,該方法通過統(tǒng)計每個分片文件的接收時間預測當前的可用帶寬,比較預測帶寬與上一分片文件碼率的大小關系,決定下一分片文件的碼率。但隨著互聯(lián)網(wǎng)應用的日益豐富,多個應用共享帶寬的情況越來越多,這就導致了網(wǎng)絡的波動也隨之增大。網(wǎng)絡波動較大時,帶寬的變化是隨機且不可預測的,基于帶寬預測的自適應流化方法的準確性也有待商榷。
[0004]對觀看視頻的用戶而言,在觀看視頻過程中,用戶關心的是緩沖區(qū)內(nèi)是否有足夠視頻分片文件,而不是緩沖區(qū)內(nèi)的視頻分片文件的碼率與當前帶寬是否匹配,所以以緩沖區(qū)為研究模型更加直接有效。目前國外也有以緩沖區(qū)為參考模型的學術論文,如名稱為:“An adaptive video streaming control system:Modeling, validat1n, andperformance evaluat1n”的參考文獻2。在該論文中,通過設置緩沖區(qū)可播放時長的參考值,在每次請求分片文件之前估計當前帶寬,計算下一分片文件碼率,使得緩沖區(qū)可播放時長逼近于上述參考值。但以上算法對網(wǎng)絡帶寬過于敏感,在網(wǎng)絡帶寬波動較大的情況下,視頻的碼率抖動也很大。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于克服現(xiàn)有技術中的自適應流化方法實用性不強、準確性不高的缺陷,從而提出一種從用戶的QoE出發(fā),以客戶端緩沖區(qū)為研究對象,即使在帶寬預測不準確時也能給用戶帶來相對較好的體驗的自適應流化方法。
[0006]為了實現(xiàn)上述目的,本發(fā)明提供了一種基于客戶端緩存的自適應流化方法,包括:
[0007]為客戶端的緩沖區(qū)定義兩種狀態(tài):緩沖區(qū)快速填充狀態(tài)、自適應碼率調(diào)整狀態(tài);
[0008]客戶端周期性地請求媒體分片文件并播放;其中,為當前請求的媒體分片文件根據(jù)緩沖區(qū)的當前狀態(tài)設定碼率并以所設定的碼率播放,包括:當緩沖區(qū)處于緩沖區(qū)快速填充狀態(tài)時,當前請求的媒體分片文件的碼率為所能提供的最低碼率,當緩沖區(qū)處于自適應碼率調(diào)整狀態(tài)時,當前請求的媒體分片文件的碼率根據(jù)包括緩沖區(qū)當前的可播放時長、當前可用帶寬、媒體分片文件的固定播放時長在內(nèi)的信息計算得到。
[0009]上述技術方案中,該方法進一步包括以下步驟:
[0010]步驟S1、客戶端啟動;
[0011]步驟S2、客戶端初始化;所述初始化包括:確定所請求的第一個媒體分片文件的序列號,確認所請求媒體分片文件的播放時長M,媒體分片文件的可選碼率,客戶端將緩沖區(qū)狀態(tài)設置為緩沖區(qū)快速填充狀態(tài),客戶端設置緩沖區(qū)的第一閾值Q_和第二閾值Q_ ;
[0012]步驟S3、判斷播放過程是否結束,如果結束,轉步驟S13,否則,轉步驟S4 ;
[0013]步驟S4、統(tǒng)計當前緩沖區(qū)內(nèi)可播放時長的大??;
[0014]步驟S5、根據(jù)Qi的值,更新緩沖區(qū)狀態(tài);
[0015]步驟S6、判斷當前緩沖區(qū)狀態(tài),若為緩沖區(qū)快速填充狀態(tài),則轉步驟S7,若為自適應碼率調(diào)整狀態(tài),則轉步驟S8 ;
[0016]步驟S7、將所請求的媒體分片文件的碼率設為媒體分片文件可選碼率中的最低碼率,然后轉步驟S9 ;
[0017]步驟S8、以自適應的方式計算所請求的媒體分片文件的碼率;
[0018]步驟S9、客戶端根據(jù)步驟S8所獲取的媒體分片文件的碼率獲取具有相應碼率的下一個媒體分片文件的路徑信息,根據(jù)這一路徑信息生成點播請求并向服務端發(fā)送;
[0019]步驟S10、客戶端開始接收服務端所發(fā)送的媒體分片文件;
[0020]步驟S11、客戶端接收完媒體分片文件后,統(tǒng)計媒體分片文件的大小Si和接收時間T1;
[0021]步驟S12、客戶端根據(jù)?\計算下一請求開始的時間Λ',等待Λ 時間后轉步驟S3 ;其中,Λ 計算方法包括:
[0022]若緩沖區(qū)可播放時長小于Q_,則Δ Tx設為0 ;
[0023]若緩沖區(qū)可播放時長大于Q_,且?\ > M,則Λ ?\為0 ;
[0024]若緩沖區(qū)可播放時長大于Q_,且?\彡M,則Λ 為Μ-' !;
[0025]步驟S13、播放結束。
[0026]上述技術方案中,在步驟S2中,客戶端向服務端請求播放列表,所述播放列表分為兩級,第一級播放列表中描述了媒體文件、媒體文件的Ν種可選碼率、媒體文件在一種可選碼率下所對應的第二級播放列表的路徑;第二級播放列表中描述了對應于一種碼率的媒體文件所包含的多個媒體分片文件的序列號、播放時長、路徑。
[0027]上述技術方案中,在步驟S4中,統(tǒng)計當前緩沖區(qū)內(nèi)可播放時長的大小Qi包括:當客戶端正在播放時,緩沖區(qū)可播放時長每秒減少一秒;當客戶端收到一個完整的媒體分片文件時,緩沖區(qū)可播放時長增加M。
[0028]上述技術方案中,所述步驟S5進一步包括:
[0029]步驟S501、開始更新緩沖區(qū)狀態(tài);
[0030]步驟S502、判斷當前緩沖區(qū)狀態(tài),若為緩沖區(qū)快速填充狀態(tài),則轉步驟S503,若為自適應碼率調(diào)整狀態(tài),則轉步驟S504 ;
[0031]步驟S503、判斷當前緩沖區(qū)可播放時長Qi是否大于Q_,若是,轉步驟S506,否則轉步驟S505 ;
[0032]步驟S504,判斷當前緩沖區(qū)可播放時長%是否小于媒體分片文件的固定播放時長M,若是,轉步驟S507,否則轉步驟S505 ;
[0033]步驟S505、保持當前緩沖區(qū)狀態(tài)不變,然后轉步驟S508 ;
[0034]步驟S506、將當前緩沖區(qū)狀態(tài)切換為自適應碼率調(diào)整狀態(tài),然后轉步驟S508 ;
[0035]步驟S507、將當前緩沖區(qū)狀態(tài)切換為緩沖區(qū)快速填充狀態(tài),然后轉步驟S508 ;
[0036]步驟S508,緩沖區(qū)狀態(tài)更新結束。
[0037]上述技術方案中,所述步驟S8進一步包括:
[0038]步驟S801、開始計算下一分片碼率;
[0039]步驟S802、統(tǒng)計當前緩沖區(qū)的可播放時長Qi,估計當前可用帶寬民;
[0040]步驟S803、判斷當前緩沖區(qū)可播放時長與第一閾值Q_、第二閾值Q_的關系,若大于第一閾值Q_,轉步驟S804,若小于第二閾值Q_,轉步驟S805,若在第一閾值Q_和第二閾值Q_之間,轉步驟S806 ;
[0041]步驟S804、根據(jù)公式& = RjCM+Q1-QmJ/M計算碼率,從媒體分片文件的可選碼率中選擇與最接近的碼率進行請求,然后轉步驟S810 ;
[0042]步驟S805、根據(jù)公式=民* (M+Q-Q^J /Μ計算碼率,從媒體分片文件的可選碼率中選擇與最接近的碼率進行請求,然后轉步驟S810 ;
[0043]步驟S806,判斷緩沖區(qū)當前可播放時長與上次統(tǒng)計的可播放時長的關系,若大于,轉步驟S807,若小于,轉步驟S809,若等于,轉步驟S808 ;
[0044]步驟S807、碼率增加一級,然后轉步驟S810 ;
[0045]步驟S808、碼率維持不變,然后轉步驟S810 ;
[0046]步驟S809、碼率降低一級,然后轉步驟S810 ;
[0047]步驟S810、碼率計算結束。
[0048]本發(fā)明的優(yōu)點在于:
[0049]1、本發(fā)明的方法在啟動播放時,通過降低Q_時間段內(nèi)的視頻碼率,將客戶端視頻播放的啟動時間從Qmin減少至Μ秒,減少了等待時間;
[0050]2、本發(fā)明的方法通過設置可播放時長的窗口 [Q_,Q_]消除了對帶寬預測準確性的依賴,降低了碼率切換的頻