專利名稱:一種p2p流媒體視頻數(shù)據(jù)傳輸調度方法
技術領域:
本發(fā)明屬于流媒體視頻數(shù)據(jù)傳輸調度方法,尤其涉及一種P2P流媒體視頻數(shù)據(jù)傳輸調度方法,用于在網(wǎng)絡上傳輸流媒體視頻數(shù)據(jù)。
背景技術:
為清楚地解釋現(xiàn)有的P2P流媒體視頻數(shù)據(jù)傳輸調度存在的問題,以下對所涉及的概念、原則給出解釋。 P2P傳輸方式即對等網(wǎng)絡(Peer-to-peer)傳輸方式,在傳輸方式上打破服務器/客戶端模式,增加了客戶端到客戶端的直接通信模式。對等網(wǎng)絡由管理服務器和對等節(jié)點構成,對等節(jié)點包括客戶端和提供原始數(shù)據(jù)的服務器。每個對等節(jié)點都處于同等的地位每個對等節(jié)點既作為客戶端(向其它對等節(jié)點請求數(shù)據(jù)),也可以作為其他對等節(jié)點的服務器(為其它對等節(jié)點提供數(shù)據(jù))。P2P傳輸方式是對分布式概念的成功拓展,它將傳統(tǒng)服務器/客戶端模式下的服務器負擔分配到對等網(wǎng)絡中的每一個對等節(jié)點上,每個對等節(jié)點都將承擔有限的存儲與計算任務。加入到P2P網(wǎng)絡中的對等節(jié)點越多,對等節(jié)點對P2P網(wǎng)絡貢獻的資源也就越多,服務質量也就越高。P2P傳輸方式已廣泛應用于眾多領域,尤其是具有較大數(shù)據(jù)流量的流媒體傳輸領域。 當前對等節(jié)點和鄰居對等節(jié)點目前需要描述的對等節(jié)點稱為當前對等節(jié)點,與其有連接關系的對等節(jié)點,稱為鄰居對等節(jié)點。 父節(jié)點向其它對等節(jié)點提供數(shù)據(jù)的對等節(jié)點,稱為接收數(shù)據(jù)對等節(jié)點的父節(jié)點。
子節(jié)點從其它對等節(jié)點獲取數(shù)據(jù)的對等節(jié)點,稱為提供數(shù)據(jù)對等節(jié)點的子節(jié)點。
P2P流媒體傳輸方式采用P2P傳輸方式進行流媒體傳輸。流媒體的特點是可以邊下載邊播放,因為經(jīng)過流媒體編碼后的要求就是從流媒體任一數(shù)據(jù)分段開始都可以獨立解碼,不必等到收到整個文件后才能播放。采用P2P傳輸方式進行流媒體傳輸?shù)臅r候,當前對等節(jié)點向父節(jié)點請求并下載此對等節(jié)點尚未下載的數(shù)據(jù)分段,同時向子節(jié)點提供此對等節(jié)點已經(jīng)下載的數(shù)據(jù)分段。因此,每個對等節(jié)點既是客戶端又是服務器,充分利用了網(wǎng)絡的空閑資源,最大限度利用網(wǎng)絡帶寬資源。而且,對等節(jié)點越多,下載的速度越快,流媒體播放效果越好。 心跳消息(Ke印-alive):對等節(jié)點周期性發(fā)給管理服務器的一種通知消息,用于通知管理服務器該對等節(jié)點仍處于活躍(Active)狀態(tài)。 對等節(jié)點列表(Peerlist):是數(shù)個對等節(jié)點IP地址的集合。 一般指所有處于活躍狀態(tài)的對等節(jié)點的IP地址集合。 管理服務器負責管理所有對等節(jié)點加入、離開、更新和檢測,并維護一個動態(tài)的對等節(jié)點列表。若管理服務器收到某一個對等節(jié)點加入請求,將該對等節(jié)點加入管理服務器的對等節(jié)點列表,然后將管理服務器中對等節(jié)點列表隨機返回給該對等節(jié)點;若收到某一個對等節(jié)點離開請求,將該對等節(jié)點從對等節(jié)點列表中刪除;若超過一定時間未收到某一個對等節(jié)點的心跳消息,則將該對等節(jié)點從對等節(jié)點列表中刪除。
流媒體源服務器提供原始的流媒體文件。若采用P2P方式傳輸,流媒體服務器將流媒體數(shù)據(jù)分割成一系列數(shù)據(jù)分段(Segment或Chunk)。每個數(shù)據(jù)分段都有一個序號,并按照播放時間順序,序號逐漸增大。流媒體的播放方向定義為數(shù)據(jù)分段序號增加的方向。
下載緩存內(nèi)存中一段存儲區(qū)域,用于存儲下載的P2P流媒體數(shù)據(jù)。因為互聯(lián)網(wǎng)采用數(shù)據(jù)分組(Packet)、盡最大努力(Best Effort)傳輸,實時流媒體數(shù)據(jù)將被分解為許多分組,由于網(wǎng)絡的動態(tài)變化,各個數(shù)據(jù)分組選擇的路由不一定相同,到達客戶端的時間延遲也就不相同,甚至先發(fā)的數(shù)據(jù)分組后到。因此使用下載緩存來彌補延遲和抖動的影響,并保證數(shù)據(jù)分組的正確順序,從而使流媒體數(shù)據(jù)能連續(xù)輸出,也不會因為網(wǎng)絡暫時擁塞而使播放出現(xiàn)停滯。下載緩存一般設置為可以存儲5 20秒的流媒體數(shù)據(jù)的內(nèi)存。例如,采用500K比特/秒的恒定速率時,則可以存儲最大為20秒的流媒體數(shù)據(jù)的下載緩存應該設置為20秒X500K比特/秒=10M比特。由于實時流媒體數(shù)據(jù)播放完的數(shù)據(jù)保存一段時間后可以丟棄,因此空出的下載緩存可以繼續(xù)下載新的數(shù)據(jù)。通常下載緩存的設置方法是,在對等節(jié)點的內(nèi)存中設置一個存儲區(qū)域和播放點。數(shù)據(jù)分段的序號比播放點所在數(shù)據(jù)分段的序號大的一段區(qū)域稱為未播放緩存,用于下載所需即將播放的流媒體數(shù)據(jù)。數(shù)據(jù)分段的序號比播放點所在數(shù)據(jù)分段的序號小的一段區(qū)域稱為已播放緩存,播放完之后的這些數(shù)據(jù)分段雖然對當前對等節(jié)點已沒有用處,但可以提供給子節(jié)點下載使用,所以播放完之后的數(shù)據(jù)分段仍將保存一段時間。當播放點不斷地沿下載緩存從頭到尾重復移動,移出已播放緩存的數(shù)據(jù)分段不斷丟棄,空出的存儲區(qū)域移入未播放緩存,繼續(xù)下載新的數(shù)據(jù)分段,這樣可以重復不斷,執(zhí)行對連續(xù)不斷的數(shù)據(jù)分段的下載。 緩存映射(Buffer M即,BM):緩存映射是一變量,用于反映下載緩存是否已下載各個數(shù)據(jù)分段。當某一數(shù)據(jù)分段已下載到緩存中該段存儲區(qū)域,在緩存映射的相應比特位中用"l"表示;當該段存儲區(qū)域未存儲數(shù)據(jù)分段,在緩存映射的相應比特位中用"O"表示;見
X. Zhang, J丄iu,B丄i,and P. Yum,DONet/Coolstreaming :A Data-driven Overlay NetworkforLive Media Streaming, IEEE INFOCOM,2005。 為提升視頻傳輸?shù)挠行裕鑼σ曨l進行編碼,國際上比較著名的編碼標準包括MPEG1/2/4/7、 H. 264等。以目前數(shù)字電視和網(wǎng)絡電視(IPTV)常采用的MPEG2編碼標準為例,視頻序列被分成一系列的圖像組(Group of Pictures, GOP),每個圖像組由一個I幀、數(shù)個P幀和數(shù)個B幀組成。(1) I幀(Intra-frame):—個圖像組一般只有一個I幀且第一幀一定是I幀,也叫"關鍵幀"。其采用幀內(nèi)編碼,可以獨立解碼,只要收到I幀,解碼器就可以獨立地將之恢復出來。(2)P幀(Predicted frame):采用前向預測編碼,即需要參考幀即已播放的I幀或P幀才能恢復。當參考幀丟失,當前P幀即使收到也無法解碼。(3)B幀(Bi-directionalframe):采用雙向預測編碼,即需要的參考幀不僅包括已播放的I幀或P幀,也需要沿流媒體的播放方向上未播放的P幀才能恢復。僅當雙向參考幀均收到后,B幀才能被正確解碼。因此, 一個圖像組中,I幀的重要性大于P幀,P幀的重要性大于B幀。由于B幀的雙向預測的特點,視頻序列的顯示順序和傳輸順序不一致。例如,某一個視頻顯示序列為[IBBPBBPBBPBBP] [IBBPBBP...],其中每個圖像組具有13幀。傳輸?shù)臅r候,需要將B幀排在其前向和后向參考幀之后,結構如[IPBB...],則上述的具有13幀圖像組的視頻序列的傳輸順序為[IPBBPBBPBBPBB] [IPBBPBB...]。而顯示端的解碼器輸出之后需要實施"幀重排",將順序恢復到原順序即可。
基本流(Elementary Stream, ES):視頻編碼和音頻編碼之后,輸出的是視頻或音頻基本流。 包基本流(Packetized Elementary Stream, PES):基本流經(jīng)過打包后成為包基本流,包基本流的包長度是可變的,視頻包通常是一種類型的幀一個包。 目前對P2P流媒體數(shù)據(jù)進行傳輸調度,需要解決的基本問題之一是數(shù)據(jù)分段的選擇和父節(jié)點的選擇,即在當前對等節(jié)點中選擇哪個父節(jié)點請求哪個數(shù)據(jù)分段。數(shù)據(jù)分段的選擇策略包括順序優(yōu)先原則和稀有優(yōu)先原則,前者是按照數(shù)據(jù)分段序號由小到大依次選擇需要發(fā)出請求的數(shù)據(jù)分段;后者是采用P2P文件下載BitTorrent協(xié)議中所采用的稀有優(yōu)先原則,見B Cohen. Incentives Build Robustness in BitTorrent. Workshop onEconomicsof Peer-to-Peer Systems, CA, USA,2003,即針對當前節(jié)點緩存中未下載的數(shù)據(jù)分段,統(tǒng)計擁有該數(shù)據(jù)分段的鄰居對等節(jié)點的數(shù)量,若對當前節(jié)點中某個未下載數(shù)據(jù)分段,擁有它的鄰居節(jié)點的數(shù)量最少,則最先請求這個數(shù)據(jù)分段。父節(jié)點的選擇策略主要包括隨機優(yōu)先原則,最近優(yōu)先原則,可用帶寬優(yōu)先原則等。隨機優(yōu)先原則是指,針對當前對等節(jié)點中所需下載的數(shù)據(jù)分段,在所有擁有該數(shù)據(jù)分段的鄰居對等節(jié)點中,隨機選擇一個鄰居對等節(jié)點作為父節(jié)點;最近優(yōu)先原則是指,針對當前節(jié)點中所需下載的數(shù)據(jù)分段,在所有擁有該數(shù)據(jù)分段的鄰居對等節(jié)點中,選擇地理位置最近或者距離跳數(shù)最小的一個鄰居對等節(jié)點作為父節(jié)點;可用帶寬優(yōu)先原則是指,針對當前節(jié)點中所需下載的數(shù)據(jù)分段,在當前對等節(jié)點的所有擁有該數(shù)據(jù)分段的鄰居對等節(jié)點中,選擇具有最大可用帶寬的一個鄰居對等節(jié)點作為父節(jié)點。 A. Vlavianos等提出BiToS協(xié)議,利用BitTorrent的下載技術來協(xié)助P2P流媒體數(shù)據(jù)的傳輸調度,見A. Vlavianos, M. Iliofotou, and M. Faloutsos, BiToS -EnhancingBittorrent for Supporting StreamingApplications, IEEE頂F0C0M, 2006,該協(xié)議將緩存劃分為2個區(qū)域,高優(yōu)先級區(qū)域和低優(yōu)先級區(qū)域,對高優(yōu)先級緩存區(qū)域中的數(shù)據(jù)分段,以概率P來請求下載,下載原則采用順序優(yōu)先原則或者稀有優(yōu)先原則;而對低優(yōu)先級緩存區(qū)域中的數(shù)據(jù)分段,以概率(1-P)來請求下載,下載原則采用稀有優(yōu)先原則;并指出當二個緩存區(qū)域均采用稀有優(yōu)先原則且概率P = 0. 8的時候,播放連續(xù)度最佳。 Zhou等提出基于混合策略的流媒體數(shù)據(jù)調度算法,見Yipeng Zhou, D. M. Chiu,J.C. S.Lui,A Simple Model for Analyzing P2P StreamingProtocols, IEEEInternational Conference on Network Protocols (ICNP'07) , pp. 226-235。該算法將下載緩存分為二個區(qū)域,靠近播放點的為高優(yōu)先級緩存,遠離播放點的區(qū)域為低優(yōu)先級緩存。在高優(yōu)先級緩存中的數(shù)據(jù)分段采用順序優(yōu)先原則(靠近播放點的數(shù)據(jù)分段先被請求下載)來實現(xiàn)對數(shù)據(jù)分段的選擇,父節(jié)點選擇策略采用隨機優(yōu)先原則。在低優(yōu)先級緩存中的數(shù)據(jù)分段采用稀有優(yōu)先原則。高優(yōu)先級緩存和低優(yōu)先級緩存的分界根據(jù)網(wǎng)絡狀態(tài)動態(tài)調整,即統(tǒng)計分界處數(shù)據(jù)分段的下載概率的平均值,當該值減小的時候,增大高優(yōu)先級緩存的長度,反之,則減小高優(yōu)先級緩存的長度。 Baccidchet等人提出了基于視頻幀(包括I幀、P幀和B幀)內(nèi)容的P2P流媒體數(shù)據(jù)調度策略,見P. Baccichet, J. Noh, E. Setton, and B. Girod, "Content-Aware P2P VideoStreaming with Low Latency, ,, IEEE Int. Conference on Multimedia and Expo, ICME,Beijing, China, July 2007, pp. 400-403。該算法提出將視頻幀按照內(nèi)容的重要程度賦予
8不同的權值。然后按照權值來進行依次調度,權值大的給予優(yōu)先調度。但是此算法沒有將下載緩存進行分區(qū)來對啟動時間和播放連續(xù)度達到最佳折衷。 P2P流媒體傳輸調度技術,將流媒體數(shù)據(jù)或文件分成許多數(shù)據(jù)分段,然后采用P2P傳輸方式進行傳輸。這些數(shù)據(jù)分段的時間長度一般在1 2秒,其字節(jié)大小可以是等長的(當采用恒定比特速率CBR的時候),也可以是非等長的(當采用變比特速率VBR的時候)。
但是,目前已有P2P流媒體視頻傳輸調度技術中,未將視頻幀的重要性不同和下載緩存分區(qū)的重要性不同結合起來,其缺點在于未考慮I幀重要性大于P幀和B幀,則I幀的丟失將引起該I幀所在圖像組內(nèi)連續(xù)的P幀和B幀的解碼困難,其造成一系列的錯誤擴散,將降低播放連續(xù)度,從而最終降低用戶的體驗質量(Quality of E鄧erience, QoE);未考慮下載緩存分區(qū)的重要性不同,不能兼顧低啟動時間和高播放連續(xù)度的最佳折衷。
發(fā)明內(nèi)容
本發(fā)明公開了一種P2P流媒體視頻數(shù)據(jù)傳輸調度方法,解決現(xiàn)有P2P流媒體視頻傳輸調度方法未考慮到視頻幀和下載緩存分區(qū)存在重要性程度不同的問題,從而有效提升播放連續(xù)度,進而提升用戶體驗質量。 為清楚闡述本發(fā)明,對本發(fā)明使用到的基本設置和符號標記作如下說明。
在P2P流媒體視頻數(shù)據(jù)傳輸中,流媒體源服務器按時間順序將流媒體視頻數(shù)據(jù)分割為一系列數(shù)據(jù)分段。視頻數(shù)據(jù)分段包括三類(1) I幀子數(shù)據(jù)分段,即含有I幀數(shù)據(jù)的包基本流;(2)P幀子數(shù)據(jù)分段,即含有P幀數(shù)據(jù)的包基本流;(3)B幀子數(shù)據(jù)分段,即含有B幀數(shù)據(jù)的包基本流。在編碼器的視頻輸出采用I幀子數(shù)據(jù)分段、P幀子數(shù)據(jù)分段和B幀子數(shù)據(jù)分段,并要求保證一個圖像組的結構采用IBBP或PBBP的結構,即一個圖像組中B幀子數(shù)據(jù)分段之后一定有一個P幀子數(shù)據(jù)分段。 圖像組數(shù)據(jù)分段每個圖像組數(shù)據(jù)分段由一個I幀子數(shù)據(jù)分段、數(shù)個P幀子數(shù)據(jù)分段和數(shù)個B幀子數(shù)據(jù)分段組成。
播放點序號指當前播放的圖像組數(shù)據(jù)分段的序號。
播放點前移方向指播放點按照圖像組數(shù)據(jù)分段序號增加的方向。 補償位為各個子數(shù)據(jù)分段最后一位,標記各個子數(shù)據(jù)分段是否執(zhí)行補償操作,賦
值為"1 "或"0", " 1 "表示對應的子數(shù)據(jù)分段已被執(zhí)行補償操作,"0"表示對應的子數(shù)據(jù)分
段未被執(zhí)行補償操作。 在每個對等節(jié)點中設置下載緩存。將下載緩存劃分為三個區(qū)域,大于播放點序號的一段區(qū)域分為兩小段,按照播放點前移方向依次為緊急下載緩存和非緊急請求下載緩存,用于下載所需即將要播放的流媒體視頻數(shù)據(jù),小于播放點序號的一段區(qū)域稱為已播放緩存,用于存儲已播放完的流媒體視頻數(shù)據(jù)。已播放緩存的長度為10 20個圖像組數(shù)據(jù)分段,播放點設置在緊急下載緩存的起始點,緊急下載緩存長度為k,非緊急請求下載緩存長度為n-k,二者長度總和為n, n設置為40 160個圖像組數(shù)據(jù)分段的長度,其中緊急下載緩存長度初始值設置為20 40個圖像組數(shù)據(jù)分段的長度。
為便于闡述,每個數(shù)據(jù)分段采用如下編號方法 編號為u的I幀子數(shù)據(jù)分段(u的起始序號為1),記為I (u),表示隸屬于第u個圖像組數(shù)據(jù)分段的子數(shù)據(jù)分段;P幀子數(shù)據(jù)分段記為P (u, v),表示隸屬于第u個圖像組數(shù)據(jù)分段中的第v個P幀子數(shù)據(jù)分段,B幀子數(shù)據(jù)分段記為B(u, v, w),表示隸屬于第u個圖像組數(shù)據(jù)分段中的,第v個P幀子數(shù)據(jù)分段之前,沿播放點前移方向的第w個B幀子數(shù)據(jù)分段。
例如前13個視頻子數(shù)據(jù)分段,隸屬于編號為8的圖像組數(shù)據(jù)分段,后13個視頻子數(shù)據(jù)分段,隸屬于編號為9的圖像組數(shù)據(jù)分段,顯示順序為 [IBBPBBPBBPBBP][IBBPBBPBBPBB P],其編號如下
[1(8) ,B (8, 1, 1) ,B(8, 1,2) ,P(8, 1) ,B(8,2' 1) , B (8, 2, 2) , P (8, 2) , B (8, 3, 1) ,B(8,3,2) ,P(8,3) ,B(8,4, 1) , B (8, 4, 2) , P (8, 4) ] [1(9) ,B (9, 1, 1) , B (9, 1, 2) , P (9, 1) ,B(9,2' 1),B(9,2'2) , P(9,2) , B(9,3, 1) , B(9,3'2) , P(9,3) , B(9,4, 1) , B(9,4'2) , P(9,4)];
其傳輸順序為 [IPBBPBBPBBPBB][IPBBPBBPBBPB B],編號如下
[1(8) ,P (8, 1) ,B(8, 1, 1) ,B(8, 1, 2) , P (8, 2) , B (8, 2, 1) , B (8, 2, 2) , P (8, 3) , B (8, 3,
1) , B(8,3'2) , P(8,4) , B(8,4,D, B(8,4'2)] [I (9) , P(9,l)' B (9, 1, 1) , B (9, 1, 2) , P(9,2),B(9,2, 1) , B(9,2'2) , P(9,3) , B(9,3, 1) , B(9,3'2) , P(9,4) , B(9,4, 1) , B(9,4'2)]。 流媒體源服務器中將針對每個數(shù)據(jù)分段,按照上面的原則,標記唯一的編號,在后
續(xù)的發(fā)明步驟中,若檢測到某個編號不存在,也就意味著這個子數(shù)據(jù)分段是不存在。 本發(fā)明的下載緩存映射,采用子數(shù)據(jù)分段的編號加下標m命名。例如前述例子中,
下載緩存映射命名為 [Im(8) , Pm(8, 1) , Bm(8, 1, 1) , Bm(8, 1,2) , Pm(8,2) , Bm(8,2, 1) , Bm(8,2,2) , Pm(8,3),B邁(8,3' 1) , B邁(8,3'2) , Pm(8,4) , B邁(8,4' 1) , B邁(8,4,2)] [1邁(9) , Pm(9, 1) , Bm(9, 1, 1) , Bm(9,1,2) , Pm(9,2) , Bm(9,2, 1) , B邁(9,2'2) , Pm(9,3) , Bm(9,3, 1) , B邁(9,3'2) , Pm(9,4) , Bm(9,4, 1),B邁(9,4,2)]; 給變量賦值為"1"或"0", " 1"表示所對應的視頻數(shù)據(jù)分段已被下載,"0"表示所對應的視頻數(shù)據(jù)分段未被下載; 例如,前述提及的例子中的緩存映射的值當前分別為 [1,1,1,1,0,0,0,0,0,0,0,0,0][1,l,O,O,l,O,O,O,O,O,O,O,O]; 表示I(8),P(8,1),B(8,1,1),B(8,1,2),I(9),P(9,1)和P(9,2)當前已下載;P(8,
2) , B(8,2, 1) , B(8,2'2) , P(8,3) , B(8,3, 1) , B(8,3'2) , P(8,4) , B(8,4, 1) , B(8,4'2) , B(9,1, 1) , B(9, 1,2) , B(9,2, 1) , B(9,2'2) , P(9,3) , B(9,3, 1) , B(9,3'2) , P(9,4) , B(9,4, 1)和B(9,4,2)當前未下載。 用變量Pmax表示隸屬于某個圖像組數(shù)據(jù)分段中含有的P幀子數(shù)據(jù)分段的最大數(shù)目;用變量Bmax表示隸屬于某個圖像組數(shù)據(jù)分段中含有的I幀子數(shù)據(jù)分段與P幀子數(shù)據(jù)分段之間,和P幀子數(shù)據(jù)分段與P幀子數(shù)據(jù)分段之間的B幀子數(shù)據(jù)分段的最大數(shù)目。
本發(fā)明所采用的時間間隔的含義說明 T。連接間隔,指對等節(jié)點定時連接管理服務器的時間間隔,T。設置為20 40秒; 1\ :存活時間,指管理服務器中對等節(jié)點列表中某個對等節(jié)點存活時間,若超過該
存活時間,仍未收到該對等節(jié)點的心跳消息,將此對等節(jié)點從管理服務器對等節(jié)點列表中
刪除。由管理服務器中地址存活定時器所采用;1\設置為(2 6) XT。; T2 :交換間隔,指對等節(jié)點之間交換緩存映射的時間間隔,T2設置為1 2秒; T3 :請求發(fā)送間隔,對等節(jié)點發(fā)送幀請求之間的時間間隔,T3設置為l/(子數(shù)據(jù)分
10段播放速率X (1 1.5)); L:緊急請求重發(fā)間隔,針對緊急下載緩存中對某一個子數(shù)據(jù)分段執(zhí)行緊急請求下載過程,在這個TJ司隔內(nèi)未收到應答,則對該子數(shù)據(jù)分段重新執(zhí)行一次緊急請求下載過程。T4設置為(5 10) X (1/子數(shù)據(jù)分段播放速率); T5:非緊急請求重發(fā)間隔,針對非緊急請求下載緩存中對某一個子數(shù)據(jù)分段執(zhí)行非緊急請求下載過程,在這個T5間隔內(nèi)未收到應答,則對該子數(shù)據(jù)分段重新執(zhí)行一次非緊急請求下載過程。T5設置為(10 15) X (1/子數(shù)據(jù)分段播放速率);
T6 :播放點前移間隔,指在下載緩存中播放點之前有連續(xù)數(shù)據(jù)情況下,播放點向前移動的時間間隔,T6設置為l/(圖像組數(shù)據(jù)分段播放速率); IV:分界調整間隔,指緊急下載緩存與非緊急請求下載緩存之間分界調整的時間
間隔,1V設置為20 50秒; p :指當前對等節(jié)點的播放點; 本發(fā)明的一種P2P流媒體數(shù)據(jù)傳輸調度方法,其步驟包括
—、初始化步驟,執(zhí)行以下子步驟 1. 1當前對等節(jié)點進入P2P網(wǎng)絡,按連接間隔T。定時向管理服務器發(fā)心跳消息;同時從管理服務器的對等節(jié)點列表中隨機獲取^個對等節(jié)點,若管理服務器對等節(jié)點列表中對等節(jié)點個數(shù)不足^個,則從管理服務器對等節(jié)點列表中獲取所有的對等節(jié)點;若所獲取的對等節(jié)點在當前對等節(jié)點自身的對等節(jié)點列表中不存在,則增加入當前對等節(jié)點自身的對等節(jié)點列表中;K = 10 50 ; 管理服務器收到各對等節(jié)點的心跳消息時,若此對等節(jié)點不在管理服務器對等節(jié)
點列表中,則將此對等節(jié)點加入管理服務器對等節(jié)點列表中,并在管理服務器對等節(jié)點列
表中開啟此對等節(jié)點對應的地址存活定時器;若此對等節(jié)點已在管理服務器對等節(jié)點列表
中,則將管理服務器對等節(jié)點列表中該對等節(jié)點的地址存活定時器清零; 當管理服務器對等節(jié)點列表中某對等節(jié)點對應的地址存活定時器存活時間1\到
達,管理服務器仍未收到該對等節(jié)點的心跳信息,則在管理服務器的對等節(jié)點列表中刪除
該對等節(jié)點; 1. 2當前對等節(jié)點根據(jù)自身的對等節(jié)點列表,連接鄰居對等節(jié)點,每隔一個交換間隔T2,向鄰居對等節(jié)點互相交換各自的緩存映射;從所獲取的所有鄰居對等節(jié)點的緩存映射中,獲得每個鄰居對等節(jié)點中已下載的連續(xù)的I幀子數(shù)據(jù)分段的最大序號Gi, i表示第i個鄰居對等節(jié)點; 1. 3確定當前對等節(jié)點的起始播放點p =
N2
,若P小于l,則令P二 1,
轉步驟二 ;^為當前對等節(jié)點自身的對等節(jié)點列表中鄰居對等節(jié)點個數(shù);^為整數(shù),從5 10中隨機選??; 二、播放啟動步驟,執(zhí)行以下子步驟
0065] 2. 1在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的I幀子數(shù)據(jù)分段執(zhí)
行緊急請求下載,過程為 2. 1. 1置i = 1 ; 2. 1.2判斷緩存映射中是否存在I(p+i)幀子數(shù)據(jù)分段、且Im(p+i)的值等于0,是則執(zhí)行過程2. 1. 3,否則執(zhí)行過程2. 1. 4 ; 2. 1. 3判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對I (p+i)幀子數(shù)據(jù)分段的緊急請 求下載過程,再執(zhí)行過程2. 1. 4,否則直接執(zhí)行過程2. 1. 4 ; 2. 1. 4置i = i+l,判斷是否i《k,是則執(zhí)行過程2. 1. 2,否則執(zhí)行子步驟2. 2, k 為緊急下載緩存長度; 2. 2在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的P幀子數(shù)據(jù)分段執(zhí) 行緊急請求下載,過程為
2.2.1置j二l;
2. 2. 2置i = 1 ; 2.2.3判斷緩存映射中是否存在P((p+i), j)幀子數(shù)據(jù)分段、且Pm((p+i), j)的值 等于0,是則執(zhí)行過程2. 2. 4,否則執(zhí)行過程2. 2. 5 ; 2.2.4判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對P((p+i), j)幀子數(shù)據(jù)分段的
緊急請求下載過程,再執(zhí)行過程2. 2. 5,否則直接執(zhí)行過程2. 2. 5 ; 2. 2. 5置i = i+l,判斷是否i《k,是則轉過程2. 2. 3,否則執(zhí)行過程2. 2. 6 ; 2. 2. 6置j = j+l,判斷是否j《P^,是則轉過程2. 2. 2,否則執(zhí)行子步驟2. 3 ; 2. 3在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的B幀子數(shù)據(jù)分段執(zhí)
行緊急請求下載,過程為 2. 3. 1置m = 1 ; 2. 3. 2置j = 1 ; 2. 3. 3置i = 1 ; 2. 3. 4判斷緩存映射中是否存在B((p+i) , j, m)幀子數(shù)據(jù)分段、且Bm ((p+i) , j, m) 的值等于0,是則執(zhí)行過程2. 3. 5,否則執(zhí)行過程2. 3. 6 ; 2.3.5判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對B((p+i), j, m)幀子數(shù)據(jù)分段 的緊急請求下載過程,再執(zhí)行過程2. 3. 6,否則直接執(zhí)行過程2. 3. 6 ;
2. 3. 6置i = i+l,判斷是否i《k,是則轉過程2. 3. 4,否則執(zhí)行過程2. 3. 7 ;
2. 3. 7置j = j+l,判斷是否j《P^,是則轉過程2. 3. 3,否則執(zhí)行過程2. 3. 8 ;
2. 3. 8置m = m+l,判斷是否m《Bmax,是則轉過程2. 3. 2,否則執(zhí)行子步驟2. 4 ;
2.4判斷緊急下載緩存中子數(shù)據(jù)分段的緩存映射的值是否全部為l,是則轉步驟 三,否則轉子步驟2. 1 ; 三、正常播放步驟,包括以下子步驟
3. 1前移播放點,p = p+1 ; 3. 2判斷P幀或B幀子數(shù)據(jù)分段補償位是否為1 ,是則先將對應的P幀或B幀子數(shù) 據(jù)分段緩存映射賦值為O,再將對應的P幀或B幀子數(shù)據(jù)分段補償位賦值為O,執(zhí)行子步驟 3. 3 ;否則直接執(zhí)行子步驟3. 3 ; 3. 3在當前對等節(jié)點中,對非緊急下載緩存中I幀子數(shù)據(jù)分段執(zhí)行非緊急請求下 載,過程為 3. 3. 1置i = 1 ; 3. 3. 2執(zhí)行對I幀子數(shù)據(jù)分段的非緊急請求下載過程; 3. 3. 3置i = i+l,判斷是否i《n-k,是則轉過程3. 3. 2 ;否則執(zhí)行子步驟3. 4 ;
3. 4在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的I幀子數(shù)據(jù)分段執(zhí)
行緊急請求下載,過程為 3. 4. 1置i = 1 ; 3.4.2判斷緩存映射中是否存在I(p+i)幀子數(shù)據(jù)分段、且Im(p+i)的值等于0,是 則執(zhí)行過程3. 4. 3,否則執(zhí)行過程3. 4. 4 ; 3. 4. 3判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對I (p+i)幀子數(shù)據(jù)分段的請求下 載過程并執(zhí)行過程3. 4. 4,否則直接執(zhí)行過程3. 4. 4 ; 3. 4. 4置i = i+l,判斷是否i《k,是則執(zhí)行步驟3. 4. 2,否則執(zhí)行子步驟3. 5 ;
3. 5在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的P幀子數(shù)據(jù)分段執(zhí) 行緊急請求下載,過程為
3. 5. 1置j = 1 ;
3. 5. 2置i = 1 ; 3.5.3判斷緩存映射中是否存在P((p+i), j)幀子數(shù)據(jù)分段、且Pm((p+i), j)的值 等于0,是則執(zhí)行過程3. 5. 4,否則執(zhí)行過程3. 5. 5 ; 3. 5. 4判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對P ((p+i) , j)幀子數(shù)據(jù)分段的請 求下載過程并執(zhí)行過程3. 5. 5,否則直接執(zhí)行過程3. 5. 5 ; 3. 5. 5置i = i+l,判斷是否i《k,是則轉過程3. 5. 3,否則執(zhí)行過程3. 5. 6 ; 3. 5. 6置j = j+l,判斷是否j《P^,是則轉過程3. 5. 2,否則執(zhí)行子步驟3. 6 ; 3. 6在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的B幀子數(shù)據(jù)分段執(zhí)
行緊急請求下載,過程為 3. 6. 1置m = 1 ; 3. 6. 2置j = 1 ; 3. 6. 3置i = 1 ; 3. 6. 4判斷緩存映射中是否存在B((p+i) , j, m)幀子數(shù)據(jù)分段、且Bm((p+i) , j, m) 的值等于0,是則執(zhí)行過程3. 6. 5,否則執(zhí)行過程3. 6. 6 ; 3.6.5判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對B((p+i), j, m)幀子數(shù)據(jù)分段 的請求下載過程并執(zhí)行過程3. 6. 6,否則直接執(zhí)行過程3. 6. 6 ; 3. 6. 6置i = i+l,判斷是否i《k,是則轉過程3. 6. 4,否則執(zhí)行過程3. 6. 7 ;
3. 6. 7置j = j+l,判斷是否j《P^,是則轉過程3. 6. 3,否則執(zhí)行過程3. 6. 8 ;
3. 6. 8置m = m+l,判斷是否m《B^,是則轉過程3. 6. 2,否則執(zhí)行子步驟3. 7 ;
3. 7判斷分界調整間隔T7是否到達,是則轉子步驟3. 8,否則轉子步驟3. 9 ;
3.8統(tǒng)計緊急下載緩存中I(p+k-l)幀子數(shù)據(jù)分塊下載成功概率的平均值,再判斷 該平均值是否小于分塊調整閾值,是則將緊急下載緩存的長度k增加1,轉子步驟3. 9 ;否則 將緊急下載緩存的長度k減去1,轉子步驟3. 9 ;所述分塊調整閾值為0. 3 0. 5,為0. 3時, 調整靈敏度較小,為0. 5時,調整靈敏度較大; 3. 9管理服務器判斷當前對等節(jié)點的存活時間1\是否到達,是則轉子步驟3. 10, 否則轉子步驟3. 11 ; 3. 10管理服務器判斷是否收到當前對等節(jié)點心跳消息,是則轉子步驟3. ll,否則 管理服務器將該對等節(jié)點從管理服務器對等節(jié)點列表中刪除,傳輸調度方法結束;
13
3. 11當前對等節(jié)點判斷播放點前移間隔Te是否到達,是則轉子步驟3. 12,否則轉 子步驟3. 3 ; 3. 12判斷播放點處的圖像組數(shù)據(jù)分段內(nèi)各子數(shù)據(jù)分段緩存映射是否全為l,是則 執(zhí)行子步驟3. 1 ;否則判斷緩存映射為0的子數(shù)據(jù)分段的類型1幀子數(shù)據(jù)分段轉子步驟 3. 1, P幀子數(shù)據(jù)分段轉過程3. 12. 1, B幀子數(shù)據(jù)分段轉過程3. 12. 2 ; 3. 12. 1用該P幀子數(shù)據(jù)分段前面最相鄰的已下載的I幀子數(shù)據(jù)分段或P幀子數(shù)據(jù) 分段替代該未下載的P幀子數(shù)據(jù)分段,將該P幀子數(shù)據(jù)分段對應的緩存映射賦值為l,該P 幀子數(shù)據(jù)分段補償位賦值為1,轉子步驟3. 1 ; 3. 12. 2用該B幀子數(shù)據(jù)分段前面最相鄰的已下載的I幀子數(shù)據(jù)分段或,P幀子數(shù) 據(jù)分段替代未下載的B幀子數(shù)據(jù)分段,該B幀子數(shù)據(jù)分段對應的緩存映射賦值為1,該B幀 子數(shù)據(jù)分段補償位賦值為l,執(zhí)行子步驟3. 1。
所述的P2P流媒體視頻數(shù)據(jù)傳輸調度方法,其特征在于 所述播放啟動步驟和正常播放步驟中,當前對等節(jié)點對I、 P或B幀特定編號子數(shù) 據(jù)分段的緊急請求下載過程為 Jl.根據(jù)周期性更新獲得的最新緩存映射,隨機選擇具有該子數(shù)據(jù)分段的鄰居對 等節(jié)點作為父節(jié)點,執(zhí)行過程J2 ; J2.向該父節(jié)點發(fā)送一個該子數(shù)據(jù)分段的緊急下載請求,執(zhí)行過程J3; J3.判斷緊急請求重發(fā)間隔T4是否到達,是則執(zhí)行過程J4,否則結束此特定編號
子數(shù)據(jù)分段下載過程; J4.判斷待下載特定編號子數(shù)據(jù)分段是否已下載,是則將此特定子數(shù)據(jù)分段對應 的緩存映射賦值為l,結束此特定編號子數(shù)據(jù)分段下載過程,否則執(zhí)行過程Jl。
所述正常播放步驟中,當前對等節(jié)點對某個I幀子數(shù)據(jù)分段非緊急請求下載過程 為 Fl.根據(jù)周期性更新獲得的鄰居對等節(jié)點最新緩存映射,當前對等節(jié)點對每個緩 存映射為0的I幀子數(shù)據(jù)分段,計算擁有它的鄰居對等節(jié)點數(shù)量& ; F2.當前對等節(jié)點選擇最小的N4值所對應的I幀子數(shù)據(jù)分段,若最小的N4值所對
應的I幀子數(shù)據(jù)分段多于一個,則選擇離播放點最近的I幀子數(shù)據(jù)分段; F3.根據(jù)最新緩存映射,當前對等節(jié)點找到擁有該I幀子數(shù)據(jù)分段的鄰居對等節(jié)
點,隨機選擇其中一個作為父節(jié)點,向該父節(jié)點發(fā)送對此I幀子數(shù)據(jù)分段的非緊急下載請
求; F4.當前對等節(jié)點判斷非緊急請求重發(fā)間隔Ts是否到達,是則轉過程F5,否則結 束此子數(shù)據(jù)分段下載過程; F5.當前對等節(jié)點判斷所請求的幀子數(shù)據(jù)分段是否已下載,是則將此I幀子數(shù)據(jù) 分段對應的緩存映射賦值為l,結束此I幀子數(shù)據(jù)分段下載過程,否則轉過程F3。
本發(fā)明對播放點實施了應急補償機制,在播放的時候對未被下載的P幀子數(shù)據(jù)分 段或B幀子數(shù)據(jù)分段進行補償操作,將對應的緩存映射標記為l,當移入已播放緩存之后,
對應的緩存映射仍舊設置成為o。當收到該原始子數(shù)據(jù)分段后,將收到的該原始子數(shù)據(jù)分段
覆蓋到相應的經(jīng)過補償?shù)淖訑?shù)據(jù)分段處,因此當前對等節(jié)點能夠為其子節(jié)點提供準確的數(shù) 據(jù),避免錯誤數(shù)據(jù)的擴散。
本發(fā)明優(yōu)先請求調度I幀子數(shù)據(jù)分段,其次是P幀子數(shù)據(jù)分段,最后是B幀子數(shù)據(jù) 分段,可以在相同的丟包率情況下,優(yōu)先請求下載相對重要的I幀子數(shù)據(jù)分段,因此能夠保 持較好的播放連續(xù)度;下載緩存中,將在緊急下載緩存中依次對I幀子數(shù)據(jù)分段、P幀子數(shù) 據(jù)分段和B幀子數(shù)據(jù)分段分別沿播放點前移方向進行順序調度和在非緊急下載緩存中對I 幀子數(shù)據(jù)分段按照稀有優(yōu)先原則調度相結合的方式。同時,播放緩存中對緊急下載緩存和 非緊急下載緩存兩個區(qū)域的邊界可動態(tài)調整,能夠動態(tài)適應網(wǎng)絡環(huán)境的變化,因此可以在 減少啟動時間、增加播放連續(xù)度以及可擴展性上達到最佳折衷。
圖1為本發(fā)明的流程框圖。
具體實施例方式
以下結合附圖及實施例,對本發(fā)明進一步說明。
T。設置為30秒;
T。設置為6XT。; L:設置為1.5秒; T3 :設置為1/(子數(shù)據(jù)分段播放速率X 1. 5);
T4 :設置為8X (1/子數(shù)據(jù)分段播放速率);
T5 :設置為12X (1/子數(shù)據(jù)分段播放速率);
T6 :設置為l/(圖像組數(shù)據(jù)分段播放速率);
1V:設置為40秒; 下載緩存長度n設置為40,緊急下載緩存長度k初始值設置為20。
如圖1所示,為本發(fā)明的流程圖,其步驟為
—、初始化步驟,執(zhí)行以下子步驟 1. 1、當前對等節(jié)點加入當前P2P網(wǎng)絡,周期性連接服務器,獲得并更新鄰居對等 節(jié)點列表,并與鄰居節(jié)點連接A取值為30 ; 1. 2、當前對等節(jié)點周期性地與連接的鄰居對等節(jié)點交換緩存映像信息;
1. 3、確定當前對等節(jié)點的起始播放點;N3取值為6 ;
二、播放啟動步驟,執(zhí)行以下子步驟 2. 1、在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中未下載的I幀子數(shù)據(jù) 分段執(zhí)行緊急請求下載; 2. 2、在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中未下載的P幀子數(shù)據(jù) 分段執(zhí)行緊急請求下載; 2. 3、在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中未下載的B幀子數(shù)據(jù) 分段執(zhí)行緊急請求下載; 2. 4、判斷緊急下載緩存中子數(shù)據(jù)分段緩存映射是否全部為l,是則轉步驟3. l,否 則轉步驟2. 1 ; 三、正常播放步驟,包括以下子步驟
3. 1、前移播放點,p = p+1 ;
3. 2、判斷P幀或B幀子數(shù)據(jù)分段補償位是否為1 ,是則先將對應的P幀或B幀子數(shù) 據(jù)分段緩存映射賦值為O,再將對應的P幀或B幀子數(shù)據(jù)分段補償位賦值為O,執(zhí)行子步驟 3. 3 ;否則直接執(zhí)行子步驟3. 3 ; 3. 3、在當前對等節(jié)點中,對非緊急下載緩存中未下載的I幀子數(shù)據(jù)分段執(zhí)行非緊 急請求下載; 3.4、在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中未下載的I幀子數(shù)據(jù) 分段執(zhí)行緊急請求下載; 3. 5、在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中未下載的P幀子數(shù)據(jù) 分段執(zhí)行緊急請求下載; 3. 6、在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中未下載的B幀子數(shù)據(jù) 分段執(zhí)行緊急請求下載; 3. 7、判斷分界調整間隔T7是否到達,是則轉子步驟3. 8,否則轉子步驟3. 9 ;
3.8、統(tǒng)計緊急下載緩存中I(p+k-l)幀子數(shù)據(jù)分塊下載成功概率的平均值,再判 斷該平均值是否小于分塊調整閾值,是則將緊急下載緩存的長度k增加l,否則將緊急下載 緩存的長度k減去l; 3. 9、管理服務器判斷當前對等節(jié)點的存活時間1\是否到達,是則轉子步驟3. 10, 否則轉步驟3. 11 ; 3. 10、管理服務器判斷是否收到當前對等節(jié)點心跳消息,是則轉步驟S19,否則傳 輸調度方法結束; 3. 11、當前對等節(jié)點判斷播放點前移間隔T6是否到達,是則轉步驟3. 3,否則轉子 步驟3. 12 ; 3. 12、判斷播放點處的圖像組數(shù)據(jù)分段內(nèi)各子數(shù)據(jù)分段緩存映射是否全為l,是則 轉子步驟3. 1,否則對當前播放點處圖像組數(shù)據(jù)分段中緩存映射為0的P幀子數(shù)據(jù)分段或B 幀子數(shù)據(jù)分段進行補償操作,轉子子步驟3. 1。
權利要求
一種P2P流媒體視頻數(shù)據(jù)傳輸調度方法,其步驟包括一、初始化步驟,執(zhí)行以下子步驟1.1當前對等節(jié)點進入P2P網(wǎng)絡,按連接間隔T0定時向管理服務器發(fā)心跳消息;同時從管理服務器的對等節(jié)點列表中隨機獲取N1個對等節(jié)點,若管理服務器對等節(jié)點列表中對等節(jié)點個數(shù)不足N1個,則從管理服務器對等節(jié)點列表中獲取所有的對等節(jié)點;若所獲取的對等節(jié)點在當前對等節(jié)點自身的對等節(jié)點列表中不存在,則增加入當前對等節(jié)點自身的對等節(jié)點列表中;N1=10~50;管理服務器收到各對等節(jié)點的心跳消息時,若此對等節(jié)點不在管理服務器對等節(jié)點列表中,則將此對等節(jié)點加入管理服務器對等節(jié)點列表中,并在管理服務器對等節(jié)點列表中開啟此對等節(jié)點對應的地址存活定時器;若此對等節(jié)點已在管理服務器對等節(jié)點列表中,則將管理服務器對等節(jié)點列表中該對等節(jié)點的地址存活定時器清零;當管理服務器對等節(jié)點列表中某對等節(jié)點對應的地址存活定時器存活時間T1到達,管理服務器仍未收到該對等節(jié)點的心跳信息,則在管理服務器的對等節(jié)點列表中刪除該對等節(jié)點;1.2當前對等節(jié)點根據(jù)自身的對等節(jié)點列表,連接鄰居對等節(jié)點,每隔一個交換間隔T2,向鄰居對等節(jié)點互相交換各自的緩存映射;從所獲取的所有鄰居對等節(jié)點的緩存映射中,獲得每個鄰居對等節(jié)點中已下載的連續(xù)的I幀子數(shù)據(jù)分段的最大序號Gi,i表示第i個鄰居對等節(jié)點;1.3確定當前對等節(jié)點的起始播放點若p小于1,則令p=1,轉步驟二;N2為當前對等節(jié)點自身的對等節(jié)點列表中鄰居對等節(jié)點個數(shù);N3為整數(shù),從5~10中隨機選??;二、播放啟動步驟,執(zhí)行以下子步驟2.1在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的I幀子數(shù)據(jù)分段執(zhí)行緊急請求下載,過程為2.1.1置i=1;2.1.2判斷緩存映射中是否存在I(p+i)幀子數(shù)據(jù)分段、且Im(p+i)的值等于0,是則執(zhí)行過程2.1.3,否則執(zhí)行過程2.1.4;2.1.3判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對I(p+i)幀子數(shù)據(jù)分段的緊急請求下載過程,再執(zhí)行過程2.1.4,否則直接執(zhí)行過程2.1.4;2.1.4置i=i+1,判斷是否i≤k,是則執(zhí)行過程2.1.2,否則執(zhí)行子步驟2.2,k為緊急下載緩存長度;2.2在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的P幀子數(shù)據(jù)分段執(zhí)行緊急請求下載,過程為2.2.1置j=1;2.2.2置i=1;2.2.3判斷緩存映射中是否存在P((p+i),j)幀子數(shù)據(jù)分段、且Pm((p+i),j)的值等于0,是則執(zhí)行過程2.2.4,否則執(zhí)行過程2.2.5;2.2.4判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對P((p+i),j)幀子數(shù)據(jù)分段的緊急請求下載過程,再執(zhí)行過程2.2.5,否則直接執(zhí)行過程2.2.5;2.2.5置i=i+1,判斷是否i≤k,是則轉過程2.2.3,否則執(zhí)行過程2.2.6;2.2.6置j=j+1,判斷是否j≤Pmax,是則轉過程2.2.2,否則執(zhí)行子步驟2.3;2.3在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的B幀子數(shù)據(jù)分段執(zhí)行緊急請求下載,過程為2.3.1置m=1;2.3.2置j=1;2.3.3置i=1;2.3.4判斷緩存映射中是否存在B((p+i),j,m)幀子數(shù)據(jù)分段、且Bm((p+i),j,m)的值等于0,是則執(zhí)行過程2.3.5,否則執(zhí)行過程2.3.6;2.3.5判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對B((p+i),j,m)幀子數(shù)據(jù)分段的緊急請求下載過程,再執(zhí)行過程2.3.6,否則直接執(zhí)行過程2.3.6;2.3.6置i=i+1,判斷是否i≤k,是則轉過程2.3.4,否則執(zhí)行過程2.3.7;2.3.7置j=j+1,判斷是否j≤Pmax,是則轉過程2.3.3,否則執(zhí)行過程2.3.8;2.3.8置m=m+1,判斷是否m≤Bmax,是則轉過程2.3.2,否則執(zhí)行子步驟2.4;2.4判斷緊急下載緩存中子數(shù)據(jù)分段的緩存映射的值是否全部為1,是則轉步驟三,否則轉子步驟2.1;三、正常播放步驟,包括以下子步驟3.1前移播放點,p=p+1;3.2判斷P幀或B幀子數(shù)據(jù)分段補償位是否為1,是則先將對應的P幀或B幀子數(shù)據(jù)分段緩存映射賦值為0,再將對應的P幀或B幀子數(shù)據(jù)分段補償位賦值為0,執(zhí)行子步驟3.3;否則直接執(zhí)行子步驟3.3;3.3在當前對等節(jié)點中,對非緊急下載緩存中I幀子數(shù)據(jù)分段執(zhí)行非緊急請求下載,過程為3.3.1置i=1;3.3.2執(zhí)行對I幀子數(shù)據(jù)分段的非緊急請求下載過程;3.3.3置i=i+1,判斷是否i≤n-k,是則轉過程3.3.2;否則執(zhí)行子步驟3.4;3.4在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的I幀子數(shù)據(jù)分段執(zhí)行緊急請求下載,過程為3.4.1置i=1;3.4.2判斷緩存映射中是否存在I(p+i)幀子數(shù)據(jù)分段、且Im(p+i)的值等于0,是則執(zhí)行過程3.4.3,否則執(zhí)行過程3.4.4;3.4.3判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對I(p+i)幀子數(shù)據(jù)分段的請求下載過程并執(zhí)行過程3.4.4,否則直接執(zhí)行過程3.4.4;3.4.4置i=i+1,判斷是否i≤k,是則執(zhí)行步驟3.4.2,否則執(zhí)行子步驟3.5;3.5在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的P幀子數(shù)據(jù)分段執(zhí)行緊急請求下載,過程為3.5.1置j=1;3.5.2置i=1;3.5.3判斷緩存映射中是否存在P((p+i),j)幀子數(shù)據(jù)分段、且Pm((p+i),j)的值等于0,是則執(zhí)行過程3.5.4,否則執(zhí)行過程3.5.5;3.5.4判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對P((p+i),j)幀子數(shù)據(jù)分段的請求下載過程并執(zhí)行過程3.5.5,否則直接執(zhí)行過程3.5.5;3.5.5置i=i+1,判斷是否i≤k,是則轉過程3.5.3,否則執(zhí)行過程3.5.6;3.5.6置j=j+1,判斷是否j≤Pmax,是則轉過程3.5.2,否則執(zhí)行子步驟3.6;3.6在當前對等節(jié)點中,從播放點p開始,對緊急下載緩存中的B幀子數(shù)據(jù)分段執(zhí)行緊急請求下載,過程為3.6.1置m=1;3.6.2置j=1;3.6.3置i=1;3.6.4判斷緩存映射中是否存在B((p+i),j,m)幀子數(shù)據(jù)分段、且Bm((p+i),j,m)的值等于0,是則執(zhí)行過程3.6.5,否則執(zhí)行過程3.6.6;3.6.5判斷請求發(fā)送間隔T3是否到達,是則執(zhí)行對B((p+i),j,m)幀子數(shù)據(jù)分段的請求下載過程并執(zhí)行過程3.6.6,否則直接執(zhí)行過程3.6.6;3.6.6置i=i+1,判斷是否i≤k,是則轉過程3.6.4,否則執(zhí)行過程3.6.7;3.6.7置j=j+1,判斷是否j≤Pmax,是則轉過程3.6.3,否則執(zhí)行過程3.6.8;3.6.8置m=m+1,判斷是否m≤Bmax,是則轉過程3.6.2,否則執(zhí)行子步驟3.7;3.7判斷分界調整間隔T7是否到達,是則轉子步驟3.8,否則轉子步驟3.9;3.8統(tǒng)計緊急下載緩存中I(p+k-1)幀子數(shù)據(jù)分塊下載成功概率的平均值,再判斷該平均值是否小于分塊調整閾值,是則將緊急下載緩存的長度k增加1,轉子步驟3.9;否則將緊急下載緩存的長度k減去1,轉子步驟3.9;所述分塊調整閾值為0.3~0.5,為0.3時,調整靈敏度較小,為0.5時,調整靈敏度較大;3.9管理服務器判斷當前對等節(jié)點的存活時間T1是否到達,是則轉子步驟3.10,否則轉子步驟3.11;3.10管理服務器判斷是否收到當前對等節(jié)點心跳消息,是則轉子步驟3.11,否則管理服務器將該對等節(jié)點從管理服務器對等節(jié)點列表中刪除,傳輸調度方法結束;3.11當前對等節(jié)點判斷播放點前移間隔T6是否到達,是則轉子步驟3.12,否則轉子步驟3.3;3.12判斷播放點處的圖像組數(shù)據(jù)分段內(nèi)各子數(shù)據(jù)分段緩存映射是否全為1,是則執(zhí)行子步驟3.1;否則判斷緩存映射為0的子數(shù)據(jù)分段的類型I幀子數(shù)據(jù)分段轉子步驟3.1,P幀子數(shù)據(jù)分段轉過程3.12.1,B幀子數(shù)據(jù)分段轉過程3.12.2;3.12.1用該P幀子數(shù)據(jù)分段前面最相鄰的已下載的I幀子數(shù)據(jù)分段或P幀子數(shù)據(jù)分段替代該未下載的P幀子數(shù)據(jù)分段,將該P幀子數(shù)據(jù)分段對應的緩存映射賦值為1,該P幀子數(shù)據(jù)分段補償位賦值為1,轉子步驟3.1;3.12.2用該B幀子數(shù)據(jù)分段前面最相鄰的已下載的I幀子數(shù)據(jù)分段或,P幀子數(shù)據(jù)分段替代未下載的B幀子數(shù)據(jù)分段,該B幀子數(shù)據(jù)分段對應的緩存映射賦值為1,該B幀子數(shù)據(jù)分段補償位賦值為1,執(zhí)行子步驟3.1。
2.如權利要求1所述的P2P流媒體視頻數(shù)據(jù)傳輸調度方法,其特征在于所述播放啟動步驟和正常播放步驟中,當前對等節(jié)點對I、 P或B幀特定編號子數(shù)據(jù)分 段的緊急請求下載過程為Jl.根據(jù)周期性更新獲得的最新緩存映射,隨機選擇具有該子數(shù)據(jù)分段的鄰居對等節(jié) 點作為父節(jié)點,執(zhí)行過程J2;J2.向該父節(jié)點發(fā)送一個該子數(shù)據(jù)分段的緊急下載請求,執(zhí)行過程J3 ;J3.判斷緊急請求重發(fā)間隔T4是否到達,是則執(zhí)行過程J4,否則結束此特定編號子數(shù) 據(jù)分段下載過程;J4.判斷待下載特定編號子數(shù)據(jù)分段是否已下載,是則將此特定子數(shù)據(jù)分段對應的緩 存映射賦值為l,結束此特定編號子數(shù)據(jù)分段下載過程,否則執(zhí)行過程Jl。
3.如權利要求1所述的P2P流媒體視頻數(shù)據(jù)傳輸調度方法,其特征在于 所述正常播放步驟中,當前對等節(jié)點對某個I幀子數(shù)據(jù)分段非緊急請求下載過程為 Fl.根據(jù)周期性更新獲得的鄰居對等節(jié)點最新緩存映射,當前對等節(jié)點對每個緩存映射為0的I幀子數(shù)據(jù)分段,計算擁有它的鄰居對等節(jié)點數(shù)量& ;F2.當前對等節(jié)點選擇最小的N4值所對應的I幀子數(shù)據(jù)分段,若最小的N4值所對應的 I幀子數(shù)據(jù)分段多于一個,則選擇離播放點最近的I幀子數(shù)據(jù)分段;F3.根據(jù)最新緩存映射,當前對等節(jié)點找到擁有該I幀子數(shù)據(jù)分段的鄰居對等節(jié)點,隨 機選擇其中一個作為父節(jié)點,向該父節(jié)點發(fā)送對此I幀子數(shù)據(jù)分段的非緊急下載請求;F4.當前對等節(jié)點判斷非緊急請求重發(fā)間隔T5是否到達,是則轉過程F5,否則結束此 子數(shù)據(jù)分段下載過程;F5.當前對等節(jié)點判斷所請求的幀子數(shù)據(jù)分段是否已下載,是則將此I幀子數(shù)據(jù)分段 對應的緩存映射賦值為l,結束此I幀子數(shù)據(jù)分段下載過程,否則轉過程F3。
全文摘要
一種P2P流媒體視頻數(shù)據(jù)傳輸調度方法,屬于流媒體視頻數(shù)據(jù)傳輸調度方法,用于在網(wǎng)絡上傳輸流媒體視頻數(shù)據(jù)。解決現(xiàn)有P2P流媒體視頻傳輸調度方法未考慮到視頻幀和下載緩存分區(qū)存在重要性程度不同的問題,從而有效提升播放連續(xù)度,進而提升用戶體驗質量。本發(fā)明包括一、初始化步驟,二、播放啟動步驟,三、正常播放步驟。本發(fā)明可以在相同的丟包率情況下,優(yōu)先請求調度I幀子數(shù)據(jù)分段,其次是P幀子數(shù)據(jù)分段,最后是B幀子數(shù)據(jù)分段,從而保持最大程度的播放連續(xù)性,進而有效提升體驗質量;緊急下載緩存采用順序調度和非緊急下載緩存采用稀有優(yōu)先調度相結合的方法,可以在減少啟動時間、增強播放連續(xù)度以及可擴展性上達到動態(tài)最佳折衷。
文檔編號H04L29/06GK101697554SQ200910272268
公開日2010年4月21日 申請日期2009年9月27日 優(yōu)先權日2009年9月27日
發(fā)明者馮義雍, 程剛, 程文青, 黃佳慶 申請人:華中科技大學;