專利名稱:一種對視頻信息進(jìn)行分段下載均衡的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,具體涉及一種對視頻信息進(jìn)行分段下載均衡的方法。
背景技術(shù):
近年來,隨著計算機(jī)網(wǎng)絡(luò)的普及,互聯(lián)網(wǎng)視頻業(yè)務(wù)得到了高速的發(fā)展。各個視頻網(wǎng)站的后端服務(wù)器中都存儲了海量的視頻或音頻信息,并推出相應(yīng)的網(wǎng)絡(luò)電視供應(yīng)客戶端在線觀看信息內(nèi)容。為了保證及時播放信息,需要充分利用網(wǎng)絡(luò)帶寬進(jìn)行快速下載,以提高客戶端在線觀看的流暢性。傳統(tǒng)的信息下載技術(shù)是單鏈接類型的,將要下載的信息在一個線程內(nèi)與服務(wù)器建立一條TCP鏈接,利用所述TCP鏈接從頭到尾遍歷下載的信息對象,將其存入本地客戶端。 其客戶端主機(jī)網(wǎng)絡(luò)輸入/輸出端口吞吐量和時間的關(guān)系如圖1所示,其中,橫向坐標(biāo)軸代表下載的時間,縱向坐標(biāo)軸代表主機(jī)網(wǎng)絡(luò)輸入/輸出端口吞吐量。單鏈接類型下載的缺陷在于,由于操作系統(tǒng)內(nèi)核的TCP緩沖區(qū)的存儲容量有限, TCP滑動窗口會控制輸入/輸出流量,因此,雖然信息傳輸?shù)倪^程較為穩(wěn)定,但是網(wǎng)絡(luò)輸入/ 輸出吞吐量遠(yuǎn)低于客戶端輸出口的網(wǎng)絡(luò)帶寬的大小,且如圖1所示,無法繼續(xù)提高,即當(dāng)下載時間到tl時,吞吐量達(dá)到最大值max,然后吞吐量不在隨著時間的增長繼續(xù)線性增長,而是保持不變。以網(wǎng)絡(luò)視頻業(yè)務(wù)為例,由于客戶端播放網(wǎng)絡(luò)視頻時需要高碼率(碼率就是數(shù)據(jù)傳輸時單位時間傳送的數(shù)據(jù)位數(shù),一般我們用的單位是Icbps,即千位每秒),例如720p、1080p 的高清視頻,傳統(tǒng)的單鏈接下載容易導(dǎo)致視頻無法保證播放的連續(xù)性。因此,需要對傳統(tǒng)的單鏈接類型進(jìn)行改進(jìn),將服務(wù)器端要下載的文件從邏輯上切分為若干段,客戶端與服務(wù)端同時建立多條鏈接,每條鏈接分別對應(yīng)不同的文件段下載,總計使用的帶寬為每條鏈接占用的帶寬的累加,
在實現(xiàn)文件分段下載時,首先想到的是多線程方式,即每個線程負(fù)責(zé)一個文件塊的下載。在單個CPU的情況下,多線程的“并發(fā)”只是邏輯上的“并發(fā)”,而不是物理上的“并發(fā)”。 操作系統(tǒng)以輪換方式為每個線程分配時間片,并負(fù)責(zé)線程的調(diào)度。這些都是要耗費(fèi)資源的。 而且多線程技術(shù)涉及到競爭、互斥等問題,若處理不當(dāng)非常容易導(dǎo)致邏輯上的錯誤。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種對視頻信息進(jìn)行分段下載均衡的方法,有效地占用主機(jī)帶寬,而且必須同時滿足保證視頻流暢播放并且保證多鏈路負(fù)載相對均衡?,F(xiàn)代的操作系統(tǒng)都在內(nèi)核層級中提供了對I/O多路復(fù)用,即同一工作線程內(nèi)多鏈路的支持。每條鏈路是獨(dú)立的,都在做數(shù)據(jù)包的I/O處理,數(shù)據(jù)塊在各自鏈路所屬的用戶空間緩沖區(qū)、內(nèi)核空間緩沖區(qū)、網(wǎng)絡(luò)協(xié)議棧發(fā)送緩沖區(qū)/接收緩沖區(qū)、網(wǎng)卡發(fā)送緩沖區(qū)/接收緩沖區(qū)之間來回拷貝。I/O多路復(fù)用在內(nèi)核中基本都是以事件驅(qū)動、Reactor等技術(shù)實現(xiàn), 并向應(yīng)用層提供了簡單的接口,如Iinux中的印oll、Select,windows中的IO完成端口等。因此從應(yīng)用層編程的角度來說,單線程多鏈路是非常容易實現(xiàn)的,且簡單易用,因為很多重要的工作都是由操作系統(tǒng)內(nèi)核來處理。因此可以使用單線程多鏈路或多線程多鏈路的方式來替代多線程。所述方法包括
a)在客戶端建立全局調(diào)度表,所述全局調(diào)度表包括已調(diào)度區(qū)和未調(diào)度區(qū);
b)在所述客戶端啟動對服務(wù)器端視頻信息的下載任務(wù),獲取所述服務(wù)器端視頻信息的文件大小N’和視頻碼率,已經(jīng)為文件分段大小指定一個最高的閾值U ;
c)在所述客戶端建立M條與所述服務(wù)器端的鏈接,M為正整數(shù),且大于等于2;
d)在所述客戶端為每條鏈接分配對應(yīng)的第一個下載任務(wù),將所述第一個下載任務(wù)指定下載的文件大小記為firstlen,此時,所述已調(diào)度區(qū)為;
e)在所述客戶端對每條鏈接上的數(shù)據(jù)進(jìn)行下載,當(dāng)?shù)贜(N大于等于1,且小于等于M) 條鏈接上的所述第一個下載任務(wù)下載完畢后,計算所述第N條鏈接上的帶寬;
f)計算出在保證所述視頻信息播放流暢的情況下,已經(jīng)當(dāng)前已經(jīng)安排下載的視頻信息全部播放完畢所需的時間T ;
g)根據(jù)所述時間T和所述第N條鏈接上的帶寬,計算第N條鏈接上的第二個下載任務(wù)的文件大小secondLen,且所述secondLen的大小不能超過所述閾值U ;
此時,所述已調(diào)度區(qū)為;
h)重復(fù)步驟e)至步驟g),直到所述服務(wù)器端的視頻信息全部下載完畢為止。優(yōu)選的是,所述第N條鏈接上的帶寬通過firstlen除以所述第N條鏈接下載所述第一個任務(wù)的時間獲得。優(yōu)選的是,所述已經(jīng)當(dāng)前已經(jīng)安排下載的視頻信息全部播放完畢所需的時間T通過當(dāng)前播放點對于已調(diào)度區(qū)終點firstLen*M的距離除了視頻碼率獲得。優(yōu)選的是,所述當(dāng)前播放點對于已調(diào)度區(qū)終點f irstLen*M的距離通過firstLen*M減去當(dāng)前已經(jīng)播放的視頻信息大小獲得。優(yōu)選的是,所述第二個下載任務(wù)的文件大小secondLen通過所述時間T乘以所述第N條鏈接上的帶寬獲得。優(yōu)選的是,所述最高的閾值U為視頻文件碼率大小的10倍。優(yōu)選的是,所述第二個下載任務(wù)的文件大小secondLen的取值范圍為大于等于所述時間T乘以所述第N條鏈接上的帶寬,且小于等于所述最高的閾值U。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于在保證視頻流暢播放的前提下,使得多鏈路負(fù)載相對均衡,因此,客戶端得到了較好的服務(wù)體驗。
為了使本發(fā)明便于理解,現(xiàn)在結(jié)合附圖描述本發(fā)明的具體實施例。圖1為客戶端主機(jī)網(wǎng)絡(luò)輸入/輸出端口吞吐量和時間的關(guān)系; 圖2為鏈接數(shù)M和帶寬的函數(shù)關(guān)系坐標(biāo)圖3為確定鏈接數(shù)M的算法流程圖。
具體實施例方式下面結(jié)合附圖和具體實施方式
對本發(fā)明作進(jìn)一步詳細(xì)描述。本發(fā)明的目的是設(shè)計一種文件分段下載調(diào)度均衡的方法,該方法的特點是在保證視頻流暢播放的前提下,采用單線程多鏈路的方式,實現(xiàn)多鏈路負(fù)載相對均衡,充分有效地占用主機(jī)帶寬。為了實現(xiàn)上述目的,本發(fā)明是通過如下技術(shù)方案來實現(xiàn)的
首先,為實現(xiàn)對文件分段的實時動態(tài)管理,引入全局調(diào)度表的概念。調(diào)度表分為已調(diào)度區(qū)和未調(diào)度區(qū),分別用來記錄已經(jīng)安排下載的文件分段和未被安排下載的文件分段??蛻舳顺绦驗槊總€已安排下載的文件分段分配一個下載任務(wù)(task),在任務(wù)中執(zhí)行指定文件分段的下載。每個任務(wù)包含一個定時器變量,用來計算從任務(wù)開始時到任務(wù)結(jié)束時耗費(fèi)的時間,以秒為單位。假設(shè)在一個下載任務(wù)中指定文件分段大小為Size (KB), 任務(wù)執(zhí)行耗費(fèi)的時間為%((秒),則可計算出該下載任務(wù)所處TCP鏈接上的當(dāng)前帶寬 Bandwidth
Bandwidth = Size / Sec (KB/秒)
每條鏈接上的帶寬值在文件下載期間都是動態(tài)變化的,后續(xù)被安排下載的文件分段大小與鏈接的當(dāng)前帶寬值密切相關(guān)。本發(fā)明的一個優(yōu)選實施例為,
步驟一,在未啟動下載時,服務(wù)器端和客戶端都不存在網(wǎng)絡(luò)鏈接,不存在下載任務(wù),此時,全局調(diào)度表為空。步驟二,啟動對客戶端選定的視頻文件的下載時,客戶端首先從服務(wù)器端獲取到文件的大小和視頻碼率,這里,我們標(biāo)記需要從服務(wù)器端下載的文件的大小為N比特,所述文件的視頻碼率為rate。步驟三,客戶端同時建立M條與服務(wù)器端的TCP鏈接,這里M為至少大于或等于 3,在本發(fā)明的方法執(zhí)行過程中,鏈接的數(shù)目一旦確定,就不會發(fā)生變化。這里以M = 3為示例。然后為每條已經(jīng)建立的鏈接都分配一個下載任務(wù),即每條鏈接上的第一個任務(wù),第一個任務(wù)指定下載的文件分段大小是預(yù)先定義的固定值,標(biāo)記為firstLen.
此時,全局調(diào)度表分為兩個區(qū)域,分別是已調(diào)度區(qū)和未調(diào)度區(qū),分為調(diào)度表的狀態(tài)是 已調(diào)度區(qū)。步驟四,每條鏈接上的數(shù)據(jù)執(zhí)行各自的下載任務(wù),互不干擾,設(shè)定經(jīng)過Sec秒之后,M條鏈接中的第N條(1 ^N^ M)鏈接上的任務(wù)率先執(zhí)行完畢,則由此可以計算出第N 條鏈接中的
Bandwidth = firstLen / Sec
步驟五,假設(shè)當(dāng)前視頻播放流暢,無緩沖,播放點位置為pos (當(dāng)前已經(jīng)播放的文件大小為KB),則當(dāng)前播放點距離已調(diào)度區(qū)終點的緩沖大小為dis 根據(jù)下述公式可以得出 dis = firstLen氺3-pos
因此,可以推導(dǎo)出,在保證客戶端播放流暢的情況下,已安排下載的視頻文件分塊全部被播放完畢所剩時間T為 T = dis/rate
艮口,時間T過后,若本地沒有后續(xù)視頻數(shù)據(jù)塊,播放將卡住。由此可算出為該鏈接上下一個下載任務(wù)指定的文件分段大小secondLen SecondLen = T氺Bandwidth。其中,SecondLen不是常數(shù),為防止secondLen過大導(dǎo)致網(wǎng)絡(luò)傳輸瞬間的抖動,為文件分段大小指定一個最高閾值,記為U,secondLen不可超過U。在客戶端程序中,設(shè)定U 的取值為視頻文件碼率大小的10倍
U = 10*rate
因此,secondLen 的取值為secondLen = Min { T氺Bandwidth,U } 此時調(diào)度表的狀態(tài)是所述已調(diào)度區(qū)為
;在所述客戶端對每條鏈接上的數(shù)據(jù)進(jìn)行下載,當(dāng)?shù)贜 (N大于等于1,且小于等于M)條鏈接上的所述第一個下載任務(wù)下載完畢后,計算所述第N條鏈接上的帶寬;計算出在保證所述視頻信息播放流暢的情況下,已經(jīng)當(dāng)前已經(jīng)安排下載的視頻信息全部播放完畢所需的時間T ;根據(jù)所述時間T和所述第N條鏈接上的帶寬,計算第N條鏈接上的第二個下載任務(wù)的文件大小secondLen,且所述secondLen的大小不能超過所述閾值U ; 此時,所述已調(diào)度區(qū)為
;重復(fù)步驟e)至步驟g),直到所述服務(wù)器端的視頻信息全部下載完畢為止。
2.一種如權(quán)利要求1所述的用于對視頻信息進(jìn)行分段下載均衡的方法,其特征在于 所述第N條鏈接上的帶寬通過firstlen除以所述第N條鏈接下載所述第一個任務(wù)的時間獲得。
3.—種如權(quán)利要求1所述的用于對視頻信息進(jìn)行分段下載均衡的方法,其特征在于, 所述已經(jīng)當(dāng)前已經(jīng)安排下載的視頻信息全部播放完畢所需的時間T通過當(dāng)前播放點對于已調(diào)度區(qū)終點firStLen*M的距離除了視頻碼率獲得。
4.一種如權(quán)利要求3所述的用于對視頻信息進(jìn)行分段下載均衡的方法,其特征在于, 所述當(dāng)前播放點對于已調(diào)度區(qū)終點firStLen*M的距離通過firStLen*M減去當(dāng)前已經(jīng)播放的視頻信息大小獲得。
5.一種如權(quán)利要求1所述的用于對視頻信息進(jìn)行分段下載均衡的方法,其特征在于, 所述第二個下載任務(wù)的文件大小secondLen通過所述時間T乘以所述第N條鏈接上的帶寬獲得。
6.一種如權(quán)利要求1所述的用于對視頻信息進(jìn)行分段下載均衡的方法,其特征在于, 所述最高的閾值U為視頻文件碼率大小的10倍。
7.—種如權(quán)利要求1所述的用于對視頻信息進(jìn)行分段下載均衡的方法,其特征在于, 所述第二個下載任務(wù)的文件大小secondLen的取值范圍為大于等于所述時間T乘以所述第 N條鏈接上的帶寬,且小于等于所述最高的閾值U。
8.—種如權(quán)利要求1 一 7所述的用于對視頻信息進(jìn)行分段下載均衡的方法,其特征在于,所述鏈接數(shù)M與所述帶寬成正態(tài)分布。
9.一種如權(quán)利要求1 一 8所述的用于對視頻信息進(jìn)行分段下載均衡的方法,其特征在于,所述鏈接數(shù)M取正態(tài)分布的μ值時,所述占用的帶寬達(dá)到最高點。
10.一種如權(quán)利要求1 一 9所述的用于對視頻信息進(jìn)行分段下載均衡的方法,其特征在于,所述方法在單線程中實現(xiàn)。
全文摘要
本發(fā)明旨在提供一種用于對視頻信息進(jìn)行分段下載均衡的方法,所述方法不僅可以在單線程下實現(xiàn),也可以在多線程下實現(xiàn)。在每個線程上,在客戶端建立下載視頻信息之前,根據(jù)設(shè)定的鏈接數(shù)量,在每段鏈接上建立一條下載任務(wù),并根據(jù)最先完成下載任務(wù)的鏈接上的實際情況,實時的決定下一個下載任務(wù),在保證客戶端能夠流程播放的前提下,實現(xiàn)多條鏈接上的網(wǎng)絡(luò)負(fù)載相對均衡,以達(dá)到最大程度的利用網(wǎng)絡(luò)帶寬的目的。
文檔編號H04N21/63GK102368833SQ20111038674
公開日2012年3月7日 申請日期2011年11月29日 優(yōu)先權(quán)日2011年11月29日
發(fā)明者李茗, 邵長松 申請人:樂視網(wǎng)信息技術(shù)(北京)股份有限公司