本發(fā)明涉及視頻傳輸領(lǐng)域,特別涉及一種基于mpquic和預(yù)取的服務(wù)器端自適應(yīng)svc?abr方法。
背景技術(shù):
1、http自適應(yīng)式響應(yīng)流(http?adaptive?streaming,?has)是視頻傳輸?shù)闹饕夹g(shù)之一。在has系統(tǒng)中,服務(wù)端將視頻切分為等時長的段,再將這些段編碼為多個質(zhì)量等級。然后客戶端根據(jù)自適應(yīng)比特率(adaptive?bitrate,abr)算法來基于現(xiàn)有條件請求相應(yīng)的視頻段,以在網(wǎng)絡(luò)波動的情況下提供最佳的用戶體驗(yàn)質(zhì)量(quality?of?experience,?qoe)。
2、在使用可擴(kuò)展視頻編碼(scalable?video?coding,?svc)的has系統(tǒng)中,每個視頻分段都包含一個基礎(chǔ)層和多個增強(qiáng)層?;A(chǔ)層為最低播放條件,而增強(qiáng)層則需依賴基礎(chǔ)層和較低層的增強(qiáng)層進(jìn)行解碼,從而提升在客戶端的視頻播放質(zhì)量。這種分層結(jié)構(gòu)允許客戶端在視頻播放過程中,根據(jù)網(wǎng)絡(luò)狀態(tài)選擇相應(yīng)的質(zhì)量層來提高已緩沖片段質(zhì)量,從而減少了帶寬的浪費(fèi),實(shí)現(xiàn)了播放碼率的可伸縮性,使得視頻服務(wù)提供商可以更好地滿足用戶對于不同質(zhì)量的需求,同時也為實(shí)現(xiàn)更高的動態(tài)適應(yīng)性提供了技術(shù)基礎(chǔ)。
3、多路徑傳輸技術(shù)通過聚合多個路徑的帶寬,也被廣泛應(yīng)用于視頻傳輸優(yōu)化領(lǐng)域。然而,現(xiàn)有的abr算法通常在客戶端采用阻塞式的單請求方法,即只有在前一個請求完成后才會發(fā)起新的請求。如圖1、圖2所示,圖1中,在傳輸層層面,因?yàn)槁窂秸{(diào)度的原因,文件傳輸?shù)奈膊看蟾怕蕰驗(yàn)闊o數(shù)據(jù)發(fā)送導(dǎo)致路徑空閑。圖2中,在應(yīng)用層的層面,上一個請求結(jié)束與下一個請求到來之間,會至少存在一個傳輸空檔期。所以這種方法未能充分利用多路徑帶寬來提升視頻的qoe,?導(dǎo)致顯著的帶寬浪費(fèi),特別是在需要頻繁請求的svc場景下問題尤為突出。
4、由于直接進(jìn)行預(yù)取是一種粗粒度的決策方式,本質(zhì)上浪費(fèi)了svc細(xì)粒度的可拓展性功能,這導(dǎo)致預(yù)取與svc可拓展性之間存在矛盾,因此現(xiàn)有傳統(tǒng)svc的abr算法并沒有考慮預(yù)取的情況,而是每下載一個視頻層重新根據(jù)網(wǎng)絡(luò)狀況調(diào)整下載策略,故目前在svc場景下的abr算法還是存在未能有效利用多路徑帶寬資源,無法最大化用戶qoe的技術(shù)問題。
技術(shù)實(shí)現(xiàn)思路
1、為了解決目前svc場景下的abr算法不能利用多路徑帶寬資源的技術(shù)問題,本發(fā)明提供一種能夠有效利用多路徑帶寬進(jìn)行視頻傳輸,且能夠?qū)崿F(xiàn)細(xì)粒度調(diào)整以最大化用戶qoe的基于mpquic和預(yù)取的服務(wù)器端自適應(yīng)svc?abr方法。
2、為了實(shí)現(xiàn)上述技術(shù)目的,本發(fā)明的技術(shù)方案是,一種基于mpquic和預(yù)取的服務(wù)器端自適應(yīng)svc?abr方法,包括以下步驟:
3、步驟1,服務(wù)器端接收以并發(fā)形式來同時發(fā)起的多個視頻請求,所述的多個視頻請求由具有視頻播放需求的單個客戶端發(fā)起,每個視頻請求對應(yīng)視頻一個視頻片段中的一個視頻層,且視頻請求中包括視頻層的應(yīng)用層信息;
4、步驟2,服務(wù)器端提取視頻請求中的應(yīng)用層信息,并根據(jù)當(dāng)前的視頻流傳輸情況,來計(jì)算客戶端視頻播放緩沖區(qū)中可播放的視頻片段量bcur的大小,同時根據(jù)當(dāng)前的擁塞窗口和往返時間來估算可用帶寬;
5、步驟3,服務(wù)器端根據(jù)應(yīng)用層信息、bcur的大小和可用帶寬,選擇相應(yīng)的視頻層傳輸策略并進(jìn)行視頻流的選擇決策;其中視頻層傳輸策略是根據(jù)bcur來決定:當(dāng)bcur不足時,則優(yōu)先傳輸視頻層中的基礎(chǔ)層數(shù)據(jù);當(dāng)bcur適中時,則平衡傳輸視頻層中的基礎(chǔ)層與增強(qiáng)層數(shù)據(jù)以維持視頻質(zhì)量;當(dāng)bcur充足時,則優(yōu)先傳輸視頻層中的增強(qiáng)層數(shù)據(jù);視頻流的選擇決策則通過以下步驟完成:首先檢查bcur,如果bcur不足,則只將基礎(chǔ)層添加到傳輸隊(duì)列中以等待傳輸;否則根據(jù)應(yīng)用層信息來依次遍歷所有視頻請求以進(jìn)行篩選,然后計(jì)算通過篩選的視頻請求所需的帶寬,如果可用帶寬滿足所需帶寬,則將視頻請求對應(yīng)的視頻流添加到傳輸隊(duì)列中以等待傳輸;
6、步驟4,服務(wù)器將傳輸隊(duì)列中的視頻流發(fā)送至客戶端,當(dāng)客戶端的視頻播放出現(xiàn)卡頓時,?則服務(wù)器通過接收來自客戶端的自定義mpquic控制幀來獲取卡頓情況,并根據(jù)具體卡頓時長來推遲后續(xù)視頻片段的相應(yīng)截止時間以實(shí)現(xiàn)動態(tài)調(diào)整,直至整個視頻播放完畢。
7、所述的方法,所述的步驟1中,以并發(fā)形式來同時發(fā)起的多個視頻請求,其中每個視頻請求均是以從低到高的順序來依次請求對應(yīng)的視頻片段的各個質(zhì)量層級的視頻層;視頻層的應(yīng)用層信息包括視頻片段編號、請求的視頻層編號和視頻片段的截止時間。
8、所述的方法,所述的步驟2中,計(jì)算客戶端視頻播放緩沖區(qū)中可播放的視頻片段量bcur的大小包括:
9、依次遍歷所有的并發(fā)視頻請求,當(dāng)遇到第一個視頻基礎(chǔ)層尚未完全下載的視頻片段時,則以這個視頻片段的前一個視頻片段編號減去當(dāng)前正在播放的視頻片段編號得到的差,作為bcur。
10、所述的方法,某一個視頻層是否已完全下載是根據(jù)以下方式判斷:
11、當(dāng)滿足如下條件中的至少一個時,則判斷當(dāng)前視頻層已成功傳輸:
12、1)已收到同一視頻片段下更高視頻層請求;
13、2)?該視頻層的所有數(shù)據(jù)均已發(fā)送,且攜帶了該視頻層數(shù)據(jù)幀的包均已被確認(rèn)。
14、所述的方法,其特征在于,所述的步驟2中,根據(jù)當(dāng)前的擁塞窗口和往返時間來估算可用帶寬,是通過以下公式實(shí)現(xiàn):
15、;
16、其中,?bwavail表示可用帶寬,cwndpathi表示子路徑i的擁塞窗口,srttpathi表示子路徑i的平滑往返時間,n為子路徑的數(shù)量。
17、所述的方法,所述的步驟3中,根據(jù)客戶端視頻播放緩沖區(qū)的中的視頻片段量bcur來決定調(diào)度策略時,判斷bcur是否充足,是基于以下過程得出:
18、設(shè)定一個最大閾值bmax;當(dāng)bcur不大于bmax的三分之一時,則認(rèn)為bcur不足;當(dāng)bcur大于bmax的三分之二時,則認(rèn)為bcur充足,其他情況則認(rèn)為bcur適中。
19、所述的方法,在判斷bcur是否充足的同時,還包括對當(dāng)前允許傳輸?shù)囊曨l層最高層進(jìn)行更新的步驟:
20、設(shè)定參數(shù)lallowed來作為當(dāng)前允許傳輸?shù)囊曨l層最高層,其中l(wèi)allowed的初始值為客戶端緩沖區(qū)的平均播放碼率所對應(yīng)的層;
21、當(dāng)bcur不足時,則將lallowed更新為0,當(dāng)bcur適中時,則lallowed保持不變,當(dāng)bcur充足時,則將lallowed增加1。
22、所述的方法,所述的步驟3中,在進(jìn)行視頻流的選擇決策時,根據(jù)應(yīng)用層信息來依次遍歷所有視頻請求以進(jìn)行篩選,是從下一個要播放的視頻片段到當(dāng)前具有最大視頻片段編號的請求的順序,依次遍歷請求隊(duì)列中的片段,如果滿足以下任一條件,該請求將被丟棄:
23、①請求為空;
24、②當(dāng)前時間已超過截止時間;
25、③層編號超過lallowe所允許的視頻層最高層;
26、接下來計(jì)算,即傳輸請求流s所需的帶寬,當(dāng)計(jì)算得到的bwneed大于可用帶寬且s是增強(qiáng)層時,則放棄傳輸請求流s;最后,經(jīng)過了篩選的流將被添加到傳輸隊(duì)列sendstreams中,并更新已傳輸?shù)臄?shù)據(jù)量totalsend,其中s.remain為當(dāng)前請求流剩余的數(shù)據(jù)量,ddl為截止時間,now為當(dāng)前時間。
27、所述的方法,所述的步驟4中,客戶端自定義的mpquic控制幀中包括以下用于表示卡頓情況的信息:
28、用于初始化視頻和客戶端信息的固有參數(shù)video_initial,其中包括視頻片段個數(shù)、單視頻片段播放時長和客戶端緩沖區(qū)最大容量;
29、用于同步視頻播放情況和更新后續(xù)視頻段的截止時間video_synchronous,其中包括最新播放的視頻片段號和播放時間戳;
30、其中video_initial是在視頻播放開始時,在服務(wù)器和客戶端之間進(jìn)行同步,而video_synchronous是在每個視頻片段播放時在服務(wù)器和客戶端之間進(jìn)行同步。
31、本發(fā)明的技術(shù)效果在于,本發(fā)明以緩解多路徑場景下普遍存在的帶寬資源未充分利用的問題為出發(fā)點(diǎn),設(shè)計(jì)了一個位于服務(wù)器端執(zhí)行的abr方案,本發(fā)明可以快速響應(yīng)網(wǎng)絡(luò)環(huán)境的變化,提升了各子路徑的帶寬資源利用率。對比現(xiàn)有的abr方案,本發(fā)明能夠使整體視頻qoe提升40%,平均比特率提升28%,并且平均質(zhì)量切換次數(shù)相較于現(xiàn)有的abr方案降低15%。