亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用于流媒體的擦除編碼的系統(tǒng)和方法

文檔序號(hào):7623277閱讀:219來(lái)源:國(guó)知局
專利名稱:用于流媒體的擦除編碼的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于松耦合對(duì)等(P2P)網(wǎng)絡(luò)的接收器驅(qū)動(dòng)P2P媒體流,尤其涉及用于在實(shí)時(shí)協(xié)調(diào)和客戶機(jī)控制下將媒體從多個(gè)對(duì)等體流傳送到客戶機(jī),而無(wú)需提供對(duì)等協(xié)作的系統(tǒng)和方法。
背景技術(shù)
最近的市場(chǎng)研究指出,在2004年,美國(guó)有一半以上的因特網(wǎng)用戶訪問(wèn)了某種形式的流媒體。訪問(wèn)流音樂(lè)是一種很流行的活動(dòng),而流視頻的普及程度正在迅速增高。
不幸的是,與典型的網(wǎng)頁(yè)不同,流媒體文件的尺寸通常極其大。例如,取決于所使用的編解碼器,按2兆比特/秒(Mbps)來(lái)編碼的3分鐘的電影宣傳片會(huì)產(chǎn)生45兆字節(jié)(MB)的媒體文件。流媒體必須解決的另一個(gè)問(wèn)題是數(shù)據(jù)包傳遞的嚴(yán)格定時(shí)。因此,流媒體文件的大尺寸和數(shù)據(jù)包傳遞定時(shí)要求使典型的流媒體服務(wù)器設(shè)立和運(yùn)行起來(lái)相對(duì)較昂貴。例如,一個(gè)當(dāng)前的估算將用于流傳送媒體的現(xiàn)行率定為每1GB的服務(wù)通信量是10美元。通過(guò)使用45MB文件大小的例子,這會(huì)導(dǎo)致被分發(fā)的每一電影宣傳片有0.45美元的帶寬成本。顯而易見(jiàn),隨著媒體流量的增加,該成本會(huì)迅速上升。
對(duì)于媒體流的相對(duì)較高的成本的一個(gè)解決方案是使用“對(duì)等”(P2P)網(wǎng)絡(luò)來(lái)將媒體流提供給個(gè)別的客戶機(jī)。一般而言,P2P網(wǎng)絡(luò)的基本理念是允許每個(gè)對(duì)等節(jié)點(diǎn)協(xié)助媒體服務(wù)器分發(fā)流媒體。用于流媒體的P2P網(wǎng)絡(luò)的成功得到了用于實(shí)現(xiàn)P2P網(wǎng)絡(luò)的大量常規(guī)途徑。
例如,被稱作“終端系統(tǒng)多點(diǎn)傳送”和“PeerCast”的常規(guī)P2P方案使用用于媒體流的應(yīng)用程序級(jí)多點(diǎn)傳送(ALM)。具體地,利用ESM和PeerCast,這些對(duì)等節(jié)點(diǎn)被自我組織到現(xiàn)有IP網(wǎng)絡(luò)上的覆蓋樹(shù)中。然后,沿該覆蓋樹(shù)來(lái)分發(fā)流數(shù)據(jù)。隨后,在這些對(duì)等節(jié)點(diǎn)之間共享提供帶寬的成本,從而減輕運(yùn)行媒體服務(wù)器的帶寬負(fù)擔(dān)(因此減少美元成本)。然而,利用ESM和PeerCast,該分發(fā)樹(shù)的葉節(jié)點(diǎn)只接收流媒體,而不促成內(nèi)容分發(fā)。
兩個(gè)其它的常規(guī)方案“CoopNet”和“SplitStream”通過(guò)使用跨越來(lái)源和對(duì)等節(jié)點(diǎn)的多個(gè)分發(fā)樹(shù),解決了諸如ESM和PeerCast等方案的內(nèi)容分發(fā)局限。然后,CoopNet和SplitStream中的每個(gè)樹(shù)可以發(fā)送流媒體的單獨(dú)片斷。結(jié)果,所有對(duì)等節(jié)點(diǎn)都可以涉及內(nèi)容分發(fā)。
常規(guī)P2P媒體流解決方案的另一例子包括被稱作“OStream”的流傳送方案。OStream使用“高速緩存和中繼站”方法,使得對(duì)等節(jié)點(diǎn)可以向客戶機(jī)提供先前從其高速緩存分發(fā)的媒體。另一個(gè)常規(guī)系統(tǒng)“GnuStream”提供構(gòu)建在公知的“Gnutella”系統(tǒng)之上的接收器驅(qū)動(dòng)P2P媒體流系統(tǒng)。而被稱作“CollectCast”的另一個(gè)常規(guī)方案積極地尋找最有可能實(shí)現(xiàn)最佳流傳送質(zhì)量的服務(wù)對(duì)等體,同時(shí)動(dòng)態(tài)地自適應(yīng)網(wǎng)絡(luò)波動(dòng)和對(duì)等體故障。
另一種類型的常規(guī)方案提供一種類型分布式文件共享,其中,文件的各個(gè)片斷跨越許多對(duì)等體而被廣泛的分發(fā)。然后,只要客戶機(jī)請(qǐng)求下載該文件,就從多個(gè)對(duì)等體(而不是直接從服務(wù)器)服務(wù)該請(qǐng)求。例如,被稱作“Swarmcast”的一個(gè)這樣的方案通過(guò)將文件分成小得多的各個(gè)片斷,來(lái)散布施加在提供流行的可下載內(nèi)容的網(wǎng)站上的負(fù)載。一旦用戶安裝了該Swarmcast客戶機(jī)程序,其計(jì)算機(jī)就通過(guò)分發(fā)(即供應(yīng))它們已下載的各個(gè)數(shù)據(jù)片斷來(lái)自動(dòng)與其它用戶的計(jì)算機(jī)進(jìn)行合作,從而減少中央服務(wù)器上的總服務(wù)負(fù)載。被稱作“BitTorrent”的類似方案按照很類似的原則來(lái)運(yùn)作。特別是,當(dāng)在低負(fù)載情況時(shí),使用BitTorrent方案來(lái)供應(yīng)大型文件的網(wǎng)站將表現(xiàn)得很象典型的http服務(wù)器,因?yàn)樗鼒?zhí)行供應(yīng)本身的大部分。然而,當(dāng)服務(wù)器負(fù)載達(dá)到某個(gè)相對(duì)較高的水平時(shí),BitTorrent將轉(zhuǎn)變?yōu)榇蟛糠稚蟼髫?fù)擔(dān)由用于供應(yīng)其它下載客戶機(jī)的下載客戶機(jī)本身來(lái)承受的狀態(tài)。
不幸的是,盡管諸如Swarmcast和BitTorrent等方案對(duì)于根據(jù)P2P網(wǎng)絡(luò)規(guī)模分發(fā)各個(gè)文件片斷以顯著地增加服務(wù)器容量而言很有用,但這些系統(tǒng)不適用于有效率地流傳送媒體。特別是,諸如Swarmcast和BitTorrent等方案不關(guān)心構(gòu)成正被下載的一個(gè)或多個(gè)文件的數(shù)據(jù)包的傳遞的順序或定時(shí)。這些文件僅僅逐段地從各對(duì)等體廣播到客戶機(jī),然后僅僅按正確順序在本地重新組裝,以便在客戶機(jī)計(jì)算機(jī)上重建原始文件。但是,在流媒體的情況下,必須仔細(xì)地考慮和控制數(shù)據(jù)包的定時(shí)和順序,以便提供媒體的有效的流傳送。
所以,需要一種系統(tǒng)和方法,用于從松散耦合的對(duì)等體集合到客戶機(jī)的媒體流的接收器驅(qū)動(dòng)控制。這種系統(tǒng)不應(yīng)該要求各個(gè)對(duì)等體之間的通信或協(xié)作。另外,這種系統(tǒng)和方法應(yīng)該通過(guò)要求客戶機(jī)執(zhí)行任何必要的計(jì)算操作的大部分,來(lái)將施加于對(duì)等體上的計(jì)算要求最小化。

發(fā)明內(nèi)容
如這里所描述的“PeerStreamer(對(duì)等流傳送器)”提供用于松散耦合P2P網(wǎng)絡(luò)的接收器驅(qū)動(dòng)對(duì)等(P2P)媒體流。網(wǎng)絡(luò)中的對(duì)等體只執(zhí)行簡(jiǎn)單的操作、可以高速緩存流媒體的全部或一部分、不與其它對(duì)等體協(xié)作、可以是不可靠的、并可以在任何給定的流傳送會(huì)話期間脫機(jī)或聯(lián)機(jī)。網(wǎng)絡(luò)中的客戶機(jī)(或接收器)進(jìn)行實(shí)時(shí)操作,以便協(xié)調(diào)對(duì)等體、從多個(gè)對(duì)等體流傳送媒體、執(zhí)行負(fù)載平衡、處理對(duì)等體的聯(lián)機(jī)/脫機(jī)狀態(tài)、以及執(zhí)行對(duì)流媒體的解碼和呈現(xiàn)。
注意,這里所描述的PeerStreamer系統(tǒng)適用于具有多個(gè)客戶機(jī)和對(duì)等體的大型P2P網(wǎng)絡(luò),但出于解釋清楚的目的,下文將一般涉及個(gè)別客戶機(jī)。本領(lǐng)域的技術(shù)人員將會(huì)理解,所描述的由PeerStreamer提供的系統(tǒng)和方法適用于多個(gè)客戶機(jī)。此外,由于這里所描述的對(duì)等體用來(lái)將媒體供應(yīng)給接收器或客戶機(jī),因此,P2P網(wǎng)絡(luò)中的對(duì)等體群集在這里通常被稱作“對(duì)等體”或“服務(wù)對(duì)等體”。也應(yīng)該注意,如這里所描述的,這些“服務(wù)對(duì)等體”不應(yīng)該與特定的流媒體文件最初所起源的“媒體服務(wù)器”混淆。
一般而言,PeerStreamer提供接收器驅(qū)動(dòng)媒體流傳送。PeerStreamer操作始于每個(gè)接收客戶機(jī)檢索保持所請(qǐng)求的流媒體的全部或一部分的附近的對(duì)等體的列表。注意,在該上下文中,媒體服務(wù)器也可以擔(dān)當(dāng)這些服務(wù)對(duì)等體之一。該列表包括IP地址、以及保持該服務(wù)媒體的完整或部分副本的一組一個(gè)或多個(gè)相鄰服務(wù)對(duì)等體的監(jiān)聽(tīng)端口。用于檢索該列表的方法包括1)直接從媒體服務(wù)器中檢索該列表;2)從已知的服務(wù)對(duì)等體中檢索該列表;以及3)使用用于標(biāo)識(shí)這些服務(wù)對(duì)等體的分布式散列表(DHT)方法。
一旦客戶機(jī)檢索了可用服務(wù)對(duì)等體列表,該客戶機(jī)就連接到每個(gè)服務(wù)對(duì)等體,并獲得其“可用性向量”。一般而言,每個(gè)服務(wù)對(duì)等體的可用性向量是該服務(wù)對(duì)等體所保持的媒體的確切部分的緊縮描述。然后,這些可用性向量由客戶機(jī)用來(lái)確切地確定各個(gè)服務(wù)對(duì)等體保持該編碼媒體的什么塊。
例如,在特定的服務(wù)對(duì)等體保持全部服務(wù)媒體的情況下,該對(duì)等體的可用性向量可以是指出該服務(wù)對(duì)等體保持完整的媒體副本的單個(gè)標(biāo)志。同樣,如果服務(wù)對(duì)等體只保持服務(wù)媒體的一部分,那么該服務(wù)對(duì)等體的可用性向量將用信號(hào)通知客戶機(jī),服務(wù)對(duì)等體保持媒體的什么部分,例如,由服務(wù)對(duì)等體保持的每個(gè)數(shù)據(jù)包的塊數(shù)以及塊索引。
另外,在使用附加編碼,例如以下所描述的各種擦除編碼(erasure coding)技術(shù)的情況下,可用性向量將包括分配給服務(wù)對(duì)等體的媒體擦除編碼關(guān)鍵字、以及由該服務(wù)對(duì)等體保持的擦除塊的數(shù)目。此外,如果服務(wù)對(duì)等體使用擦除編碼,并且,該媒體也被嵌入編碼,那么,可用性向量將包括所分配的媒體擦除編碼關(guān)鍵字、以及該嵌入編碼所使用的不同的比特率水平處的每個(gè)數(shù)據(jù)包的擦除塊的數(shù)目。
一般而言,已編碼的媒體文件通常包括“媒體頭部”,隨后是表示所編碼的媒體的多個(gè)媒體數(shù)據(jù)包(即“媒體主體”)。給定該可用性向量,下一步是讓客戶機(jī)檢索媒體頭部和“媒體結(jié)構(gòu)”的長(zhǎng)度,該媒體結(jié)構(gòu)可從將要從對(duì)等體群集流傳送的已編碼媒體文件中導(dǎo)出。一組數(shù)據(jù)包的媒體結(jié)構(gòu)僅僅是數(shù)據(jù)包頭部加上數(shù)據(jù)包比特流長(zhǎng)度。在檢索了這些長(zhǎng)度之后,客戶機(jī)計(jì)算該媒體頭部和媒體結(jié)構(gòu)的“數(shù)據(jù)單元ID”,并按協(xié)作方式從該對(duì)等體群集中的一個(gè)或多個(gè)對(duì)等體中檢索它們。
一旦媒體頭部到達(dá),客戶機(jī)就分析該媒體頭部,然后配置或初始化解碼和呈現(xiàn)或回放正被流傳送的特定類型的媒體(即MPEG 1/2/4、WMA、WMV等)所需要的任何音頻/視頻解碼器和呈現(xiàn)設(shè)備。一旦完成了這個(gè)初始設(shè)置階段,客戶機(jī)隨后就開(kāi)始如下所述地協(xié)調(diào)正在進(jìn)行的從對(duì)等體群集的媒體主體流傳送。
具體地,給定特定流媒體的前述媒體結(jié)構(gòu),客戶機(jī)計(jì)算流媒體(即媒體主體)的數(shù)據(jù)包的數(shù)據(jù)單元ID,然后逐個(gè)地檢索那些數(shù)據(jù)包。在一個(gè)相關(guān)的實(shí)施例中,PeerStreamer使用嵌入編碼媒體,然后,流傳送比特率根據(jù)可用服務(wù)帶寬和客戶機(jī)隊(duì)列狀態(tài)而改變。在此情況下,媒體主體的媒體數(shù)據(jù)包的正在進(jìn)行的檢索對(duì)應(yīng)于將基于可用帶寬來(lái)提供最小的速率失真的那些數(shù)據(jù)包。
在任何一種情況下,客戶機(jī)周期性地更新服務(wù)對(duì)等體列表,并連接到潛在的新服務(wù)對(duì)等體。在一個(gè)測(cè)試實(shí)施例中,客戶機(jī)通過(guò)發(fā)出對(duì)于每個(gè)潛在的服務(wù)對(duì)等體的周期性常規(guī)TCP連接函數(shù)調(diào)用,來(lái)核對(duì)潛在的新服務(wù)對(duì)等體。在客戶機(jī)建立與新服務(wù)對(duì)等體的連接之后,它首先檢索前述可用性向量。然后,在接收器/客戶機(jī)的方向上,該新對(duì)等體可以加入該群集中的其它活動(dòng)對(duì)等體。然后,客戶機(jī)協(xié)調(diào)這些對(duì)等體、根據(jù)其服務(wù)帶寬和內(nèi)容可用性來(lái)平衡這些對(duì)等體的服務(wù)負(fù)載、并將斷開(kāi)的或超時(shí)的對(duì)等體的無(wú)法履行的請(qǐng)求重定向到其它活動(dòng)對(duì)等體中的一個(gè)或多個(gè)。然后,流傳送操作按這個(gè)方式繼續(xù)進(jìn)行,直到全部流媒體被接收,或者流傳送操作被用戶停止。
在一個(gè)實(shí)施例中,PeerStreamer使用高速率擦除彈性編碼,以允許多個(gè)服務(wù)對(duì)等體保持部分媒體而無(wú)沖突,以便客戶機(jī)僅僅檢索固定數(shù)目的擦除編碼塊,而不管在哪里檢索和檢索什么特定塊。在此情況下,將所接收的擦除編碼塊放入客戶機(jī)的分級(jí)隊(duì)列,其中,媒體數(shù)據(jù)包隨后被組裝。然后,向下游發(fā)送被完全組裝的媒體數(shù)據(jù)包,以便使用已為解碼和呈現(xiàn)或回放正被流傳送的特定類型的媒體而配置或初始化的任何音頻/視頻解碼器和呈現(xiàn)設(shè)備來(lái)對(duì)它們進(jìn)行解碼和回放。在此情況下,通過(guò)控制分級(jí)隊(duì)列的長(zhǎng)度、請(qǐng)求隊(duì)列的長(zhǎng)度和壓縮的音頻/視頻緩沖區(qū)的長(zhǎng)度,客戶機(jī)維持某段所需時(shí)期(在一個(gè)測(cè)試實(shí)施例中是4秒的數(shù)量級(jí))的流緩沖區(qū)。然后,使用組合的緩沖區(qū)來(lái)防止網(wǎng)絡(luò)數(shù)據(jù)包丟失和抖動(dòng)。
鑒于以上概述,顯而易見(jiàn),這里所描述的PeerStreamer提供一種用于在P2P網(wǎng)絡(luò)中提供接收器驅(qū)動(dòng)媒體流傳送的獨(dú)特的系統(tǒng)和方法。除了剛剛描述的這些好處以外,通過(guò)下文中的詳細(xì)描述并結(jié)合附圖,PeerStreamer的其它優(yōu)點(diǎn)也將會(huì)變得一目了然。


通過(guò)以下說(shuō)明、所附權(quán)利要求書(shū)和附圖,本發(fā)明的這些具體特征、方面和優(yōu)點(diǎn)將得到更好的理解,附圖中圖1是描繪構(gòu)成實(shí)現(xiàn)如這里所描述的“PeerStreamer”的示例性系統(tǒng)的通用計(jì)算設(shè)備的通用系統(tǒng)框圖。
圖2示出了用于如這里所描述的接收器驅(qū)動(dòng)媒體流傳送的示例性對(duì)等(P2P)網(wǎng)絡(luò)。
圖3提供示出用于實(shí)現(xiàn)如這里所描述的PeerStreamer的程序模塊的示例性體系結(jié)構(gòu)流程圖。
圖4示出了如這里所描述的流媒體文件的文件格式。
圖5示出了如這里所描述的PeerStreamer的測(cè)試實(shí)施例中所使用的“數(shù)據(jù)單元”。
圖6示出了如這里所描述的已被分成8個(gè)數(shù)據(jù)單元的嵌入編碼媒體數(shù)據(jù)包的部分高速緩存。
圖7提供了客戶機(jī)PeerStreamer媒體流傳送會(huì)話的示例DirectShowTM過(guò)濾器圖表。
圖8提供了表示如這里所描述的PeerStreamer請(qǐng)求和分級(jí)隊(duì)列以及流媒體解碼、呈現(xiàn)和回放的體系結(jié)構(gòu)系統(tǒng)圖,其系統(tǒng)緩沖區(qū)由虛線來(lái)示出。
圖9提供了用于到達(dá)的數(shù)據(jù)單元的PeerStreamer客戶分級(jí)隊(duì)列,以及用于每個(gè)服務(wù)對(duì)等體的PeerStreamer客戶機(jī)請(qǐng)求隊(duì)列的框解。
圖10提供了示出如這里所描述的PeerStreamer的一個(gè)實(shí)施例的通用操作的操作流程圖。
具體實(shí)施例方式
在本發(fā)明較佳實(shí)施例的以下描述中,參考附圖,這些附圖構(gòu)成本發(fā)明的一部分,并且在這些附圖中,通過(guò)舉例說(shuō)明,示出可以在其中實(shí)踐本發(fā)明的特定實(shí)施例。可理解,在不脫離本發(fā)明的范圍的前提下,可以利用其它實(shí)施例,并且可以進(jìn)行結(jié)構(gòu)上的更改。
1.0示例性操作環(huán)境圖1示出了可以在其上實(shí)現(xiàn)本發(fā)明的合適的計(jì)算系統(tǒng)環(huán)境100的例子。計(jì)算系統(tǒng)環(huán)境100只是合適的計(jì)算環(huán)境的一個(gè)例子,它并不意在對(duì)本發(fā)明的使用范圍或功能提出任何限制。也不應(yīng)該將計(jì)算環(huán)境100解釋為對(duì)示例性操作環(huán)境100中所示的任何一個(gè)組件或組件組合具有任何依賴性或要求。
本發(fā)明可用于眾多其它的通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置??蛇m用于本發(fā)明的眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置的例子包括,但不限于個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式、膝上型或可移動(dòng)計(jì)算機(jī)或通信設(shè)備(例如,蜂窩電話和PDA)、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
本發(fā)明可以在諸如程序模塊等由計(jì)算機(jī)結(jié)合硬件模塊(包括話筒陣列198的各個(gè)組件)而執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)踐,其中,任務(wù)由通過(guò)通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。參照?qǐng)D1,用于實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)包括計(jì)算機(jī)110形式的通用計(jì)算設(shè)備。
計(jì)算機(jī)110的組件可以包括,但不限于,處理單元120、系統(tǒng)存儲(chǔ)器130和將包括系統(tǒng)存儲(chǔ)器的各種系統(tǒng)組件耦合到處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可以是幾種類型的總線結(jié)構(gòu)中的任一種,包括存儲(chǔ)總線或存儲(chǔ)控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。作為示例而非局限,這類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線和外圍部件互連(PCI)總線,也被稱作Mezzanine總線。
計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)110訪問(wèn)的任何可用介質(zhì),它包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例而非局限,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的存儲(chǔ)的任何方法或技術(shù)來(lái)實(shí)現(xiàn)的易失性性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。
計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于RAM、ROM、PROM、EPROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù);CD-ROM、數(shù)字多功能盤(pán)(DVD)、或其它光盤(pán)存儲(chǔ)器;盒式磁帶、磁帶、磁盤(pán)存儲(chǔ)器、或其它磁性存儲(chǔ)設(shè)備;或可以用來(lái)存儲(chǔ)所需信息并可以由計(jì)算機(jī)110訪問(wèn)的其它任何介質(zhì)。通信介質(zhì)通常具體表現(xiàn)為諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),它包括任何信息傳遞介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”指其一個(gè)或多個(gè)特征按為信號(hào)中的信息編碼的方式來(lái)加以設(shè)置或更改的信號(hào)。作為示例而非局限,通信介質(zhì)包括有線介質(zhì),例如,有線網(wǎng)絡(luò)或直線連接,和無(wú)線介質(zhì),例如,聲學(xué)、RF、紅外線和其它無(wú)線介質(zhì)。以上任何內(nèi)容的組合也應(yīng)該被包括在計(jì)算機(jī)可讀介質(zhì)的范圍以內(nèi)。
系統(tǒng)存儲(chǔ)器130包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),例如只讀存儲(chǔ)器(ROM)131和隨機(jī)存取存儲(chǔ)器(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)通常存儲(chǔ)在ROM 131中,它包含例如在啟動(dòng)期間有助于在計(jì)算機(jī)110內(nèi)的各個(gè)元件之間傳送信息的基本例程。RAM 132通常包含可立即由處理單元120訪問(wèn)和/或目前正由處理單元120操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計(jì)算機(jī)110也可以包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅作為示例,圖1示出了從不可移動(dòng)非易失性磁性介質(zhì)讀取或?qū)ζ鋵?xiě)入的硬盤(pán)驅(qū)動(dòng)器141、從可移動(dòng)非易失性磁盤(pán)152讀取或?qū)ζ鋵?xiě)入的磁盤(pán)驅(qū)動(dòng)器151,以及從可移動(dòng)非易失性光盤(pán)156(例如,CD ROM或其它光學(xué)介質(zhì))讀取或?qū)ζ鋵?xiě)入的光盤(pán)驅(qū)動(dòng)器155??梢杂糜谑纠圆僮鳝h(huán)境中的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,盒式磁帶、閃存卡、數(shù)字多功能盤(pán)、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等。硬盤(pán)驅(qū)動(dòng)器141通常通過(guò)不可移動(dòng)存儲(chǔ)器接口,如接口140連接到系統(tǒng)總線121,磁盤(pán)驅(qū)動(dòng)器151和光盤(pán)驅(qū)動(dòng)器155通常由可移動(dòng)存儲(chǔ)器接口,如接口150連接到系統(tǒng)總線121。
以上所討論的和圖1中所示出的這些驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)110提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例如,在圖1中,硬盤(pán)驅(qū)動(dòng)器141被示為存儲(chǔ)操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些組件可以與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137相同或不同。這里為操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147提供不同的標(biāo)號(hào),以說(shuō)明它們至少是不同的副本。用戶可以通過(guò)輸入設(shè)備,例如鍵盤(pán)162和定點(diǎn)設(shè)備161(通常指鼠標(biāo)、跟蹤球或觸摸墊),來(lái)將命令和信息輸入到計(jì)算機(jī)110。
其它輸入設(shè)備(未示出)可以包括操縱桿、游戲墊、圓盤(pán)式衛(wèi)星天線、掃描儀、無(wú)線電接收器、以及電視或廣播視頻接收器、或類似的輸入設(shè)備。這些和其它輸入設(shè)備經(jīng)常通過(guò)耦合到系統(tǒng)總線121的有線或無(wú)線用戶輸入接口160連接到處理單元120,但也可以由其它常規(guī)接口和總線結(jié)構(gòu)連接,例如,并行端口、游戲端口、通用串行總線(USB)、IEEE 1394接口、BluetoothTM(藍(lán)牙)無(wú)線接口、IEEE 802.11無(wú)線接口等。另外,計(jì)算機(jī)110也可以包括經(jīng)由音頻接口199連接的語(yǔ)音或音頻輸入設(shè)備,例如話筒或話筒陣列198,以及擴(kuò)音器197或其它聲音輸出設(shè)備,音頻接口199也包括常規(guī)的有線或無(wú)線接口,例如并行、串行、USB、IEEE 1394、BluetoothTM等。
監(jiān)視器191或其它類型的顯示設(shè)備也經(jīng)由接口,如視頻接口190連接到系統(tǒng)總線121。除監(jiān)視器以外,計(jì)算機(jī)也可以包括其它外圍輸出設(shè)備,如打印機(jī)196,它們可以通過(guò)輸出外圍接口195來(lái)連接。
計(jì)算機(jī)110可以使用與一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)180的邏輯連接而在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),它通常包括以上相對(duì)于計(jì)算機(jī)110而描述的許多或所有元件,盡管圖1中只示出了存儲(chǔ)器存儲(chǔ)設(shè)備181。圖1中所描繪的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可以包括其它網(wǎng)絡(luò)。這類聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中很普遍。
當(dāng)用于LAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)110通過(guò)網(wǎng)絡(luò)接口或適配器170連接到LAN 171。當(dāng)用于WAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)110通常包括調(diào)制解調(diào)器172或用于通過(guò)WAN 173(例如,因特網(wǎng))建立通信的其它裝置。調(diào)制解調(diào)器172可以是內(nèi)置或外置的,它可以經(jīng)由用戶輸入接口160或其它適當(dāng)?shù)臋C(jī)制連接到系統(tǒng)總線121。在聯(lián)網(wǎng)環(huán)境中,相對(duì)于計(jì)算機(jī)110而描繪的程序模塊或其各個(gè)部分可以被存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例而非局限,圖1將遠(yuǎn)程應(yīng)用程序185示為駐留在存儲(chǔ)器設(shè)備181上。將會(huì)理解,所示的網(wǎng)絡(luò)連接起示例性的作用,可以使用在計(jì)算機(jī)之間建立通信鏈路的其它裝置。
現(xiàn)在已討論了示例性操作環(huán)境,本描述的剩余部分將致力于討論實(shí)施“PeerStreamer”的程序模塊和過(guò)程,該“PeerStreamer”提供對(duì)用于分布式媒體流傳送的接收器驅(qū)動(dòng)對(duì)等(P2P)網(wǎng)絡(luò)中的一個(gè)或多個(gè)對(duì)等體的群集的動(dòng)態(tài)實(shí)時(shí)客戶機(jī)控制。
2.0引言如這里所描述的“PeerStreamer”提供用于松散耦合P2P網(wǎng)絡(luò)的接收器驅(qū)動(dòng)對(duì)等(P2P)媒體流傳送。該網(wǎng)絡(luò)中的對(duì)等體只執(zhí)行簡(jiǎn)單的操作、可以高速緩存流媒體的全部或一部分、不與其它對(duì)等體協(xié)作、可以是不可靠的、并可以在任何給定的流傳送會(huì)話期間脫機(jī)或聯(lián)機(jī)。該網(wǎng)絡(luò)中的客戶機(jī)進(jìn)行實(shí)時(shí)操作,以便協(xié)調(diào)對(duì)等體、從多個(gè)對(duì)等體流傳送媒體、執(zhí)行負(fù)載平衡、處理對(duì)等體的聯(lián)機(jī)/脫機(jī)狀態(tài)、以及執(zhí)行對(duì)流媒體的解碼和呈現(xiàn)。
注意,這里所描述的PeerStreamer系統(tǒng)適用于具有多個(gè)客戶機(jī)和對(duì)等體的大型P2P網(wǎng)絡(luò),但出于解釋清楚的目的,下文將通常涉及個(gè)別的客戶機(jī)。本領(lǐng)域的技術(shù)人員將會(huì)理解,由PeerStreamer提供的所描述的系統(tǒng)和方法適用于多個(gè)客戶機(jī)。此外,由于這里所描述的對(duì)等體用來(lái)將媒體供應(yīng)給接收器或客戶機(jī),因此,P2P網(wǎng)絡(luò)中的對(duì)等體群集在這里通常被稱作“對(duì)等體”或“服務(wù)對(duì)等體”。也應(yīng)該注意,如這里所描述的,“服務(wù)對(duì)等體”不應(yīng)該與特定流媒體文件最初所起源的“媒體服務(wù)器”混淆。
一般而言,PeerStreamer在諸如圖2所示的網(wǎng)絡(luò)等P2P網(wǎng)絡(luò)中操作。對(duì)于特定的流傳送會(huì)話,“服務(wù)器”200被定義為P2P網(wǎng)絡(luò)中最初發(fā)起流媒體的節(jié)點(diǎn);“客戶機(jī)”(或接收器)210被定義為當(dāng)前請(qǐng)求流媒體的節(jié)點(diǎn);并且,“服務(wù)對(duì)等體”220被定義為向客戶機(jī)供應(yīng)流媒體的完整或部分副本的節(jié)點(diǎn)。
一般而言,服務(wù)器200、客戶機(jī)210和服務(wù)對(duì)等體220都是與諸如因特網(wǎng)等網(wǎng)絡(luò)連接的最終用戶節(jié)點(diǎn)。由于服務(wù)器200總是能夠供應(yīng)流媒體,因此,服務(wù)器節(jié)點(diǎn)也擔(dān)當(dāng)服務(wù)對(duì)等體220。服務(wù)器節(jié)點(diǎn)200也可以執(zhí)行無(wú)法由服務(wù)對(duì)等體220執(zhí)行的媒體管理功能,例如,維持可用服務(wù)對(duì)等體的列表、執(zhí)行數(shù)字權(quán)限管理(DRM)功能等等。此外,對(duì)于常規(guī)的P2P方案,當(dāng)部署越來(lái)越多的流對(duì)等體節(jié)點(diǎn)220時(shí),這里所描述的PeerStreamer會(huì)得益于效率的提高。特別是,隨著流對(duì)等體節(jié)點(diǎn)220的數(shù)目的增加,媒體服務(wù)器200上的負(fù)載將會(huì)減少,從而運(yùn)行起來(lái)費(fèi)用不會(huì)太大,同時(shí),每個(gè)客戶機(jī)節(jié)點(diǎn)210將能夠在特定媒體流傳送會(huì)話期間接收好得多的媒體質(zhì)量。
此外,應(yīng)該顯而易見(jiàn),對(duì)于許多其它P2P類型的網(wǎng)絡(luò),特定節(jié)點(diǎn)的角色可能會(huì)改變。例如,特定節(jié)點(diǎn)可以在一個(gè)特定的流傳送會(huì)話中擔(dān)當(dāng)客戶機(jī)210,同時(shí),在另一個(gè)會(huì)話中擔(dān)當(dāng)服務(wù)對(duì)等體220。另外,特定節(jié)點(diǎn)可以同時(shí)擔(dān)當(dāng)客戶機(jī)節(jié)點(diǎn)210和服務(wù)器200或服務(wù)對(duì)等體220,以便同時(shí)流傳送一個(gè)或多個(gè)媒體文件或媒體文件的各個(gè)部分,同時(shí),從一個(gè)或多個(gè)其它服務(wù)對(duì)等體接收其它流媒體。
在流傳送會(huì)話期間,客戶機(jī)200首先定位保持部分或全部所需媒體的多個(gè)靠近的對(duì)等體220,然后從這多個(gè)對(duì)等體(可以包括服務(wù)器200)流傳送媒體。因此,每個(gè)服務(wù)對(duì)等體220通過(guò)服務(wù)客戶機(jī)210的下載請(qǐng)求的一個(gè)部分,來(lái)協(xié)助服務(wù)器200減輕總上傳負(fù)擔(dān)。結(jié)果,尤其在有許多客戶機(jī)的情況下,客戶機(jī)210經(jīng)??梢越邮蘸玫枚嗟牧髅襟w質(zhì)量,因?yàn)楫?dāng)有許多流對(duì)等體220來(lái)協(xié)助服務(wù)器200時(shí),有大得多的服務(wù)帶寬可用。
對(duì)于任何P2P網(wǎng)絡(luò),每一個(gè)別的對(duì)等體220不直接得益于服務(wù)一個(gè)或多個(gè)客戶機(jī)210。但是,在一個(gè)實(shí)施例中,常規(guī)的P2P“公平機(jī)制”用來(lái)確保,與在擔(dān)當(dāng)服務(wù)對(duì)等體的過(guò)程中還沒(méi)有平等地合作的另一個(gè)對(duì)等體相比較,合作對(duì)等體220在供應(yīng)隨后的流請(qǐng)求方面接收更高的優(yōu)先級(jí)。因此,當(dāng)利用PeerStreamer來(lái)實(shí)現(xiàn)這種公平機(jī)制時(shí),合作對(duì)等體220通??梢云诖谙乱淮嗡兂煽蛻魴C(jī)210時(shí)會(huì)有更好的媒體質(zhì)量。
因此,認(rèn)識(shí)到每個(gè)服務(wù)對(duì)等體220在任何特定的流傳送會(huì)話期間有效地支持客戶機(jī)210和服務(wù)器200的事實(shí),良好的設(shè)計(jì)原理是確保服務(wù)對(duì)等體是輕量級(jí)的,且P2P網(wǎng)絡(luò)是松散耦合的。換言之,服務(wù)對(duì)等體220應(yīng)該只需要執(zhí)行具有低CPU負(fù)載的最簡(jiǎn)單的操作。另外,在一個(gè)實(shí)施例中,服務(wù)對(duì)等體220也可以選擇只高速緩存媒體的一部分,以便將本質(zhì)上由每個(gè)服務(wù)對(duì)等體貢獻(xiàn)的存儲(chǔ)空間減到最小。此外,為了降低各個(gè)對(duì)等體220之間的通信的任何帶寬成本,不應(yīng)該要求每個(gè)服務(wù)對(duì)等體與其它對(duì)等體協(xié)作。最后,運(yùn)行于任何特定的服務(wù)對(duì)等體220上的其它程序可以對(duì)在任何特定的時(shí)刻在要求CPU和網(wǎng)絡(luò)資源方面具有更高的優(yōu)先級(jí),或者,特定的對(duì)等體可以在任何時(shí)候只是簡(jiǎn)單地被打開(kāi)或關(guān)閉。結(jié)果,特定的服務(wù)對(duì)等體200可以是不可靠的,可用的服務(wù)帶寬方面有波動(dòng)。實(shí)際上,在流傳送會(huì)話期間的任何時(shí)候,特定的服務(wù)對(duì)等體可以簡(jiǎn)單地脫機(jī)或聯(lián)機(jī)。
相反,在客戶機(jī)210上增加負(fù)擔(dān),以便將資源投入于流傳送會(huì)話是公平合理的。具體地,客戶機(jī)210需要從多個(gè)對(duì)等體220接收該流媒體,所以,它被連接到這些對(duì)等體。另外,客戶機(jī)210有動(dòng)力來(lái)有效地協(xié)調(diào)或管理對(duì)等體200,以便改善其自己的流傳送體驗(yàn)。因此,這里所描述的PeerStreamer系統(tǒng)和方法利用對(duì)松散耦合的P2P網(wǎng)絡(luò)中的服務(wù)對(duì)等體的接收器驅(qū)動(dòng)控制,其中,客戶機(jī)負(fù)責(zé)在各個(gè)流對(duì)等體之中發(fā)送和協(xié)調(diào)數(shù)據(jù)包請(qǐng)求。
2.1系統(tǒng)縱覽如上所述,這里所描述的PeerStreamer提供一種用于松散耦合的P2P網(wǎng)絡(luò)的接收器驅(qū)動(dòng)對(duì)等(P2P)媒體流傳送系統(tǒng)和方法。該網(wǎng)絡(luò)中的對(duì)等體只執(zhí)行簡(jiǎn)單的操作、可以高速緩存流媒體的全部或一部分、不與其它對(duì)等體協(xié)作、可以是不可靠的、以及可以在任何給定的流傳送會(huì)話期間脫機(jī)或聯(lián)機(jī)。該網(wǎng)絡(luò)中的客戶機(jī)(或接收器)進(jìn)行實(shí)時(shí)操作以便協(xié)調(diào)對(duì)等體、從多個(gè)對(duì)等體流傳送媒體、執(zhí)行負(fù)載平衡、處理對(duì)等體的聯(lián)機(jī)/脫機(jī)狀態(tài)、以及執(zhí)行對(duì)流媒體的解碼和呈現(xiàn)。
一般而言,PeerStreamer提供接收器驅(qū)動(dòng)媒體流傳送。PeerStreamer操作始于每個(gè)接收客戶機(jī)檢索保持有所請(qǐng)求的流媒體的全部或一部分的附近的服務(wù)對(duì)等體的列表。注意,在該上下文中,媒體服務(wù)器也可以擔(dān)當(dāng)服務(wù)對(duì)等體之一。該列表包括保持服務(wù)媒體的完整或部分副本的一組一個(gè)或多個(gè)相鄰服務(wù)對(duì)等體的IP地址以及監(jiān)聽(tīng)端口。用于檢索這個(gè)列表的方法包括1)直接從媒體服務(wù)器中檢索該列表;2)從已知的服務(wù)對(duì)等體中檢索該列表;以及3)使用用于識(shí)別服務(wù)對(duì)等體的分布式散列表(DHT)方法。
一旦客戶機(jī)檢索到可用服務(wù)對(duì)等體列表,該客戶機(jī)就連接到每個(gè)服務(wù)對(duì)等體,并獲得其“可用性向量”。一般而言,每個(gè)服務(wù)對(duì)等體的可用性向量是每個(gè)服務(wù)對(duì)等體所保持的媒體的確切部分的緊縮描述。然后,該可用性向量被客戶機(jī)用來(lái)確切地確定服務(wù)對(duì)等體保持已編碼媒體的什么塊。
例如,在特定服務(wù)對(duì)等體保持全部服務(wù)媒體的情況下,該對(duì)等體的可用性向量可以是指出該服務(wù)對(duì)等體保持完整的媒體副本的單個(gè)標(biāo)志。同樣,如果服務(wù)對(duì)等體只保持服務(wù)媒體的一部分,那么,該服務(wù)對(duì)等體的可用性向量將用信號(hào)通知客戶機(jī),該服務(wù)對(duì)等體保持媒體的什么部分,例如,由該服務(wù)對(duì)等體保持的每個(gè)數(shù)據(jù)包的塊數(shù)以及塊索引。
另外,在使用諸如以下所描述的各種擦除編碼技術(shù)等附加編碼的情況下,可用性向量將包括分配給服務(wù)對(duì)等體的媒體擦除編碼關(guān)鍵字、以及由服務(wù)對(duì)等體保持的擦除塊的數(shù)目。此外,如果服務(wù)對(duì)等體使用擦除編碼,并且該媒體也被嵌入編碼,則可用性向量將包括所分配的媒體擦除編碼關(guān)鍵字、以及該嵌入編碼所使用的不同比特率級(jí)別處的每個(gè)數(shù)據(jù)包的擦除塊的數(shù)目。
給定可用性向量,下一步是讓客戶機(jī)檢索將要從對(duì)等體集群流傳送的媒體的“媒體頭部”和“媒體結(jié)構(gòu)”的長(zhǎng)度。在檢索了這些長(zhǎng)度之后,客戶機(jī)計(jì)算媒體頭部和媒體結(jié)構(gòu)的“數(shù)據(jù)單元ID”,并且,作為已分析了每個(gè)服務(wù)對(duì)等體的可用性向量的結(jié)果,根據(jù)對(duì)于什么對(duì)等體具有什么數(shù)據(jù)包ID的了解,來(lái)從對(duì)等體集群內(nèi)的一個(gè)或多個(gè)對(duì)等體中檢索它們。
一旦媒體頭部到達(dá),客戶機(jī)就分析該媒體頭部,然后配置或初始化解碼和呈現(xiàn)或回放正被流傳送的特定類型媒體(即MPEG 1/2/4、WMA、WMV等)所需要的任何音頻/視頻解碼器和呈現(xiàn)設(shè)備。一旦完成了該初始設(shè)置階段,客戶機(jī)隨后就開(kāi)始協(xié)調(diào)從如下所述的對(duì)等體群集的正在進(jìn)行的媒體主體的流傳送。特別是,給定特定流媒體的前述媒體結(jié)構(gòu),客戶機(jī)計(jì)算該流媒體的數(shù)據(jù)包的數(shù)據(jù)單元ID,然后從各個(gè)對(duì)等體中逐個(gè)檢索那些數(shù)據(jù)包。
然后,客戶機(jī)周期性地更新服務(wù)對(duì)等體列表(使用用于識(shí)別服務(wù)對(duì)等體的前述方法之一),并連接到潛在的新服務(wù)對(duì)等體。在一個(gè)測(cè)試實(shí)施例中,客戶機(jī)通過(guò)發(fā)出對(duì)于每個(gè)潛在的服務(wù)對(duì)等體的周期性常規(guī)TCP連接函數(shù)的調(diào)用,來(lái)核對(duì)潛在的新服務(wù)對(duì)等體。在客戶機(jī)建立與新服務(wù)對(duì)等體的連接之后,它首先檢索前述可用性向量。然后,在接收器/客戶機(jī)的方向上,該新對(duì)等體可以加入群集中的其它活動(dòng)對(duì)等體。然后,客戶機(jī)協(xié)調(diào)這些對(duì)等體、根據(jù)其服務(wù)帶寬和內(nèi)容可用性來(lái)平衡這些對(duì)等體的服務(wù)負(fù)載、并將對(duì)斷開(kāi)的或超時(shí)的對(duì)等體的無(wú)法履行的請(qǐng)求重定向到其它活動(dòng)對(duì)等體中的一個(gè)或多個(gè)。然后,流傳送操作按這個(gè)方式繼續(xù)進(jìn)行,直到全部流媒體被接收,或者該流傳送操作被用戶停止。
2.2系統(tǒng)體系結(jié)構(gòu)縱覽以上概述的過(guò)程由圖3中的通用系統(tǒng)框圖來(lái)示出。具體地,如這里所描述的,圖3中的系統(tǒng)框圖示出了用于實(shí)現(xiàn)PeerStreamer的程序模塊之間的相互關(guān)系。應(yīng)該注意,由圖3中的折線或虛線來(lái)表示的任何方框以及方框之間的互連表示這里所描述的PeerStreamer的替換實(shí)施例;并且,如下所述,可以結(jié)合在這整個(gè)文檔中描述的其它替換實(shí)施例來(lái)使用任何或所有這些替換實(shí)施例。
一般而言,通過(guò)讓客戶機(jī)使用對(duì)等體位置模塊305來(lái)檢索或識(shí)別保持所請(qǐng)求的流媒體的全部或一部分的附近的服務(wù)對(duì)等體220的列表310,PeerStreamer開(kāi)始對(duì)于每個(gè)客戶機(jī)210的操作。注意,在該上下文中,媒體服務(wù)器200也可以擔(dān)當(dāng)服務(wù)對(duì)等體220之一。對(duì)等體位置模塊305使用各種方法來(lái)檢索對(duì)等體列表310。例如,在一個(gè)實(shí)施例中,直接從服務(wù)器200提供對(duì)等體列表310。在另一個(gè)實(shí)施例中,從已知的服務(wù)對(duì)等體220中檢索對(duì)等體列表310。最后,在又一個(gè)實(shí)施例中,對(duì)等體位置模塊305使用常規(guī)的分布式散列表(DHT)來(lái)識(shí)別服務(wù)對(duì)等體220。如上所述,對(duì)等體列表305包括保持服務(wù)媒體的完整或部分副本的一個(gè)或多個(gè)相鄰服務(wù)對(duì)等體220的IP地址以及監(jiān)聽(tīng)端口。
服務(wù)媒體本身由存在于服務(wù)器200上的媒體編碼模塊300通過(guò)使用多種常規(guī)編解碼器(包括例如MPEG 1/2/4、WMA、WMV等)中的任何一個(gè)來(lái)進(jìn)行編碼。注意,如這里進(jìn)一步詳細(xì)描述的,用來(lái)為媒體編碼的編解碼器可以是嵌入的或非嵌入的。另外,在一個(gè)實(shí)施例中,如以下進(jìn)一步詳細(xì)描述的“高速率擦除彈性編碼”結(jié)合任何編解碼器來(lái)使用,以提供對(duì)本質(zhì)上不可靠的服務(wù)對(duì)等體220的提高的健壯性。
最初,所編碼的媒體只存在于最初在其上為該媒體編碼的服務(wù)器上。然后,它全部或部分地被分發(fā)給服務(wù)對(duì)等體220中的一個(gè)或多個(gè)(再一次,服務(wù)器200也可以擔(dān)當(dāng)用于媒體流傳送用途的服務(wù)對(duì)等體)。對(duì)服務(wù)對(duì)等體220的分發(fā)要么是媒體流的數(shù)據(jù)包對(duì)對(duì)等體的直接分發(fā)的結(jié)果;要么作為當(dāng)媒體最初被流傳送到該服務(wù)對(duì)等體時(shí)令已流傳送該媒體的一個(gè)或多個(gè)對(duì)等體(當(dāng)擔(dān)當(dāng)客戶機(jī)210時(shí))僅僅高速緩存該媒體的全部或一部分的結(jié)果。在任何情況下,出于解釋的目的,假設(shè)有多個(gè)已知的對(duì)等體(如對(duì)等體列表310所定義的),并且,每個(gè)對(duì)等體保持將要流傳送的已編碼媒體的全部或一部分。
一旦客戶機(jī)210檢索了可用服務(wù)對(duì)等體的列表310,該客戶機(jī)就經(jīng)由從每個(gè)對(duì)等體中檢索前述可用性向量的可用性向量檢索模塊320連接到每個(gè)服務(wù)對(duì)等體220。接下來(lái),給定每個(gè)對(duì)等體320的可用性向量的信息,客戶機(jī)210隨后使用媒體頭部/媒體結(jié)構(gòu)分析模塊325來(lái)檢索關(guān)于將要從對(duì)等體群集220流傳送的媒體頭部和媒體結(jié)構(gòu)的“媒體頭部”和“媒體結(jié)構(gòu)”的長(zhǎng)度。在檢索了這些長(zhǎng)度之后,客戶機(jī)210分析該媒體頭部,然后使用客戶機(jī)配置模塊330來(lái)配置或初始化解碼和呈現(xiàn)或回放正被流傳送的特定類型媒體(即MPEG 1/2/4、WMA、WMV等)所需要的任何音頻/視頻解碼器和呈現(xiàn)設(shè)備。
此外,媒體頭部/媒體結(jié)構(gòu)分析模塊325也根據(jù)該媒體結(jié)構(gòu)和媒體頭部的分析來(lái)確定,在對(duì)將要流傳送的媒體進(jìn)行編碼的過(guò)程中,是否已使用嵌入編碼媒體或高速率擦除彈性編碼中的任何一項(xiàng)或兩項(xiàng)。
然后,數(shù)據(jù)單元ID計(jì)算模塊335用于基于媒體頭部和媒體結(jié)構(gòu)中所包括的信息來(lái)計(jì)算流媒體的數(shù)據(jù)包的“數(shù)據(jù)單元ID”。然后,數(shù)據(jù)單元請(qǐng)求模塊340使用所計(jì)算的數(shù)據(jù)單元ID向?qū)Φ润w群集220中的各個(gè)對(duì)等體請(qǐng)求流媒體的特定數(shù)據(jù)包或數(shù)據(jù)塊。
在PeerStreamer使用嵌入編碼媒體的情況下,如以下進(jìn)一步詳細(xì)描述的,流傳送比特率根據(jù)可用的服務(wù)帶寬和客戶機(jī)隊(duì)列狀態(tài)而改變。在此情況下,由數(shù)據(jù)單元請(qǐng)求模塊340提出的對(duì)于媒體數(shù)據(jù)包或數(shù)據(jù)單元的檢索的正在進(jìn)行的請(qǐng)求對(duì)應(yīng)于將基于可用帶寬來(lái)提供最小的速率失真的那些數(shù)據(jù)包(或數(shù)據(jù)塊)。另外,在使用高速率擦除彈性編碼的另一情況下,多個(gè)服務(wù)對(duì)等體保持部分媒體而無(wú)沖突,以便客戶機(jī)僅僅檢索固定數(shù)量的擦除編碼塊,而不管在哪里檢索和檢索什么特定的塊。
在任何情況下,當(dāng)客戶機(jī)210經(jīng)由數(shù)據(jù)單元處理模塊345來(lái)檢索媒體的流傳送塊時(shí),該客戶機(jī)將會(huì)要么如下所述那樣傳遞將要被解碼的那些數(shù)據(jù)包,要么數(shù)據(jù)單元處理模塊將首先從數(shù)據(jù)塊重建該媒體流的數(shù)據(jù)包(見(jiàn)以下關(guān)于高速率擦除編碼的討論)。此外,客戶機(jī)210將周期性地更新服務(wù)對(duì)等體列表310(使用用于識(shí)別服務(wù)對(duì)等體的前述方法之一)。無(wú)論何時(shí)或按某個(gè)所需的頻率更新了列表310,客戶機(jī)210將連接到潛在的新服務(wù)對(duì)等體,以檢索前述可用性向量。然后,在接收器/客戶機(jī)210的方向上,該新對(duì)等體可以加入群集220中的其它活動(dòng)對(duì)等體。
然后,客戶機(jī)210協(xié)調(diào)對(duì)等體320、根據(jù)其服務(wù)帶寬和內(nèi)容可用性來(lái)平衡這些對(duì)等體的服務(wù)負(fù)載、并將斷開(kāi)的或超時(shí)的對(duì)等體的無(wú)法履行的請(qǐng)求重定向到其它活動(dòng)對(duì)等體中的一個(gè)或多個(gè)。然后,流傳送操作按這個(gè)方式繼續(xù)進(jìn)行,直到全部流媒體經(jīng)由解碼/呈現(xiàn)/回放模塊350而被接收、解碼、呈現(xiàn)和回放。注意,經(jīng)由常規(guī)的顯示設(shè)備355和/或揚(yáng)聲器360來(lái)提供已解碼媒體的回放,向這些顯示設(shè)備355和/或揚(yáng)聲器360提供其來(lái)自解碼/呈現(xiàn)/回放模塊350的輸入。
3.0操作縱覽上述程序模塊用于實(shí)現(xiàn)PeerStreamer。如以上概述,PeerStreamer提供用于松散耦合的P2P網(wǎng)絡(luò)的接收器驅(qū)動(dòng)對(duì)等(P2P)媒體流傳送。以下各個(gè)章節(jié)詳細(xì)討論P(yáng)eerStreamer的操作、以及用于實(shí)現(xiàn)根據(jù)圖2而在章節(jié)2中描述的程序模塊的示例性方法。特別地,在詳細(xì)描述以下在章節(jié)3.1和3.2中所提供的PeerStreamer操作之后,在圖10中呈現(xiàn)操作流程圖,它鑒于該詳細(xì)描述來(lái)概述PeerStreamer的總操作。
3.1PeerStreamer的操作細(xì)節(jié)以下各段詳述這里所描述的PeerStreamer的特定操作實(shí)施例和替換實(shí)施例。具體地,以下各段描述PeerStreamer所使用的“流媒體模型”;所請(qǐng)求的流媒體的“媒體結(jié)構(gòu)”(基本上是定義計(jì)算用于檢索媒體數(shù)據(jù)包或“數(shù)據(jù)單元”的數(shù)據(jù)ID所需要的流媒體的特征的“伴隨文件”);表示用于流傳送的媒體數(shù)據(jù)包的固定尺寸部分的PeerStreamer數(shù)據(jù)單元;用于降低存儲(chǔ)要求的媒體的局部高速緩存;用于提高PeerStreamer系統(tǒng)對(duì)本質(zhì)上不可靠的服務(wù)對(duì)等體的健壯性的媒體的高速率擦除編碼。
3.1.1流媒體模型一般而言,流媒體包括當(dāng)?shù)竭_(dá)時(shí)被解碼和呈現(xiàn)的數(shù)據(jù)包流(因此具有名稱流傳送)。若無(wú)流傳送,在可以使用它之前,必須以一個(gè)大塊下載全部媒體。在圖4中,示出了PeerStreamer所使用的流媒體文件的通用結(jié)構(gòu)。
具體地,如圖4所示的,媒體由“媒體頭部”來(lái)引導(dǎo),它包含描述該媒體的全局信息,例如,該媒體中的通道數(shù)目、每個(gè)通道的屬性和特征(音頻采樣率、視頻分辨率/幀速率)、所使用的編解碼器、該媒體的作者/版權(quán)持有者等。通常在流傳送會(huì)話開(kāi)始之前下載媒體頭部,以便客戶機(jī)可以設(shè)立這些必要的工具來(lái)對(duì)隨后接收的數(shù)據(jù)包進(jìn)行解碼和呈現(xiàn)。注意,流媒體可以包括幾個(gè)通道,其中每個(gè)通道是可以被獨(dú)立地選擇和解碼的單獨(dú)的媒體分量,例如,英語(yǔ)音軌、西班牙語(yǔ)音軌、4:3視頻、16:9視頻等。
媒體頭部后面是媒體數(shù)據(jù)包序列,其中每個(gè)媒體數(shù)據(jù)包包含跨越短時(shí)期的某個(gè)通道的壓縮比特流。每個(gè)媒體數(shù)據(jù)包由數(shù)據(jù)包頭部來(lái)引導(dǎo),它包含諸如通道索引、數(shù)據(jù)包的起始時(shí)間標(biāo)記、數(shù)據(jù)包的持續(xù)時(shí)間、以及標(biāo)志數(shù)量等信息,例如,該數(shù)據(jù)包是否是關(guān)鍵幀(例如,MPEGI幀)、該數(shù)據(jù)包是否是嵌入編碼的數(shù)據(jù)包(具有可截?cái)嗟谋忍亓?等等。然后是數(shù)據(jù)包的壓縮比特流。
如今大多數(shù)的常規(guī)壓縮媒體編解碼器(例如,MPEG1/2/4音頻/視頻、WMA/WMV、RealAudio/Realvideo等)生成非嵌入的編碼媒體數(shù)據(jù)包。因此,無(wú)法更改這類系統(tǒng)所生成的媒體數(shù)據(jù)包的大小。而且,只要這一比特流中的媒體數(shù)據(jù)包之一被丟失或被過(guò)度延遲,結(jié)果都是,要么該媒體不是可解碼的,要么該回放變得紊亂或間斷,從而降低流媒體的回放質(zhì)量。為了保持與這些常規(guī)編解碼器相兼容,在一個(gè)實(shí)施例中,PeerStreamer系統(tǒng)和方法允許媒體數(shù)據(jù)包是非嵌入編碼的(不可縮放)。但是,除了支持傳統(tǒng)的壓縮媒體格式以外,PeerStreamer在一個(gè)實(shí)施例中也支持嵌入的編碼媒體。
利用嵌入的編碼媒體,每個(gè)媒體數(shù)據(jù)包按可以被獨(dú)立地向后截?cái)嗟姆椒▉?lái)編碼。一般而言,兩種類型的嵌入編碼得到PeerStreamer的支持——位平面編碼和增強(qiáng)層編碼。注意,對(duì)本領(lǐng)域的技術(shù)人而言,這兩種類型的嵌入編碼都是公知的。因此,在以下各段中,將只概括地描述這些編碼。
例如,利用位平面編碼,通常通過(guò)逐個(gè)位平面地(從最高位平面(MSB)到最低位平面(LSB))對(duì)音頻/視頻變換系數(shù)塊進(jìn)行編碼,來(lái)實(shí)現(xiàn)媒體塊的可縮放編碼。如果在編碼之后截?cái)啾忍亓?,那么,為所有這些系數(shù)的最高位平面中的幾個(gè)保留該信息。而且,被截?cái)嗟谋忍亓鲗?duì)應(yīng)于較低比特率的壓縮比特流,它可以被認(rèn)為是嵌入在較高比特率壓縮的比特流中,因而是具有名稱嵌入編碼。結(jié)果,可以截?cái)嘣撉度刖幋a器所生成的媒體數(shù)據(jù)包,具有適度的速率-失真折衷。
利用增強(qiáng)層編碼,媒體內(nèi)容被壓縮成基層以及一個(gè)或多個(gè)增強(qiáng)層,其中每個(gè)層通常占據(jù)單獨(dú)的通道。具體地,這類編碼允許將要接收的最低質(zhì)量媒體流預(yù)訂該基層。隨著每個(gè)接連的增強(qiáng)層的添加,解碼的媒體質(zhì)量得到改善。因此,利用這類系統(tǒng),取決于可用帶寬,并通過(guò)預(yù)訂基層和盡可能多的增強(qiáng)層,接收器或客戶機(jī)通常可優(yōu)化所接收的信息的質(zhì)量。
3.1.2PeerStreamer媒體結(jié)構(gòu)為了在接收器驅(qū)動(dòng)模式中進(jìn)行操作,PeerStreamer客戶機(jī)需要知道將要被請(qǐng)求的媒體數(shù)據(jù)包的結(jié)構(gòu),以便它可以知道向每個(gè)對(duì)等體請(qǐng)求什么數(shù)據(jù)包和每個(gè)數(shù)據(jù)包的什么部分。該信息在一“伴隨文件”中提供,該“伴隨文件”包括將要被請(qǐng)求的流媒體的結(jié)構(gòu)的定義。一般而言,該媒體結(jié)構(gòu)為PeerStreamer客戶機(jī)提供整個(gè)媒體的概觀(例如,每個(gè)數(shù)據(jù)包的起始時(shí)間標(biāo)記、每個(gè)數(shù)據(jù)包的持續(xù)時(shí)間等),以便它可以智能地計(jì)劃P2P流傳送會(huì)話,并確保特定的媒體數(shù)據(jù)包及時(shí)到達(dá)以供解碼和呈現(xiàn)。注意,在原先為媒體文件編碼時(shí),最初生成包含媒體結(jié)構(gòu)信息的伴隨文件;然后,該伴隨文件在每個(gè)流傳送會(huì)話的起始處請(qǐng)求時(shí),連同該媒體頭部的初始請(qǐng)求一起被流傳送到客戶機(jī)。注意,在由常規(guī)編解碼器為該媒體編碼之后,通過(guò)分析該媒體頭部和數(shù)據(jù)包頭部,也可以生成伴隨文件中的信息。
具體地,一組數(shù)據(jù)包的媒體結(jié)構(gòu)由數(shù)據(jù)包頭部加上數(shù)據(jù)包比特流長(zhǎng)度組成。因此,該信息可以由客戶機(jī)用來(lái)確定應(yīng)該請(qǐng)求哪些特定的數(shù)據(jù)包、應(yīng)該請(qǐng)求那些數(shù)據(jù)包的時(shí)間、以及應(yīng)該向其請(qǐng)求那些數(shù)據(jù)包的對(duì)等體。因此,PeerStreamer在流“設(shè)置”階段首先檢索全部媒體的媒體結(jié)構(gòu)。通過(guò)在實(shí)際上流傳送媒體之前檢索信息,可引起流設(shè)置中的小延遲。但是,通過(guò)在媒體流傳送之前首先檢索信息,在帶寬方面沒(méi)有用于將媒體結(jié)構(gòu)信息供應(yīng)給客戶機(jī)的額外成本(在媒體流傳送期間)。
注意,相對(duì)于流媒體的總長(zhǎng)度而言,起始流中的前述延遲通常很小。例如,在PeerStreamer的一個(gè)測(cè)試實(shí)施例中,大小范圍從31兆字節(jié)(MB)到49MB的五個(gè)測(cè)試影片剪輯具有在大約37千字節(jié)(KB)至大約53KB的范圍內(nèi)的媒體結(jié)構(gòu)伴隨文件。所以,觀察到,該媒體結(jié)構(gòu)大小是總媒體主體的大約0.10-0.15%的數(shù)量級(jí)。所以,假設(shè)服務(wù)帶寬大于或等于媒體比特率,并且媒體結(jié)構(gòu)是媒體主體的0.15%,那么,下載10分鐘剪輯的媒體結(jié)構(gòu)會(huì)引起少于0.9s的額外的延遲。
在一個(gè)相關(guān)實(shí)施例中,為某個(gè)預(yù)定長(zhǎng)度(即10秒、30秒、1分鐘等)的順序媒體段生成局部媒體結(jié)構(gòu)。然后,在對(duì)應(yīng)的媒體段將要在不遠(yuǎn)的將來(lái)被流傳送之前,只檢索每個(gè)局部媒體結(jié)構(gòu)。這略微增加帶寬要求,因?yàn)槊襟w結(jié)構(gòu)請(qǐng)求和傳輸可以與媒體數(shù)據(jù)包請(qǐng)求和傳輸共存。但是,由于媒體結(jié)構(gòu)的大小在此情況下是如此小,因此,通??梢院雎詫?duì)全部帶寬要求的影響。
3.1.3PeerStreamer數(shù)據(jù)單元在一個(gè)實(shí)施例中,PeerStreamer將媒體數(shù)據(jù)包、媒體頭部和媒體結(jié)構(gòu)分成長(zhǎng)度為L(zhǎng)的各個(gè)固定大小數(shù)據(jù)單元。使用固定大小數(shù)據(jù)單元的原因是,PeerStreamer客戶機(jī)和服務(wù)對(duì)等體隨后可以預(yù)先分配大小為L(zhǎng)的存儲(chǔ)器塊,從而在流過(guò)程期間避免費(fèi)用昂貴的存儲(chǔ)器分配操作。另外,通過(guò)將媒體數(shù)據(jù)包(潛在地說(shuō),很大)分成小的固定大小數(shù)據(jù)單元,也可允許PeerStreamer客戶機(jī)將服務(wù)負(fù)載分配給具有較小粒度的對(duì)等體,從而在這些對(duì)等體之中實(shí)現(xiàn)更好的帶寬負(fù)載平衡。一般而言,通過(guò)將每個(gè)數(shù)據(jù)包分成 個(gè)數(shù)據(jù)單元,來(lái)將長(zhǎng)度為P的數(shù)據(jù)包(可以是媒體數(shù)據(jù)包、媒體頭部或媒體結(jié)構(gòu))分成大小為L(zhǎng)的塊,其中, 是返回大于或等于x的最小整數(shù)的常規(guī)天棚函數(shù)。于是,所有數(shù)據(jù)單元具有固定長(zhǎng)度L,潛在地除每個(gè)數(shù)據(jù)包的最后一個(gè)的數(shù)據(jù)單元以外(其長(zhǎng)度是P mod L)。
在使用媒體的非嵌入編碼的情況下,在網(wǎng)絡(luò)傳輸期間,不能丟棄構(gòu)成每個(gè)媒體數(shù)據(jù)包的數(shù)據(jù)單元而不降低媒體回放質(zhì)量。所以,這些數(shù)據(jù)包被指定為“必要數(shù)據(jù)單元”,因?yàn)樗鼈兌急仨毤右越邮铡?br> 相反,當(dāng)嵌入編碼媒體數(shù)據(jù)包被分成各個(gè)數(shù)據(jù)單元時(shí),只有基層數(shù)據(jù)單元必須被傳遞,并且,如果服務(wù)帶寬不足夠,那么,可以隨意地丟棄剩余的數(shù)據(jù)單元。這些可任選的數(shù)據(jù)單元被指定為“非必要數(shù)據(jù)單元”。這些非必要數(shù)據(jù)單元的服務(wù)所要求的帶寬可以被計(jì)算如下。例如,在嵌入編碼的情況下,媒體數(shù)據(jù)包將持續(xù)T秒。假設(shè)媒體數(shù)據(jù)包被分成多個(gè)數(shù)據(jù)單元,那么,為了將層i處的數(shù)據(jù)單元供應(yīng)給客戶機(jī),也必須將層i以下的所有數(shù)據(jù)單元供應(yīng)給客戶機(jī)。結(jié)果,供應(yīng)層i處的數(shù)據(jù)單元所要求的服務(wù)帶寬是Ri=(i+1)L/T 公式1所以,公式1提供當(dāng)考慮到嵌入編碼媒體時(shí)數(shù)據(jù)單元的比特率R。然后,通過(guò)丟棄可能會(huì)導(dǎo)致可用服務(wù)帶寬超過(guò)的比特率的非必要數(shù)據(jù)單元,PeerStreamer客戶機(jī)可調(diào)整成更改服務(wù)帶寬。
在任何情況下,無(wú)論媒體被非嵌入編碼還是被嵌入編碼,特定媒體流的所有數(shù)據(jù)單元,包括媒體數(shù)據(jù)包、媒體頭部和媒體結(jié)構(gòu)的據(jù)單元,都被映射到唯一的ID空間。例如,在一個(gè)測(cè)試實(shí)施例中,媒體數(shù)據(jù)包的數(shù)據(jù)單元從0x00000000到0xfdffffff(十六進(jìn)制)索引,媒體頭部的數(shù)據(jù)單元從0xfe000000-0xfeffffff編入索引,媒體結(jié)構(gòu)的數(shù)據(jù)單元從0xff000000-0xffffffff編入索引。這個(gè)測(cè)試實(shí)施例中所使用的數(shù)據(jù)單元是關(guān)于圖5中所示的PeerStreamer。
注意,為了獲得媒體頭部和媒體結(jié)構(gòu)的數(shù)據(jù)單元ID,首先需要媒體頭部和媒體結(jié)構(gòu)的長(zhǎng)度。這些被稱作它們的“兆結(jié)構(gòu)(mega-structure)”。為了獲得媒體數(shù)據(jù)包的數(shù)據(jù)單元ID,需要媒體數(shù)據(jù)包比特流的長(zhǎng)度。該信息被包括在媒體結(jié)構(gòu)中。
3.1.4媒體的局部高速緩存出于服務(wù)目的,每個(gè)服務(wù)對(duì)等體只需要保持與其服務(wù)帶寬成比例的媒體的一部分。與因特網(wǎng)連接的大多數(shù)計(jì)算機(jī)的服務(wù)(或上傳帶寬)常常實(shí)質(zhì)上小于其下載帶寬(規(guī)定每個(gè)特定節(jié)點(diǎn)可以接收的最高流傳送比特率)。因此,因特網(wǎng)上的每個(gè)最終用戶節(jié)點(diǎn)往往在其上傳帶寬與其下載帶寬之間具有不平衡。例如,給定家庭用戶可以獲得的典型商業(yè)ADSL/電纜調(diào)制解調(diào)器網(wǎng)絡(luò)上的節(jié)點(diǎn),那么,下載帶寬比其上傳帶寬高一個(gè)數(shù)量級(jí)并非是不平常的。同樣,校園/企業(yè)網(wǎng)上的節(jié)點(diǎn)通常已改進(jìn)了服務(wù)帶寬,以便任何給定節(jié)點(diǎn)參與P2P類型活動(dòng)都不會(huì)影響其它任務(wù)關(guān)鍵功能。
因此,由于每個(gè)服務(wù)對(duì)等體通常不能夠個(gè)別地將全部媒體流供應(yīng)給客戶機(jī),因此,不需要將全部媒體流高速緩存在任何一個(gè)服務(wù)對(duì)等體上。所以,用于減少服務(wù)對(duì)等體中的任一個(gè)所要求的存儲(chǔ)資源數(shù)量的有效方法是允許每個(gè)服務(wù)對(duì)等體只保持將要被流傳送的媒體的一部分。例如,如果流傳送非嵌入編碼媒體所需要的比特率是R,并且,流傳送會(huì)話中的對(duì)等體所提供的最大服務(wù)帶寬是B,那么,每個(gè)對(duì)等體節(jié)點(diǎn)只需要在其高速緩存中保持該流媒體的p部分,其中的值p由公式2來(lái)表示p=max(1.0,B/R) 公式2例如,假設(shè)媒體比特率是服務(wù)帶寬的兩倍,即,R=2B。然后,服務(wù)對(duì)等體只需要在其存儲(chǔ)器中保持該流媒體的一半,因?yàn)樵搶?duì)等體無(wú)法獨(dú)自按完全的流傳送比特率來(lái)服務(wù)于客戶機(jī)。實(shí)際上,給定這個(gè)例子的前述限制,該對(duì)等體所能夠做得最好的是至多提供該媒體的一半。因此,該對(duì)等體只需要在其高速緩存中保持該媒體的一半。然后,將要被流傳送的媒體的其余部分必須由其它服務(wù)對(duì)等體來(lái)提供。
另外,然后應(yīng)該注意,公式1和2的組合隨后允許確定為使用嵌入編碼媒體的情況而保持的媒體量。如以上章節(jié)3.1.3中所討論的,嵌入編碼媒體的媒體數(shù)據(jù)包被分成具有不同的比特率的多個(gè)數(shù)據(jù)單元。所以,R是特定層L的數(shù)據(jù)單元的比特率,公式2現(xiàn)在給出將要為該數(shù)據(jù)單元而保持的媒體的部分。例如,如圖6所示,嵌入媒體數(shù)據(jù)包可以被分成多個(gè)數(shù)據(jù)單元(在這個(gè)例子中是8個(gè))。如圖6所示,需要為每個(gè)數(shù)據(jù)單元(具有L/T=0.5B)高速緩存的媒體量被示出為然后根據(jù)公式2來(lái)確定。
但是,在一個(gè)實(shí)施例中,在特定服務(wù)對(duì)等體的存儲(chǔ)資源足夠大的情況下,該服務(wù)對(duì)等體可以通過(guò)僅僅使用公式2中的較高的“潛在服務(wù)帶寬”B′,來(lái)選擇高速緩存該媒體的一個(gè)較大的部分。然后,被高速緩存的媒體的該額外部分允許按不連貫的、但高質(zhì)量的方式來(lái)供應(yīng)該媒體。例如,假設(shè)每個(gè)服務(wù)對(duì)等體選擇使用其實(shí)際服務(wù)帶寬兩倍的潛在服務(wù)帶寬B′(即,B′=2B),那么,該P(yáng)2P網(wǎng)絡(luò)中的所得的媒體量將足夠客戶機(jī)按流傳送速率的一半來(lái)檢索該媒體。換言之,假設(shè)所有這些可用對(duì)等體的合計(jì)服務(wù)帶寬大于R/2,那么,客戶機(jī)應(yīng)該能夠首先下載該媒體的一半,然后連續(xù)不斷地流傳送剩余的一半傳送并對(duì)其進(jìn)行回放。同樣,客戶機(jī)也可以選擇下載該媒體的Ts/2片段(具有時(shí)間Ts)、連續(xù)不斷地流傳送另一個(gè)Ts/2片段并回放該片段、然后下載另一個(gè)片段并流傳送它。這樣,該流媒體可以按速率R來(lái)回放(縱使按不連貫的方式)。
3.1.5媒體的高速率擦除編碼如上所述,對(duì)等體可能本質(zhì)上是不可靠的。因此,有利的是提供用于在PeerStreamer系統(tǒng)和方法中提供增加的冗余度的某個(gè)手段,以便有效地處理服務(wù)對(duì)等體的本質(zhì)上不可靠的服務(wù)行為。對(duì)這個(gè)問(wèn)題的處理提出了必須解決的許多關(guān)注問(wèn)題。例如,確定該媒體的哪個(gè)部分p應(yīng)該由每個(gè)對(duì)等體來(lái)保持是所關(guān)注的。另外,由于媒體最終被分成前述數(shù)據(jù)單元,因此,確定每個(gè)對(duì)等體應(yīng)該保持這些數(shù)據(jù)單元的哪個(gè)部分p也是所關(guān)注的。
解決這些問(wèn)題的一個(gè)策略是僅僅將每個(gè)數(shù)據(jù)單元分成k個(gè)塊。保持該媒體的p部分的對(duì)等體隨后可以隨機(jī)地保持 個(gè)塊, 是前述天棚函數(shù)。但是,對(duì)于這個(gè)方案的隨機(jī)性的一個(gè)問(wèn)題是即使對(duì)等體群集中存在比k個(gè)塊多得多的塊,該群集作為一個(gè)整體也可能會(huì)缺乏特定的塊j,從而致使整個(gè)數(shù)據(jù)單元無(wú)法恢復(fù)。另外,在這種方案中,客戶機(jī)仍然負(fù)責(zé)定位來(lái)自這些對(duì)等體的每個(gè)截然不同的塊,這使客戶機(jī)與對(duì)等體之間的協(xié)議設(shè)計(jì)復(fù)雜化。
因此,更好的策略是,使用“高速率擦除彈性代碼”來(lái)確保對(duì)等體中的一個(gè)或多個(gè)將具有重建特定的數(shù)據(jù)單元所必要的數(shù)據(jù)塊,同時(shí)簡(jiǎn)化客戶機(jī)上識(shí)別對(duì)等體中的哪個(gè)對(duì)等體包含該必要數(shù)據(jù)的要求。一般而言,擦除彈性代碼是具有參數(shù)(n,k)的塊糾錯(cuò)碼,其中,k是原始消息的數(shù)目,n是編碼消的息的數(shù)目。高速率擦除彈性代碼滿足n比k大得多的屬性;這樣,k個(gè)原始消息被擴(kuò)大為n個(gè)消息的大得多的編碼消息空間。盡管擦除編碼技術(shù)一般被公認(rèn)為用于為數(shù)據(jù)編碼,但如這里所描述的,該技術(shù)在P2P網(wǎng)絡(luò)環(huán)境中流傳送媒體的應(yīng)用是未知的。
作為分組糾錯(cuò)碼,可以通過(guò)伽羅瓦域(Galois Field)GF(p)上的矩陣乘法來(lái)描述高速率擦除彈性代碼的操作c0c1......cn-1=Gx0x1...xk-1,]]>公式3其中,p是伽羅瓦域的階,{x0,x1,…,xk-1}是原始消息,{c0,c1,…,cn-1}是編碼的消息,G是生成矩陣。注意,公式3不用來(lái)立即生成所有編碼的消息。而是生成矩陣G定義已編碼消息空間。所以,當(dāng)客戶機(jī)接收k個(gè)編碼的消息{c′0,c′1,…,c′k-1}時(shí),它們可以被公式4表示為c′0c′1...c′k-1=Gkx0x1...xk-1,]]>公式4其中,Gk是對(duì)應(yīng)于已編碼消息的、生成矩陣G的k行所形成的子生成矩陣。另外,如果子生成矩陣Gk具有滿秩k,那么,矩陣Gk可以被求逆,從而可以為原始消息解碼。
可以使用幾種眾所周知的擦除編碼技術(shù),包括(例如)Reed-Solomon擦除碼、tornado碼和LPDC碼。但是,在一個(gè)實(shí)施例中,PeerStreamer基于伽羅瓦域GF(216)上的修改Reed-Solomon碼來(lái)提供一種新的高速率擦除彈性代碼。在這個(gè)例子中,原始消息的數(shù)目k是16。已編碼消息空間的大小n是216=65536。Reed-Solomon碼是最大距離可分(MDS)碼。因此,生成矩陣G的任何16行形成具有滿秩16的子生成矩陣。換言之,可以從任何16個(gè)已編碼消息中恢復(fù)原始消息。應(yīng)該注意,也可以使用其它域大小p;并且,PeerStreamer不局限于這里所描述的特定域大小的運(yùn)用。另外,對(duì)于使用非MDS擦除編碼的實(shí)施例,取決于所使用的特定擦除編碼,可能有必要檢索k'≥k個(gè)塊,以恢復(fù)原始消息。使用基于Reed-Solomon的擦除代碼部分是因?yàn)樗鼈兪荕DS碼,并且,它們可以被有效地編碼和解碼,同時(shí),只將很少的計(jì)算額外開(kāi)銷施加于大多數(shù)常規(guī)計(jì)算機(jī)的CPU上。
利用高速率(n,k)擦除彈性代碼,為每個(gè)對(duì)等體節(jié)點(diǎn)分配n的已編碼消息空間中的k個(gè)關(guān)鍵字,每個(gè)關(guān)鍵字是生成矩陣G的行索引。關(guān)鍵字分配可以由服務(wù)器來(lái)執(zhí)行。另外,如果高速緩存該媒體的對(duì)等體的數(shù)目小于n/k,那么,可以為每個(gè)對(duì)等體分配一組唯一的關(guān)鍵字。結(jié)果,可以保證每個(gè)對(duì)等體保持與眾不同的已編碼消息。這個(gè)策略提供許多好處,但它仍然要求中心協(xié)調(diào)節(jié)點(diǎn)(例如,服務(wù)器)。
因此,在另一個(gè)實(shí)施例中,通過(guò)允許每個(gè)對(duì)等體選擇k個(gè)隨機(jī)關(guān)鍵字,來(lái)消除中心協(xié)調(diào)節(jié)點(diǎn)的這個(gè)角色。如果對(duì)等體節(jié)點(diǎn)的數(shù)目大于n/k,或者沒(méi)有利用中心協(xié)調(diào)節(jié)點(diǎn)來(lái)分配關(guān)鍵字,那么,某些對(duì)等體節(jié)點(diǎn)可以保持相同的關(guān)鍵字。然而,在其中客戶機(jī)被連接到m個(gè)對(duì)等體的大多數(shù)媒體流傳送會(huì)話中,m通常比n/k小得多。所以,兩個(gè)服務(wù)對(duì)等體碰巧保持相同的關(guān)鍵字,并且因此這些對(duì)等體之一的一個(gè)關(guān)鍵字無(wú)用的概率很小。但是,即使有關(guān)鍵字沖突,當(dāng)客戶機(jī)首先連接到對(duì)等體時(shí),它也可以容易地識(shí)別這類沖突。在識(shí)別這種沖突的情況下,該客戶機(jī)僅僅在流傳送會(huì)話的剩余部分內(nèi)使這些重復(fù)的關(guān)鍵字中的一個(gè)無(wú)效。因此,客戶機(jī)不需要實(shí)際上在流過(guò)程期間處理關(guān)鍵字沖突。
例如,假設(shè)S1和S2分別是服務(wù)對(duì)等體1和服務(wù)對(duì)等體2的擦除編碼關(guān)鍵字空間,并且S1={1,7,23,43,48},S2={3,7,28,49,99}。顯而易見(jiàn),關(guān)鍵字空間S1和S2是不同的。但是,關(guān)鍵字7由這兩個(gè)關(guān)鍵字空間來(lái)共享,所以,服務(wù)對(duì)等體1和服務(wù)對(duì)等體2可以保持共享同一關(guān)鍵字(即關(guān)鍵字“7”)的擦除編碼塊。所以,在請(qǐng)求特定編碼塊之前,根據(jù)服務(wù)對(duì)等體之一來(lái)使關(guān)鍵字“7”無(wú)效,以便只從這些對(duì)等體之一中檢索由關(guān)鍵字“7”編碼的那個(gè)塊,從而避免由重復(fù)關(guān)鍵字引起的任何解碼沖突。但是,應(yīng)該注意,在一個(gè)服務(wù)對(duì)等體在媒體流傳送操作期間脫機(jī)的情況下,如果作為使用一個(gè)或多個(gè)重復(fù)關(guān)鍵字的結(jié)果該脫機(jī)服務(wù)對(duì)等體以前處于沖突狀態(tài),那么,可以使另一個(gè)服務(wù)對(duì)等體的特定的已無(wú)效編碼關(guān)鍵字重新生效。
利用(65536,16)Reed-Solomon碼,每個(gè)數(shù)據(jù)單元被分割成16個(gè)塊。通過(guò)使用一組預(yù)先分配的關(guān)鍵字,該對(duì)等體選擇高速緩存 個(gè)擦除編碼塊,其中,p是從公式1和2中計(jì)算的參數(shù)。被分配給該對(duì)等體的關(guān)鍵字、以及其最大服務(wù)帶寬B組成該對(duì)等體的前述可用性向量,因?yàn)榭蛻魴C(jī)可以通過(guò)使用該對(duì)等體可用性向量所提供的信息來(lái)確定該對(duì)等體保持多少和什么擦除編碼塊(按數(shù)據(jù)單元/塊ID)。再一次,在最初連接每個(gè)對(duì)等體的時(shí)候,客戶機(jī)解決任何關(guān)鍵字沖突。在流傳送會(huì)話期間,客戶機(jī)隨后可以從任何服務(wù)對(duì)等體節(jié)點(diǎn)中檢索任何k個(gè)已編碼消息,并對(duì)相關(guān)聯(lián)的數(shù)據(jù)單元進(jìn)行解碼。
另外,沒(méi)有必要將用于為特定數(shù)據(jù)單元解碼的編碼塊的整個(gè)集合存儲(chǔ)在任何一個(gè)服務(wù)對(duì)等體上。換言之,對(duì)于任何特定數(shù)據(jù)單元的任何特定服務(wù)對(duì)等體所保持的塊的數(shù)目可能小于k。所以,在一個(gè)實(shí)施例中,只生成實(shí)際上正被傳遞到特定對(duì)等體的那些編碼塊,而不是浪費(fèi)計(jì)算能力來(lái)計(jì)算每個(gè)編碼關(guān)鍵字的每個(gè)已編碼塊。換言之,如果j<k個(gè)塊被存儲(chǔ)在特定的服務(wù)對(duì)等體上,那么,只應(yīng)該為特定數(shù)據(jù)單元生成j個(gè)塊。
3.2P2P網(wǎng)絡(luò)中的PeerStreamer操作的實(shí)現(xiàn)在以下各段中,鑒于前面對(duì)PeerStreamer的操作細(xì)節(jié)的討論,來(lái)描述PeerStreamer操作的實(shí)現(xiàn)。具體地,以下各段描述客戶機(jī)對(duì)服務(wù)對(duì)等體的定位;基于所檢索的媒體結(jié)構(gòu)的客戶機(jī)解碼和呈現(xiàn)的設(shè)置;PeerStreamer網(wǎng)絡(luò)連接;流傳送比特率控制;PeerStreamer客戶機(jī)請(qǐng)求和對(duì)等體答復(fù);以及,最后是PeerStreamer請(qǐng)求和分級(jí)隊(duì)列。
3.2.1定位服務(wù)對(duì)等體如上所述,客戶機(jī)所執(zhí)行的第一項(xiàng)任務(wù)是獲得保持服務(wù)媒體的完整或部分副本的相鄰服務(wù)對(duì)等體的列表的IP地址以及監(jiān)聽(tīng)端口。另外,該列表也在媒體流傳送會(huì)話期間被更新。如以上所解釋的,用于獲得該列表的一般方法包括1)從服務(wù)器中檢索該列表;2)從已知的服務(wù)對(duì)等體中檢索該列表;以及3)在預(yù)先既不知道媒體服務(wù)器,也不知道服務(wù)對(duì)等體的情況下,使用用于識(shí)別服務(wù)對(duì)等體的分布式散列表(DHT)方法。
3.2.2解碼和呈現(xiàn)設(shè)置在獲得服務(wù)對(duì)等體列表之后,客戶機(jī)試圖連接到這些服務(wù)對(duì)等體中的每一個(gè)。如上所述,一旦被連接,客戶機(jī)就檢索每個(gè)對(duì)等體的可用性向量,并解決任何關(guān)鍵字沖突。然后該客戶機(jī)從這些對(duì)等體之一中檢索媒體頭部和媒體結(jié)構(gòu)的長(zhǎng)度。在檢索了這兩個(gè)長(zhǎng)度之后,構(gòu)造媒體頭部和媒體結(jié)構(gòu)的數(shù)據(jù)單元的ID。然后,按如章節(jié)3.2.6中進(jìn)一步詳細(xì)描述的P2P方式來(lái)檢索媒體頭部和媒體結(jié)構(gòu)。一旦檢索了媒體頭部,客戶機(jī)就確定應(yīng)該對(duì)哪些解碼器和呈現(xiàn)器進(jìn)行初始化,以便在將媒體流傳送到客戶機(jī)時(shí)對(duì)它進(jìn)行解碼和呈現(xiàn)。
在使用DirectXTM來(lái)實(shí)現(xiàn)的一個(gè)測(cè)試實(shí)施例中,該設(shè)置通過(guò)首先根據(jù)媒體頭部中所提供的信息來(lái)構(gòu)造DirectShowTM過(guò)濾器圖來(lái)實(shí)現(xiàn)。應(yīng)該注意,這里所描述的PeerStreamer不局限于使用DirectXTM功能的實(shí)現(xiàn),并且,只出于解釋的目的來(lái)提供DirectXTM的運(yùn)用及其相對(duì)于測(cè)試實(shí)施例的討論,用于描述在為客戶機(jī)回放而解碼和呈現(xiàn)流媒體的過(guò)程中客戶計(jì)算機(jī)的設(shè)置。
所以,假設(shè)客戶機(jī)設(shè)置的DirectXTM實(shí)現(xiàn),客戶機(jī)的網(wǎng)絡(luò)組件由DirectShowTM網(wǎng)絡(luò)源過(guò)濾器來(lái)表示,其輸出被饋入正確的音頻/視頻解碼器DirectXTM媒體對(duì)象(DMO)。然后,該DMO被進(jìn)一步連接到適當(dāng)?shù)囊纛l/視頻呈現(xiàn)設(shè)備。例如,圖7示出了客戶機(jī)PeerStreamer媒體流傳送會(huì)話的示例DirectShowTM過(guò)濾器圖。在這個(gè)例子中,流媒體被非嵌入編碼。音頻比特流按WMA壓縮,視頻比特流按MPEG-4壓縮。
經(jīng)由DirectShowTM框架來(lái)使用和執(zhí)行PeerStreamer客戶機(jī)設(shè)置的一個(gè)優(yōu)點(diǎn)是,它可以使用在DirectShowTM之下開(kāi)發(fā)的巨大的現(xiàn)有音頻/視頻編碼器/解碼器庫(kù)。例如,利用DirectShowTM,PeerStreamer客戶機(jī)能夠解碼和呈現(xiàn)由各種編解碼器(包括例如MPEG 1/2/4、WMA/WMV、Indeo Video等)或具有DirectShowTM解碼器DMO組件的任何其它編解碼器來(lái)編碼的媒體。DirectShowTM也提供附加的音頻/視頻處理模塊,例如,分辨率/色彩空間轉(zhuǎn)換和解除交錯(cuò),以便所解碼的音頻/視頻可以自動(dòng)與客戶機(jī)的音頻/視頻呈現(xiàn)設(shè)備的性能相匹配。
另外,DirectShowTM自動(dòng)處理音頻/視頻軌道的同步。例如,在音頻流保持全部流的參考時(shí)鐘的情況下,當(dāng)播放流視頻時(shí),DirectShowTM確保該視頻流的系統(tǒng)定時(shí)時(shí)鐘盡可能接近于用于解決諸如嘴唇同步等問(wèn)題的音頻流時(shí)鐘。最后,DirectShow應(yīng)用程序本質(zhì)上是多線程的。因此,在多處理器PC(或啟用了超線程的PC)上,客戶機(jī)的各個(gè)組件(例如,網(wǎng)絡(luò)組件、音頻解碼器、視頻解碼器和音頻/視頻呈現(xiàn)引擎等)的計(jì)算負(fù)載可以被分發(fā)到多個(gè)處理器上。這大大加速了客戶機(jī)的執(zhí)行,并允許使用更復(fù)雜的音頻/視頻解碼器。
最后,也應(yīng)該注意,這里所描述的PeerStreamer不局限于使用DirectXTM功能的實(shí)現(xiàn);并且,出于解釋的目的,提供了DirectXTM的運(yùn)用及其相對(duì)于測(cè)試實(shí)施例的討論,只用于描述在為客戶機(jī)回放而解碼和呈現(xiàn)流媒體的過(guò)程中客戶機(jī)計(jì)算機(jī)的設(shè)置。
3.2.3PeerStreamer網(wǎng)絡(luò)鏈路和數(shù)據(jù)包丟失管理大多數(shù)媒體流客戶機(jī),例如,Windows媒體播放器或RealPlaye,使用在UDP之上所攜帶的公知的實(shí)時(shí)傳送協(xié)議(RTP)。通常為媒體流應(yīng)用程序選擇UDP/RTP,這是因?yàn)?)UDP協(xié)議支持IP多點(diǎn)傳送,它在將媒體發(fā)送到啟用了IP多點(diǎn)傳送的網(wǎng)絡(luò)上的一組節(jié)點(diǎn)的過(guò)程中會(huì)是有效率的;以及2)UDP協(xié)議不具有任何重發(fā)或數(shù)據(jù)速率管理功能。因此,流傳送服務(wù)器和客戶機(jī)可以實(shí)現(xiàn)諸如前向糾錯(cuò)(FEC)等高級(jí)數(shù)據(jù)包傳遞功能,以確保媒體數(shù)據(jù)包的及時(shí)傳遞。
但是,與以上所標(biāo)識(shí)的公知的媒體流傳送方案對(duì)比而言,PeerStreamer將TCP連接用作客戶機(jī)與服務(wù)對(duì)等體之間的網(wǎng)絡(luò)鏈路。選擇TCP連接而不是常規(guī)的UDP/RTP協(xié)議的一個(gè)原因是,由于諸如域內(nèi)路由協(xié)議、ISP商業(yè)模型(收費(fèi)模型)、沿分布樹(shù)的擁塞控制等問(wèn)題,在現(xiàn)實(shí)世界中,沒(méi)有廣泛地采用IP多點(diǎn)傳送。
此外,與許多商業(yè)媒體播放器一樣,PeerStreamer客戶機(jī)并入流媒體緩沖區(qū)(在測(cè)試實(shí)施例中是4s),以防止諸如抖動(dòng)和擁塞等網(wǎng)絡(luò)異常。實(shí)際上,給定比客戶機(jī)與服務(wù)對(duì)等體之間的往返時(shí)間(RTT)大許多倍的流媒體緩沖區(qū),那么,TCP ARQ(自動(dòng)化重復(fù)請(qǐng)求)機(jī)制對(duì)于媒體數(shù)據(jù)包在充分的時(shí)間內(nèi)的傳遞而言足夠好,以便提供流媒體的流暢的回放。
一般而言,有三種公知的機(jī)制(具有大量公知的變體)用于解決媒體數(shù)據(jù)包丟失。例如,這些機(jī)制通常包括FEC、選擇性數(shù)據(jù)包重發(fā)、以及自動(dòng)重復(fù)請(qǐng)求(ARQ)。PeerStreamer可以使用所有這些數(shù)據(jù)包丟失機(jī)制中的任一種。但是,如以下所解釋的,使用特定的機(jī)制有勝過(guò)其它機(jī)制的各種優(yōu)點(diǎn)。
具體地,對(duì)于可以被認(rèn)為是具有變化的特征和未知的數(shù)據(jù)包丟失率的擦除通道的因特網(wǎng)信道,固定的FEC方案要么浪費(fèi)帶寬(具有太多的保護(hù)),要么無(wú)法恢復(fù)丟失的數(shù)據(jù)包(具有太少的保護(hù))。這樣,它未能有效地利用客戶機(jī)與對(duì)等體之間的帶寬資源。所以,利用比RTT大許多倍的流傳送緩沖區(qū)、以及因而關(guān)于重發(fā)的許多機(jī)會(huì),基于重發(fā)的出錯(cuò)防止(例如,選擇性重發(fā)和ARQ)比FEC更可取。
考慮到ARQ和選擇性重發(fā),可見(jiàn)到,在使用TCP協(xié)議的因特網(wǎng)信道中,只有當(dāng)許多數(shù)據(jù)包沒(méi)有被選擇來(lái)重發(fā)的時(shí)候,選擇性重發(fā)將比ARQ強(qiáng)。對(duì)于非嵌入編碼媒體,丟失的數(shù)據(jù)包通常會(huì)導(dǎo)致嚴(yán)重的回放降級(jí),包括無(wú)法解碼和提供特定數(shù)據(jù)包的回放。所以,丟失的數(shù)據(jù)包幾乎總是被重發(fā)。相反,利用嵌入編碼媒體,丟失的數(shù)據(jù)包可能不會(huì)妨礙媒體回放。但是,隨機(jī)數(shù)據(jù)包的丟失仍然會(huì)使許多導(dǎo)出的數(shù)據(jù)包變得不可用。結(jié)果,只有最高增強(qiáng)層數(shù)據(jù)包可能不會(huì)被選擇來(lái)重發(fā)。
與選擇性重發(fā)相比較,一旦請(qǐng)求數(shù)據(jù)包,ARQ總是重發(fā)它們;即使它們屬于最高增強(qiáng)層。然而,ARQ方案可以選擇不請(qǐng)求隨后媒體數(shù)據(jù)包的最高增強(qiáng)層數(shù)據(jù)包,從而利用選擇性傳輸方案來(lái)實(shí)現(xiàn)相同的帶寬使用率和察覺(jué)到的媒體回放質(zhì)量。因此,除非網(wǎng)絡(luò)條件變化非常迅速,否則,TCP協(xié)議所使用的ARQ機(jī)制足以處理媒體流傳送中的數(shù)據(jù)包丟失。
將TCP用作網(wǎng)絡(luò)協(xié)議也可提供勝過(guò)諸如以上所標(biāo)識(shí)的常規(guī)媒體流傳送方案的幾個(gè)額外的好處。例如,利用TCP,不需要明確地處理流量控制、吞吐量估算、擁塞控制和避免、?;?keep alive)等等。所有這些問(wèn)題由TCP協(xié)議來(lái)自動(dòng)處理。TCP協(xié)議也可以檢測(cè)脫機(jī)的對(duì)等體,并適度地處理該對(duì)等體與客戶機(jī)之間的連接鏈路的關(guān)閉。
3.2.4具有嵌入編碼的PeerStreamer流傳送比特率控制非嵌入編碼的媒體較佳地總是按該媒體的比特率來(lái)流傳送,以避免在客戶機(jī)處的媒體回放降級(jí)。但是,嵌入編碼媒體的流傳送比特率可以在流傳送會(huì)話期間變化。
所以,在一個(gè)實(shí)施例中,每個(gè)嵌入編碼媒體數(shù)據(jù)包的流傳送比特率Rrecv首先由公式5、6和7來(lái)計(jì)算,如下所示Rraw=Th·(1+Trft-Tstaging)+Bstaging-Boutstanding公式5Rfilter=(1-α)Rfilter+αRraw公式6Rrecv=min(Rmin,Rinst) 公式7其中,Th是多個(gè)服務(wù)對(duì)等體的總計(jì)的服務(wù)帶寬,Tstaging是目標(biāo)分級(jí)緩沖區(qū)大小(在測(cè)試實(shí)施例中具有默認(rèn)值2.5s),Trft是所需的請(qǐng)求履行時(shí)間(在測(cè)試實(shí)施例中具有默認(rèn)值1.0s),Bstaging是分級(jí)隊(duì)列中所接收的數(shù)據(jù)包的長(zhǎng)度,Boutstanding是將要被接收的未完成答復(fù)的長(zhǎng)度,Rmin是基層比特率(只具有必要數(shù)據(jù)單元),α是低通控制參數(shù)。
然后,使用公式5-7的結(jié)果來(lái)通過(guò)以下總計(jì)的服務(wù)帶寬Th、以及各個(gè)分級(jí)和請(qǐng)求隊(duì)列狀態(tài)而控制流傳送比特率Rrecv,這些分級(jí)和請(qǐng)求隊(duì)列狀態(tài)在以下章節(jié)3.2.6中進(jìn)一步詳細(xì)描述。一旦確定該流傳送比特率,客戶機(jī)就只發(fā)出對(duì)具有低于流傳送比特率Rrecv的比特率的數(shù)據(jù)單元的請(qǐng)求。
在一個(gè)相關(guān)實(shí)施例中,通過(guò)也考慮數(shù)據(jù)單元的失真作用,使用更高級(jí)的策略來(lái)控制比特率Rrecv。但是,這要求客戶機(jī)獲得對(duì)數(shù)據(jù)單元的失真(或碼率失真斜率)的訪問(wèn),它必須被包括在媒體結(jié)構(gòu)中并被發(fā)送到客戶機(jī)。但是,與媒體結(jié)構(gòu)中的現(xiàn)有信息不同,數(shù)據(jù)單元的失真在解碼的過(guò)程中是不需要的,因而被認(rèn)為是額外開(kāi)銷。因此,它是將要被發(fā)送到客戶機(jī)的額外開(kāi)銷量與速率控制準(zhǔn)確度之間的折衷。
3.2.5PeerStreamer數(shù)據(jù)塊請(qǐng)求和答復(fù)圖8概括地示出了客戶機(jī)數(shù)據(jù)塊請(qǐng)求及其對(duì)對(duì)等體的答復(fù)的使用期限。具體地,如圖8所示,客戶機(jī)生成該請(qǐng)求,并通過(guò)出站TCP連接來(lái)將它發(fā)送到特定的服務(wù)對(duì)等體。另外,在網(wǎng)絡(luò)傳遞中,TCP可以將該請(qǐng)求與發(fā)給同一對(duì)等體的原先的請(qǐng)求捆綁在一起。如果原先的請(qǐng)求在傳輸過(guò)程中丟失,那么,TCP也處理該請(qǐng)求的重發(fā)。
在數(shù)據(jù)包請(qǐng)求被傳遞到對(duì)等體之后,它被存儲(chǔ)在該服務(wù)對(duì)等體的TCP接收緩沖區(qū)中。然后,該對(duì)等體處理這些請(qǐng)求,每次處理一個(gè)請(qǐng)求。對(duì)于每個(gè)請(qǐng)求,對(duì)等體從其磁盤(pán)或記憶存儲(chǔ)中讀取所請(qǐng)求的塊(可能被或可能不被擦除編碼,取決于所使用的編碼),并將所請(qǐng)求的內(nèi)容發(fā)回到客戶機(jī)。倘若從服務(wù)對(duì)等體到客戶機(jī)的TCP套接字被阻斷(即,不再有帶寬可用),那么,服務(wù)對(duì)等體將阻斷進(jìn)一步的客戶機(jī)請(qǐng)求,直到TCP連接打開(kāi)為止。
客戶機(jī)發(fā)出請(qǐng)求的時(shí)間與客戶機(jī)接收其答復(fù)的時(shí)間之間的間隔被定義為請(qǐng)求履行時(shí)間(RFT)。請(qǐng)求通常比其答復(fù)小得多,并且,與用來(lái)發(fā)回內(nèi)容的網(wǎng)絡(luò)傳遞時(shí)間相比,處理請(qǐng)求的過(guò)程中所涉及的操作(例如,磁盤(pán)讀取)通常是不重要的。所以,請(qǐng)求的RFT-Trft由公式8來(lái)計(jì)算,如下所示Trft′=(Bi,outstanding+Bcur)/Thi公式8其中,Thi是對(duì)等體i的服務(wù)帶寬,Bi,outstanding是在該請(qǐng)求之前的未被接收的答復(fù)的長(zhǎng)度,Bcur是所請(qǐng)求的內(nèi)容的長(zhǎng)度。所以,RFT是根據(jù)對(duì)等體的服務(wù)帶寬、請(qǐng)求的大小、以及來(lái)自該對(duì)等體的未被接收的內(nèi)容的大小來(lái)確定的。
一旦所請(qǐng)求的內(nèi)容數(shù)據(jù)包到達(dá)客戶機(jī)處,它就被立即移動(dòng)到分級(jí)隊(duì)列。在該分級(jí)隊(duì)列中,來(lái)自多個(gè)對(duì)等體的數(shù)據(jù)塊(可以包括擦除編碼塊)被組合和解碼為數(shù)據(jù)單元,這些數(shù)據(jù)單元被進(jìn)一步組合成媒體數(shù)據(jù)包??蛻魴C(jī)周期性地從分級(jí)隊(duì)列中除去所傳遞的媒體數(shù)據(jù)包,并將它們壓入對(duì)應(yīng)的音頻/視頻解碼器。在媒體數(shù)據(jù)包被解碼器解壓之后,未壓縮的音頻/視頻數(shù)據(jù)流被發(fā)送到音頻/視頻呈現(xiàn)單元,用于客戶機(jī)回放設(shè)備(監(jiān)視器、揚(yáng)聲器等)上的流回放。
在一個(gè)實(shí)施例中,圖8中所示的緩沖區(qū)用來(lái)防止網(wǎng)絡(luò)異常(例如,數(shù)據(jù)包丟失和抖動(dòng))。(但是,當(dāng)使用DirectShowTM實(shí)現(xiàn)時(shí),未壓縮的音頻/視頻緩沖區(qū)在DirectShow過(guò)濾器圖的控制之下,并且是不可編程的。)在PeerStreamer的一個(gè)測(cè)試實(shí)施例中,分級(jí)緩沖區(qū)的大小被設(shè)為T(mén)staging=2.5s,所需的RFT被設(shè)為T(mén)rft=1.0s,并且,所壓縮的音頻/視頻緩沖區(qū)被設(shè)為0.5s。因此,在這個(gè)測(cè)試實(shí)施例中,PeerStreamer客戶機(jī)的總緩沖區(qū)因而大約是4s。
在其中使用擦除編碼的實(shí)施例中,每個(gè)數(shù)據(jù)塊請(qǐng)求被明確地表達(dá)為某個(gè)數(shù)據(jù)單元的一組擦除編碼塊的請(qǐng)求??梢岳闷鹗?jí)K索引和所請(qǐng)求的塊的數(shù)量來(lái)標(biāo)識(shí)該擦除編碼塊組??梢酝ㄟ^(guò)32位ID來(lái)標(biāo)識(shí)該數(shù)據(jù)單元。該請(qǐng)求因而采取以下形式Data_Unit_ID[32],Start_Index[4],Number_of_Blocks[4]公式9其中,括號(hào)中的數(shù)字是每個(gè)分量的比特?cái)?shù)。
所以,如公式9所示,在擦除編碼塊的情況下,每個(gè)請(qǐng)求是5字節(jié)長(zhǎng)。另一方面,所請(qǐng)求的內(nèi)容在大小方面的范圍是128~2048個(gè)字節(jié)(數(shù)據(jù)單元長(zhǎng)度L=2048,k=16)。結(jié)果,請(qǐng)求的大小只是答復(fù)的大約0.24%~3.91%。所以,客戶機(jī)用于發(fā)送請(qǐng)求的上傳帶寬的量相對(duì)于請(qǐng)求的內(nèi)容而言非常小。
3.2.6PeerStreamer請(qǐng)求和分級(jí)隊(duì)列如上所述,PeerStreamer客戶機(jī)維持單個(gè)分級(jí)隊(duì)列,以保持所接收的數(shù)據(jù)塊(可以被擦除編碼);并且,從其中,數(shù)據(jù)塊被組裝成數(shù)據(jù)單元,然后被組裝成媒體數(shù)據(jù)包。客戶機(jī)也保持用于服務(wù)對(duì)等體中的每一個(gè)的單獨(dú)的請(qǐng)求隊(duì)列,以保持被發(fā)送到每個(gè)對(duì)等體的無(wú)法履行的請(qǐng)求。圖9示出了請(qǐng)求隊(duì)列和分級(jí)隊(duì)列的一個(gè)例子。
分級(jí)隊(duì)列是PeerStreamer客戶機(jī)的主要流緩沖區(qū)。所有接收到的內(nèi)容首先被放入該分級(jí)隊(duì)列。這些請(qǐng)求隊(duì)列用于三個(gè)目的1)用于執(zhí)行吞吐量控制和負(fù)載平衡;2)用于識(shí)別由每個(gè)服務(wù)對(duì)等體發(fā)回的答復(fù);以及3)用于處理斷開(kāi)的對(duì)等體。
請(qǐng)求隊(duì)列的第一個(gè)功能是平衡服務(wù)對(duì)等體之中的負(fù)載。在媒體被擦除編碼的情況下,對(duì)數(shù)據(jù)單元的請(qǐng)求被分成多個(gè)擦除編碼塊組的請(qǐng)求,每個(gè)組被定向到一個(gè)對(duì)等體。通過(guò)以下操作來(lái)生成這些請(qǐng)求。一當(dāng)請(qǐng)求數(shù)據(jù)單元,客戶機(jī)就首先檢驗(yàn)對(duì)等體的可用性向量,并對(duì)該數(shù)據(jù)單元計(jì)算每個(gè)對(duì)等體所保持的擦除編碼塊的數(shù)量(ai)。如果所有聯(lián)機(jī)對(duì)等體所保持的塊的總數(shù)小于k,那么,該數(shù)據(jù)單元不可檢索。如果不可檢索的數(shù)據(jù)單元是非必要的(即嵌入編碼媒體的非基層),那么,客戶機(jī)只需跳過(guò)該數(shù)據(jù)單元。
相反,如果不可檢索的數(shù)據(jù)單元是必要的(即,屬于非嵌入編碼媒體數(shù)據(jù)包、或嵌入編碼媒體數(shù)據(jù)包的基層),那么,客戶機(jī)無(wú)法繼續(xù)進(jìn)行流媒體的下載和回放。所以,在一個(gè)實(shí)施例中,它將等待更多的對(duì)等體聯(lián)機(jī),以提供這些缺少的塊。在一個(gè)替換實(shí)施例中,客戶機(jī)將跳過(guò)整個(gè)媒體數(shù)據(jù)包,并向以后的音頻/視頻解碼器將它標(biāo)記為“缺少的”。其結(jié)果將是所呈現(xiàn)的媒體中的間隙或跳躍。但是,如果無(wú)法從對(duì)等體群集中重新獲得一個(gè)必要的數(shù)據(jù)單元,那么,以后更多的必要數(shù)據(jù)單元將很可能也是不可檢索的。因此,通常更好的做法是讓客戶機(jī)等待,直到數(shù)據(jù)可用為止,以便為用戶提供更好的回放體驗(yàn)。
在確保特定數(shù)據(jù)單元是可重新檢索的之后,即,∑iai≥k公式10客戶機(jī)檢驗(yàn)每個(gè)對(duì)等體的請(qǐng)求隊(duì)列中的可用空間。需要將每個(gè)對(duì)等體的RFT保持在系統(tǒng)常數(shù)Trft左右。在一個(gè)測(cè)試實(shí)施例中,1.0s數(shù)量級(jí)的Trft提供較好結(jié)果。(注意,使用太短的請(qǐng)求隊(duì)列可能不會(huì)有效地利用從客戶機(jī)到對(duì)等體的帶寬。)具體地,如果客戶機(jī)所發(fā)送的請(qǐng)求數(shù)據(jù)包被丟失或被延遲,那么,服務(wù)對(duì)等體可能沒(méi)有什么東西要發(fā)送,這會(huì)浪費(fèi)其服務(wù)帶寬。相反,使用過(guò)長(zhǎng)的請(qǐng)求隊(duì)列可以防止客戶機(jī)迅速適應(yīng)變化,例如,對(duì)等體之一的斷開(kāi)。另外,如果請(qǐng)求隊(duì)列對(duì)于所有的對(duì)等體在RFT方面都是相同的長(zhǎng)度,該請(qǐng)求隊(duì)列的容量變得與其服務(wù)帶寬Thi·Trft成比例。
例如,假設(shè)Trft是1.0s,那么,具有服務(wù)帶寬16kbps的對(duì)等體允許其請(qǐng)求隊(duì)列中有2KB的無(wú)法履行的請(qǐng)求待決,而具有服務(wù)帶寬1Mbps的對(duì)等體允許128KB的無(wú)法履行的請(qǐng)求待決。因此,可以向特定對(duì)等體請(qǐng)求的擦除編碼塊的數(shù)量由其請(qǐng)求隊(duì)列中留出的空間來(lái)定上限ei=min(ai,(Thi·Trft-Bi,outstanding)/bk)公式11其中,ei是可以向?qū)Φ润wi請(qǐng)求的擦除編碼塊的數(shù)量,bk是擦除編碼塊的大小。
公式11保證客戶機(jī)從不發(fā)出具有大于Trft的預(yù)期的RFT的請(qǐng)求。如果客戶機(jī)無(wú)法找到足夠的當(dāng)前可用的擦除編碼塊,即,∑iei<k公式12它將等待,直到服務(wù)對(duì)等體的請(qǐng)求隊(duì)列清除為止。當(dāng)∑iei≥k時(shí),數(shù)據(jù)單元請(qǐng)求只是被形成并被發(fā)送到對(duì)等體。向某個(gè)對(duì)等體請(qǐng)求的塊的實(shí)際數(shù)目(bi)被計(jì)算如下Σibi=k,bi=min(ei,c·Thi),]]>公式13其中,c是滿足∑ibi=k的常數(shù)。
一般而言,以上略述的過(guò)程與其服務(wù)帶寬Thi成比例地將服務(wù)負(fù)載分配給每個(gè)對(duì)等體(公式13)。它也確保客戶機(jī)不會(huì)向特定服務(wù)對(duì)等體請(qǐng)求比該服務(wù)對(duì)等體實(shí)際上所高速緩存或存儲(chǔ)的更多的塊。最后,如公式11所示的,該過(guò)程也確保請(qǐng)求的RFT不超過(guò)Trft。
請(qǐng)求隊(duì)列的第二個(gè)功能是識(shí)別由每個(gè)服務(wù)對(duì)等體發(fā)回的內(nèi)容。如上所述,PeerStreamer客戶機(jī)和對(duì)等體通過(guò)TCP來(lái)進(jìn)行通信,它保存數(shù)據(jù)傳輸?shù)捻樞?,并保證數(shù)據(jù)包傳遞。而且,每個(gè)對(duì)等體依次處理傳入的請(qǐng)求。結(jié)果,不需要明確地識(shí)別被發(fā)回的內(nèi)容,因?yàn)樗仨氋澇擅總€(gè)對(duì)等體的請(qǐng)求隊(duì)列中待決的第一個(gè)請(qǐng)求。
對(duì)于上述的請(qǐng)求隊(duì)列的第三個(gè)功能,該請(qǐng)求隊(duì)列也用來(lái)使斷開(kāi)的對(duì)等體的各個(gè)請(qǐng)求重定向。例如,只要特定的服務(wù)對(duì)等體與客戶機(jī)斷開(kāi),該斷開(kāi)事件都由TCP協(xié)議來(lái)獲得,TCP協(xié)議隨后將該斷開(kāi)報(bào)告給客戶機(jī)。然后,客戶機(jī)將斷開(kāi)的對(duì)等體的隊(duì)列中待決的所有無(wú)法履行的請(qǐng)求再分配給剩余的對(duì)等體中的一個(gè)或多個(gè)。用于再分配請(qǐng)求的過(guò)程十分類似于用于分配第一個(gè)地方的請(qǐng)求的過(guò)程。唯一的例外是,在請(qǐng)求再分配時(shí),必須考慮已經(jīng)向斷開(kāi)的對(duì)等體請(qǐng)求的塊的數(shù)目。
最后,只要擦除編碼塊到達(dá)客戶機(jī)處,它們都立即離開(kāi)TCP套接字。在將到達(dá)的內(nèi)容與待決的請(qǐng)求配對(duì)之后,從請(qǐng)求隊(duì)列中除去已履行的請(qǐng)求。然后,所識(shí)別的擦除編碼塊被放入分級(jí)隊(duì)列。結(jié)果,分級(jí)隊(duì)列的大小增加。如果分級(jí)隊(duì)列達(dá)到預(yù)定大小Tstaging,那么,不發(fā)送媒體數(shù)據(jù)包/數(shù)據(jù)單元的更多請(qǐng)求。一旦已接收某個(gè)數(shù)據(jù)單元的所有擦除編碼塊,該數(shù)據(jù)單元就被擦除解碼,并被標(biāo)記為“就緒”。如果所有其所請(qǐng)求的數(shù)據(jù)單元就緒,那么,媒體數(shù)據(jù)包變成就緒。音頻/視頻解碼器周期性地從分級(jí)隊(duì)列中除去“就緒”的媒體數(shù)據(jù)包。這減小分級(jí)隊(duì)列的大小,并可能會(huì)觸發(fā)新媒體數(shù)據(jù)包請(qǐng)求的生成。
以上所述的媒體流傳送操作隨后繼續(xù)進(jìn)行,直到完成媒體文件的回放,或直到諸如沒(méi)有足夠的對(duì)等體可用來(lái)流傳送媒體等時(shí)刻,或用戶終止流傳送會(huì)話。
3.3PeerStreamer操作以上根據(jù)圖2至圖9描述的過(guò)程由圖10中的通用操作流程圖來(lái)示出。一般而言,圖10展示了示出PeerStreamer的幾個(gè)操作實(shí)施例的示例性操作流程圖。應(yīng)該注意,由圖10中的虛線來(lái)表示的任何方框和方框之間的互連表示這里所描述的PeerStreamer的替換實(shí)施例;并且,如下所述,可以結(jié)合在整個(gè)文檔中描述的其它替換實(shí)施例來(lái)使用任何或所有這些替換實(shí)施例。
具體地,如圖10所示,在媒體流傳送操作之前,服務(wù)器200(也可能是對(duì)等體220之一)對(duì)將要流傳送的媒體進(jìn)行編碼(1000)。如上所述,PeerStreamer能夠利用許多常規(guī)編解碼器(例如,MPEG 1/2/4、WMA、WMV等)中的任何一種來(lái)進(jìn)行操作。此外,在編碼過(guò)程1000期間,服務(wù)器200也生成前述的媒體頭部和包含媒體結(jié)構(gòu)的伴隨文件。
如上所述,在一個(gè)實(shí)施例中,一旦媒體被編碼(1000),所編碼的媒體數(shù)據(jù)包就被分成(1005)多個(gè)固定大小的數(shù)據(jù)單元。另外,對(duì)于所編碼的媒體,媒體頭部和媒體結(jié)構(gòu)也被分成(1005)多個(gè)與用來(lái)分割已編碼媒體數(shù)據(jù)包的相同的固定大小的數(shù)據(jù)單元。如以上所解釋的,通過(guò)將信息分成(1005)固定長(zhǎng)度數(shù)據(jù)單元,來(lái)允許客戶機(jī)和服務(wù)對(duì)等體在媒體流傳送操作之前預(yù)先分配存儲(chǔ)塊,從而在流傳送過(guò)程期間避免計(jì)算上昂貴的存儲(chǔ)器分配操作。另外,較小的數(shù)據(jù)單元的運(yùn)用允許客戶機(jī)對(duì)每個(gè)服務(wù)對(duì)等體所消耗的確切的帶寬數(shù)量的較精細(xì)的控制,以便在流傳送操作期間滿足客戶機(jī)數(shù)據(jù)單元請(qǐng)求。
除了將已編碼媒體、媒體頭部和媒體結(jié)構(gòu)分成(1005)較小的數(shù)據(jù)單元以外,在一個(gè)實(shí)施例中,附加編碼層還用來(lái)在服務(wù)對(duì)等體本質(zhì)上不可靠的典型P2P環(huán)境中提供增加的冗余度。具體地,如上所述,在一個(gè)實(shí)施例中,使用基于關(guān)鍵字的高速率擦除彈性編碼過(guò)程1010,來(lái)將這些數(shù)據(jù)單元進(jìn)一步分成多個(gè)數(shù)據(jù)塊。
這類編碼1010的運(yùn)用確保對(duì)等體中的一個(gè)或多個(gè)將具有重建特定的數(shù)據(jù)單元所必要數(shù)據(jù)塊,同時(shí),簡(jiǎn)化客戶機(jī)上識(shí)別對(duì)等體中的哪一個(gè)包含必要數(shù)據(jù)的要求。另外,如上所述,在一個(gè)實(shí)施例中,每個(gè)服務(wù)對(duì)等體220所使用的擦除彈性編碼關(guān)鍵字被服務(wù)器200自動(dòng)分配給每個(gè)對(duì)等體。但是,在另一個(gè)實(shí)施例中,每個(gè)服務(wù)對(duì)等體220僅僅隨機(jī)地選擇擦除彈性編碼關(guān)鍵字。然后,當(dāng)每個(gè)對(duì)等體220最初由客戶機(jī)來(lái)聯(lián)系時(shí),這些關(guān)鍵字連同前述的可用性向量一起被包括在內(nèi),可用性向量由客戶機(jī)210來(lái)檢索。在隨機(jī)關(guān)鍵字實(shí)施例中,在對(duì)給定數(shù)據(jù)單元存在關(guān)鍵字沖突的情況下,客戶機(jī)隨后使一個(gè)或多個(gè)對(duì)等體的關(guān)鍵字無(wú)效。
一旦媒體最初已被編碼(1000)、被分成數(shù)據(jù)單元(1005)并可能進(jìn)一步被擦除編碼(1010),最后得到的數(shù)據(jù)單元或數(shù)據(jù)塊隨后就被分發(fā)(1015)給各個(gè)服務(wù)對(duì)等體220。該分發(fā)(1015)會(huì)是深思熟慮的,這體現(xiàn)在已編碼媒體的塊或數(shù)據(jù)包僅僅被全部或部分地提供給多個(gè)對(duì)等體,它隨后被高速緩存或存儲(chǔ)在那里,用于當(dāng)被與P2P網(wǎng)絡(luò)連接的客戶機(jī)調(diào)用時(shí)的進(jìn)一步的流傳送操作。
或者,如上所述,只要客戶機(jī)210流傳送特定的媒體文件,恢復(fù)的媒體數(shù)據(jù)包都只是編碼操作1000之后的媒體數(shù)據(jù)包。它們可以被分成數(shù)據(jù)單元(1005),并可被進(jìn)一步擦除編碼(1010);并且,客戶機(jī)可能在本地存儲(chǔ)器或存儲(chǔ)單元內(nèi)維持流傳送到它那里的內(nèi)容的至少一部分。然后,客戶機(jī)被識(shí)別為服務(wù)對(duì)等體220(在前述對(duì)等體列表310中),用于將來(lái)的流傳送操作。這個(gè)實(shí)施例的一個(gè)優(yōu)點(diǎn)是包含特定媒體文件的各個(gè)部分的對(duì)等體的數(shù)目最初很低,從而增加對(duì)服務(wù)器本身的要求,以滿足服務(wù)請(qǐng)求,但隨著時(shí)間的流逝并且更多客戶機(jī)流傳送該媒體,那些客戶機(jī)隨后將能夠擔(dān)當(dāng)用于以后的流傳送請(qǐng)求的對(duì)等體。因此,不需要明確地選擇服務(wù)對(duì)等體220,以保持將要被流傳送的媒體的全部或一部分的初始高速緩存。結(jié)果,對(duì)于試圖識(shí)別愿意接受將要被流傳送的媒體的初始高速緩存的對(duì)等體,進(jìn)一步減少服務(wù)器上的任何要求。
在任何情況下,一旦媒體已被分發(fā)(1015)給服務(wù)對(duì)等體220,客戶機(jī)210隨后就準(zhǔn)備好開(kāi)始將請(qǐng)求流傳送到那些服務(wù)對(duì)等體。另外,如上所述,出于流傳送到客戶機(jī)210的目的,服務(wù)器200也可以擔(dān)當(dāng)服務(wù)對(duì)等體220。再有,鑒于以上討論,應(yīng)該清楚,隨著時(shí)間的流逝,特定媒體文件的初始流傳送可以要求更大的服務(wù)器200牽涉,并且,更多客戶機(jī)210流傳送該媒體(并且隨后可用于擔(dān)當(dāng)服務(wù)對(duì)等體),對(duì)服務(wù)器的實(shí)際上擔(dān)當(dāng)服務(wù)對(duì)等體的各個(gè)要求被減少或甚至被消除。
這時(shí),客戶機(jī)210通過(guò)首先檢索可用服務(wù)對(duì)等體220的列表310,來(lái)開(kāi)始流傳送會(huì)話。如上所述,該列表310直接從服務(wù)器200中、從對(duì)等體220之一中、或通過(guò)使用用于識(shí)別潛在服務(wù)對(duì)等體的常規(guī)DHT方法315來(lái)檢索。一旦客戶機(jī)210檢索了對(duì)等體列表310,該客戶機(jī)隨后就連接到每個(gè)服務(wù)對(duì)等體220,并從每個(gè)對(duì)等體中檢索(1025)可用性向量。另外,在一個(gè)實(shí)施例中,客戶機(jī)210在正在進(jìn)行的流傳送操作期間周期性核對(duì)對(duì)于對(duì)等體列表310的更新(1030)。執(zhí)行這類周期性核對(duì)(1030)的一個(gè)優(yōu)點(diǎn)是在大型P2P網(wǎng)絡(luò)中,多個(gè)服務(wù)對(duì)等體任何給定的時(shí)刻正在聯(lián)機(jī)和脫機(jī)是可能的。因此,確??蛻魴C(jī)210具有已更新的對(duì)等體列表310將允許該客戶機(jī)響應(yīng)于當(dāng)前正將媒體流傳送到該客戶機(jī)的對(duì)等體220的丟失或降級(jí)。只要列表310的周期性核對(duì)(1030)指出對(duì)該列表添加新的對(duì)等體220,客戶機(jī)210就再次連接到該新的對(duì)等體,并檢索(1025)該新的對(duì)等體的可用性向量。
一旦客戶機(jī)210檢索(1025)了每個(gè)對(duì)等體220的可用性向量,該客戶機(jī)隨后就通過(guò)經(jīng)由該客戶機(jī)與那些對(duì)等體之間的網(wǎng)絡(luò)連接而請(qǐng)求對(duì)應(yīng)于來(lái)自這些對(duì)等體中的一個(gè)或多個(gè)的信息的數(shù)據(jù)單元,來(lái)檢索(1035)將要從這些服務(wù)對(duì)等體中的一個(gè)或多個(gè)流傳送的媒體的媒體頭部和媒體結(jié)構(gòu)。
如上所述,媒體頭部通常包含描述該媒體的全局信息,例如,媒體中的通道數(shù)目、每個(gè)通道的屬性和特征(音頻采樣率、視頻分辨率/幀速率)、所使用的編解碼器、媒體的作者/版權(quán)持有者、等等。因此,媒體流傳送會(huì)話的起始處的媒體頭部的檢索允許客戶機(jī)220對(duì)這些必要的工具進(jìn)行設(shè)置或初始化(1040),以便在該流傳送會(huì)話期間接收那些數(shù)據(jù)包之前對(duì)隨后接收的數(shù)據(jù)包進(jìn)行解碼(1070)和呈現(xiàn)(1075)。
另外,在檢索(1035)特定流媒體的媒體結(jié)構(gòu)之后,客戶機(jī)分析該媒體結(jié)構(gòu),并計(jì)算在流傳送過(guò)程期間將需要被請(qǐng)求的流媒體的數(shù)據(jù)單元的數(shù)據(jù)單元ID(1045)。然后,客戶機(jī)210向服務(wù)對(duì)等體220中的一個(gè)或多個(gè)逐個(gè)地請(qǐng)求那些數(shù)據(jù)單元(1050)。
另外,如上所述,在結(jié)合編碼關(guān)鍵字的隨機(jī)對(duì)等體選擇來(lái)使用擦除編碼的實(shí)施例中,客戶機(jī)210將使一個(gè)或多個(gè)對(duì)等體220上的重復(fù)關(guān)鍵字無(wú)效,以便管理關(guān)鍵字沖突(1055)。在一個(gè)相關(guān)實(shí)施例中,PeerStreamer使用嵌入編碼媒體,并且,隨后根據(jù)可用的服務(wù)帶寬和客戶機(jī)210隊(duì)列狀態(tài)來(lái)管理(1060)每個(gè)對(duì)等體220的數(shù)據(jù)請(qǐng)求(和流傳送比特率)。在此情況下,數(shù)據(jù)單元的正在進(jìn)行的請(qǐng)求(1050)對(duì)應(yīng)于將基于各個(gè)服務(wù)對(duì)等體的可用帶寬來(lái)提供最小碼率失真的那些數(shù)據(jù)包。在任何情況下,如上所述,根據(jù)已使用嵌入還是非嵌入編碼、對(duì)等體的連接狀態(tài)、以及剩下來(lái)用于請(qǐng)求和接收缺少的或后來(lái)的數(shù)據(jù)單元的時(shí)間,來(lái)再次向同一或另一對(duì)等體220請(qǐng)求(1050)缺少的或后來(lái)的數(shù)據(jù)單元。
最后,一旦根據(jù)客戶機(jī)220請(qǐng)求(1050)檢索了構(gòu)成特定媒體數(shù)據(jù)包的所有數(shù)據(jù)單元,那些數(shù)據(jù)包就被重新組裝(1065)成原始媒體數(shù)據(jù)包。然后,重新組裝的媒體數(shù)據(jù)包被解碼(1070)、被呈現(xiàn)(1075)和被提供,用于常規(guī)的顯示設(shè)備355或揚(yáng)聲器260中的任何一個(gè)或兩者上的回放。
已出于舉例說(shuō)明和描述的目的來(lái)呈現(xiàn)對(duì)PeerStreamer的前述描述。它并不意在做到詳盡或?qū)⒈景l(fā)明局限于所揭示的精確形式。按照以上的教導(dǎo),許多修改和變更是可能的。另外,應(yīng)該注意,可以在形成PeerStreamer的其它混合式實(shí)施例所需要的任何組合中使用任何或所有這些上述的替換實(shí)施例。本發(fā)明的范圍意在不受到本詳細(xì)描述的限制,而是受到所附權(quán)利要求書(shū)的限制。
權(quán)利要求
1.一種具有用于提供對(duì)等(P2P)網(wǎng)絡(luò)中的客戶機(jī)驅(qū)動(dòng)多媒體流傳送的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令包括將已編碼的媒體文件分割成具有一個(gè)或多個(gè)數(shù)據(jù)包的媒體頭部,以及具有n個(gè)數(shù)據(jù)包的媒體主體;將每一數(shù)據(jù)包分割成至少一個(gè)數(shù)據(jù)單元;將每一數(shù)據(jù)單元分割成k個(gè)原始數(shù)據(jù)塊;對(duì)每一數(shù)據(jù)單元的k個(gè)原始數(shù)據(jù)塊進(jìn)行擦除編碼,以對(duì)服務(wù)對(duì)等體群集中的多個(gè)任意的服務(wù)對(duì)等體的每一個(gè)生成從1到k個(gè)經(jīng)擦除編碼的數(shù)據(jù)塊,并將所得的經(jīng)擦除編碼的數(shù)據(jù)塊儲(chǔ)存在那些服務(wù)對(duì)等體上;對(duì)于每一數(shù)據(jù)單元,使用客戶機(jī)計(jì)算機(jī)以從所述群集中的任意服務(wù)對(duì)等體檢索總數(shù)(k′)個(gè)經(jīng)擦除編碼的數(shù)據(jù)塊,其中k′大于或等于k;使用所述客戶機(jī)計(jì)算機(jī)從k′個(gè)所檢索的經(jīng)擦除編碼的數(shù)據(jù)塊重建每一數(shù)據(jù)單元;使用所述客戶機(jī)計(jì)算機(jī)從所述服務(wù)對(duì)等體之一檢索所述媒體頭部;以及使用所述客戶機(jī)計(jì)算機(jī)從所重建的數(shù)據(jù)單元重建所述媒體主體的數(shù)據(jù)包。
2.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,使用最大距離可分(MDS)擦除碼,使得k′等于k。
3.如權(quán)利要求2所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,對(duì)所述數(shù)據(jù)單元進(jìn)行擦除編碼包括使用Reed-Solomon擦除碼,它是一種MDS擦除碼以對(duì)每一數(shù)據(jù)單元生成從1到k個(gè)經(jīng)擦除編碼的數(shù)據(jù)塊。
4.如權(quán)利要求3所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,使用所述客戶機(jī)從k個(gè)所檢索的經(jīng)擦除編碼的數(shù)據(jù)塊重建每一數(shù)據(jù)單元包括在每一組k個(gè)所檢索到的經(jīng)擦除編碼的數(shù)據(jù)塊上執(zhí)行Reed-Solomon擦除解碼操作來(lái)重建每一數(shù)據(jù)單元。
5.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述可用服務(wù)對(duì)等體群集中的每一服務(wù)對(duì)等體被分配一固定的擦除編碼關(guān)鍵字空間。
6.如權(quán)利要求5所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,被分配給所述可用服務(wù)對(duì)等體群集中的每一服務(wù)對(duì)等體的所述固定的擦除編碼關(guān)鍵字空間是由服務(wù)器計(jì)算機(jī)確定的。
7.如權(quán)利要求5所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,被分配給所述可用服務(wù)對(duì)等體群集中的每一服務(wù)對(duì)等體的所述固定的擦除編碼空間是通過(guò)令每一服務(wù)對(duì)等體隨機(jī)地生成一組其自己的擦除編碼關(guān)鍵字來(lái)確定的。
8.如權(quán)利要求5所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,在檢索任何經(jīng)擦除編碼的數(shù)據(jù)塊之前,所述客戶機(jī)計(jì)算機(jī)將所述服務(wù)對(duì)等體的一個(gè)或多個(gè)重復(fù)關(guān)鍵字無(wú)效,使得不會(huì)對(duì)共享同一擦除編碼關(guān)鍵字的一個(gè)以上可用服務(wù)對(duì)等體做出對(duì)同一關(guān)鍵字的經(jīng)擦除編碼的數(shù)據(jù)塊的請(qǐng)求。
9.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,對(duì)檢索每一經(jīng)擦除編碼的數(shù)據(jù)塊的客戶機(jī)請(qǐng)求包括每一對(duì)應(yīng)的數(shù)據(jù)單元的ID、所述對(duì)應(yīng)的數(shù)據(jù)單元的起始經(jīng)擦除編碼的數(shù)據(jù)塊索引、以及要對(duì)所述對(duì)應(yīng)數(shù)據(jù)單元檢索的經(jīng)擦除編碼數(shù)據(jù)塊的數(shù)目。
10.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括提供對(duì)所重建的數(shù)據(jù)包的實(shí)時(shí)的、基于客戶機(jī)的解碼,以提供從一個(gè)或多個(gè)所述服務(wù)對(duì)等體到所述客戶機(jī)的流媒體傳送。
11.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括提供對(duì)所重建的數(shù)據(jù)包的緩沖的、基于客戶機(jī)的解碼,以提供從一個(gè)或多個(gè)所述服務(wù)對(duì)等體到所述客戶機(jī)的流媒體傳送,并且其中,所述緩沖區(qū)用于向所述客戶機(jī)提供足夠的時(shí)間來(lái)響應(yīng)于網(wǎng)絡(luò)數(shù)據(jù)包丟失和抖動(dòng)。
12.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括在檢索任何經(jīng)擦除編碼的數(shù)據(jù)塊之前,使用所述客戶機(jī)計(jì)算機(jī)來(lái)檢索所述可用服務(wù)對(duì)等體的群集中的服務(wù)對(duì)等體的列表。
13.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,檢索所述服務(wù)對(duì)等體列表包括從所述服務(wù)對(duì)等體之一檢索所述列表、從服務(wù)器計(jì)算機(jī)檢索所述列表、以及執(zhí)行分布式散列表(DHT)查找來(lái)標(biāo)識(shí)所述服務(wù)對(duì)等體中的任一個(gè)。
14.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括對(duì)所述服務(wù)對(duì)等體列表中的每一服務(wù)對(duì)等體檢索一可用性向量,并且其中,所述可用性向量至少包括所述擦除編碼關(guān)鍵字空間的標(biāo)識(shí)以及對(duì)對(duì)應(yīng)的服務(wù)對(duì)等體的每一數(shù)據(jù)單元的經(jīng)擦除編碼的數(shù)據(jù)塊的數(shù)目。
15.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述服務(wù)對(duì)等體列表在向所述客戶機(jī)的流媒體傳送期間被周期性地更新。
16.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,包括客戶機(jī)傳送請(qǐng)求和服務(wù)對(duì)等體傳送請(qǐng)求的所述客戶機(jī)和每一服務(wù)對(duì)等體之間的通信是使用TCP通信協(xié)議來(lái)實(shí)現(xiàn)的。
17.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述客戶機(jī)和每一服務(wù)對(duì)等體之間的通信使用自動(dòng)重復(fù)請(qǐng)求(ARQ)協(xié)議來(lái)重發(fā)丟失或延遲的數(shù)據(jù)包。
18.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所編碼的媒體文件是被嵌入編碼的。
19.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括確定每一服務(wù)對(duì)等體的服務(wù)帶寬,并且其中,所生成且儲(chǔ)存在每一服務(wù)對(duì)等體上的經(jīng)擦除編碼的數(shù)據(jù)塊的數(shù)目與所述對(duì)應(yīng)的服務(wù)帶寬成正比,且與所述媒體比特率成反比,服從于k個(gè)塊的最大數(shù),使得不需要每一服務(wù)對(duì)等體保持比它能夠服務(wù)的更多的經(jīng)編碼數(shù)據(jù)塊。
20.如權(quán)利要求19所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,要從每一服務(wù)對(duì)等體檢索的經(jīng)擦除編碼的數(shù)據(jù)塊的數(shù)目是由所述客戶機(jī)計(jì)算機(jī)根據(jù)所述服務(wù)對(duì)等體的可用性向量來(lái)確定的,它包含由所述服務(wù)對(duì)等體保持的經(jīng)擦除編碼的數(shù)據(jù)塊的數(shù)目,以及每一服務(wù)對(duì)等體的服務(wù)帶寬,使得不請(qǐng)求每一服務(wù)對(duì)等體提供比它所保持的更多的經(jīng)擦除編碼數(shù)據(jù)單元。
21.一種用于在對(duì)等(P2P)網(wǎng)絡(luò)中將媒體流傳送到一個(gè)或多個(gè)客戶機(jī)的方法,包括使用一計(jì)算設(shè)備,以便將從已編碼媒體文件的數(shù)據(jù)包生成的經(jīng)擦除編碼的數(shù)據(jù)塊的子集任意地分發(fā)到多個(gè)可供服務(wù)對(duì)等體的每一個(gè);在每一服務(wù)對(duì)等體上,確定一可用性向量,它定義了由對(duì)應(yīng)的服務(wù)對(duì)等體保持的經(jīng)擦除編碼的數(shù)據(jù)塊的確切子集;在客戶機(jī)請(qǐng)求之后,向客戶機(jī)計(jì)算機(jī)提供所述可用服務(wù)對(duì)等體的列表;在所述客戶機(jī)計(jì)算機(jī)上,使用所提供的可用服務(wù)對(duì)等體的列表下載每一列出的服務(wù)對(duì)等體的可用性向量,并且還從一個(gè)或多個(gè)所述服務(wù)對(duì)等體下載所編碼的媒體文件的媒體頭部;在所述客戶機(jī)計(jì)算機(jī)上,基于對(duì)所述可用性向量的客戶機(jī)計(jì)算機(jī)分析,以及所述可用服務(wù)對(duì)等體列表,請(qǐng)求從一個(gè)或多個(gè)特定服務(wù)對(duì)等體傳送每一數(shù)據(jù)包的特定數(shù)量的經(jīng)擦除編碼的數(shù)據(jù)塊;以及響應(yīng)于所述數(shù)據(jù)塊傳送請(qǐng)求而解碼和呈現(xiàn)接收到的每一數(shù)據(jù)包,以提供所述客戶機(jī)計(jì)算機(jī)上的實(shí)時(shí)流媒體回放。
22.如權(quán)利要求21所述的方法,其特征在于,所述可用性向量至少包含所述擦除編碼關(guān)鍵字空間、以及所保持的每一數(shù)據(jù)包的經(jīng)擦除編碼的塊的數(shù)目。
23.如權(quán)利要求21所述的方法,其特征在于,分發(fā)所編碼的媒體文件的經(jīng)擦除編碼的數(shù)據(jù)塊的子集包括將所編碼的媒體文件的媒體主體分割成n個(gè)數(shù)據(jù)包;將每一數(shù)據(jù)包分割成一個(gè)或多個(gè)數(shù)據(jù)單元;將每一數(shù)據(jù)單元分割成k個(gè)原始數(shù)據(jù)塊;以及對(duì)每一數(shù)據(jù)單元的k個(gè)原始數(shù)據(jù)塊進(jìn)行擦除編碼,以對(duì)每一數(shù)據(jù)單元生成1到k個(gè)經(jīng)擦除編碼的數(shù)據(jù)塊。
24.如權(quán)利要求23所述的方法,其特征在于,向所述可用服務(wù)對(duì)等體任意地分發(fā)經(jīng)擦除編碼的數(shù)據(jù)塊的子集包括在每一所述可用服務(wù)對(duì)等體上任意地儲(chǔ)存1和k個(gè)之間的每一數(shù)據(jù)單元的經(jīng)擦除編碼的數(shù)據(jù)塊。
25.如權(quán)利要求21所述的方法,其特征在于,響應(yīng)于所述數(shù)據(jù)塊傳送請(qǐng)求解碼接收到的每一數(shù)據(jù)包包括使用所述客戶機(jī)計(jì)算機(jī)以便從所檢索的經(jīng)擦除編碼的數(shù)據(jù)塊重建每一數(shù)據(jù)單元;從所重建的數(shù)據(jù)單元重建所述媒體主體的數(shù)據(jù)包;組裝所重建的數(shù)據(jù)單元以提供所編碼的媒體文件的經(jīng)解碼版本。
26.如權(quán)利要求23所述的方法,其特征在于,對(duì)所述k個(gè)原始數(shù)據(jù)塊進(jìn)行擦除編碼包括使用Reed-Solomon擦除碼來(lái)對(duì)每一數(shù)據(jù)單元生成1到k個(gè)經(jīng)擦除編碼的數(shù)據(jù)塊。
27.如權(quán)利要求21所述的方法,其特征在于,每一可用服務(wù)對(duì)等體被分配一固定的擦除編碼關(guān)鍵字空間。
28.如權(quán)利要求27所述的方法,其特征在于,分配給每一可用服務(wù)對(duì)等體的所述固定的擦除編碼關(guān)鍵字空間是由服務(wù)器計(jì)算機(jī)來(lái)確定的。
29.如權(quán)利要求27所述的方法,其特征在于,每一服務(wù)對(duì)等體隨機(jī)地生成其自己的固定擦除編碼關(guān)鍵字空間。
30.如權(quán)利要求27所述的方法,其特征在于,所述客戶機(jī)計(jì)算機(jī)將所述服務(wù)對(duì)等體中任何重復(fù)關(guān)鍵字的一個(gè)或多個(gè)無(wú)效,使得不會(huì)對(duì)一個(gè)以上可用的服務(wù)對(duì)等體做出對(duì)同一關(guān)鍵字的經(jīng)編碼數(shù)據(jù)塊的請(qǐng)求。
31.如權(quán)利要求21所述的方法,其特征在于,所述客戶機(jī)計(jì)算機(jī)上每一數(shù)據(jù)包的解碼和呈現(xiàn)是至少部分地緩沖的。
32.如權(quán)利要求21所述的方法,其特征在于,還包括確定可用于服務(wù)所述客戶機(jī)計(jì)算機(jī)的每一服務(wù)對(duì)等體的服務(wù)帶寬。
33.如權(quán)利要求32所述的方法,其特征在于,向每一服務(wù)對(duì)等體任意地分發(fā)經(jīng)擦除編碼的數(shù)據(jù)塊的子集還包括向每一服務(wù)對(duì)等體分發(fā)與每一服務(wù)對(duì)等體的服務(wù)帶寬成比例的數(shù)目的經(jīng)擦除編碼的數(shù)據(jù)塊。
34.如權(quán)利要求32所述的方法,其特征在于,請(qǐng)求從特定服務(wù)對(duì)等體傳送的特定數(shù)目的經(jīng)擦除編碼的數(shù)據(jù)塊是與那些服務(wù)對(duì)等體的服務(wù)帶寬成比例。
35.一種用于提供從一個(gè)或多個(gè)非協(xié)作對(duì)等體到一個(gè)或多個(gè)客戶機(jī)的經(jīng)協(xié)調(diào)的接收器驅(qū)動(dòng)媒體流傳送的方法,包括將經(jīng)編碼的媒體文件分割成具有一個(gè)或多個(gè)數(shù)據(jù)包的媒體頭部,以及包括n個(gè)數(shù)據(jù)包的媒體主體,并將所述媒體頭部?jī)?chǔ)存在一個(gè)或多個(gè)可用服務(wù)對(duì)等體上;將每一數(shù)據(jù)包分割成一個(gè)或多個(gè)數(shù)據(jù)單元;將每一數(shù)據(jù)單元分割成k個(gè)原始的數(shù)據(jù)塊;對(duì)每一可用的服務(wù)對(duì)等體,對(duì)每一數(shù)據(jù)包的k個(gè)原始數(shù)據(jù)塊進(jìn)行擦除編碼,以對(duì)每一數(shù)據(jù)單元生成1到k個(gè)經(jīng)擦除編碼的數(shù)據(jù)塊,并將1到k個(gè)經(jīng)擦除編碼的數(shù)據(jù)塊儲(chǔ)存在每一對(duì)應(yīng)的服務(wù)對(duì)等體上;在每一服務(wù)對(duì)等體上,確定一可用性向量,它至少定義了擦除編碼關(guān)鍵字空間的標(biāo)識(shí)以及由所述對(duì)應(yīng)的服務(wù)對(duì)等體保持的每一數(shù)據(jù)包的經(jīng)擦除編碼數(shù)據(jù)塊的數(shù)目;響應(yīng)于客戶機(jī)請(qǐng)求向客戶機(jī)計(jì)算機(jī)提供所述可用服務(wù)對(duì)等體的列表;在所述客戶機(jī)計(jì)算機(jī)上,從所述服務(wù)對(duì)等體之一檢索所述媒體頭部;在所述客戶機(jī)計(jì)算機(jī)上,下載每一列出的服務(wù)對(duì)等體的可用性向量;在所述客戶機(jī)計(jì)算機(jī)上,從所述對(duì)等體之一下載所述媒體頭部;在所述客戶機(jī)計(jì)算機(jī)上,使用所述可用性向量來(lái)請(qǐng)求從一組一個(gè)或多個(gè)可用服務(wù)對(duì)等體下載每一數(shù)據(jù)單元的總共k′個(gè)經(jīng)擦除編碼的數(shù)據(jù)塊,其中k′大于或等于k;使用所述客戶機(jī)計(jì)算機(jī)從所述k′個(gè)下載的經(jīng)擦除編碼的數(shù)據(jù)塊重建每一數(shù)據(jù)單元;以及使用所述客戶機(jī)計(jì)算機(jī)從所重建的數(shù)據(jù)單元重建所述媒體主體的數(shù)據(jù)包。
36.如權(quán)利要求35所述的系統(tǒng),其特征在于,還包括提供所重建的數(shù)據(jù)包的實(shí)時(shí)的、基于客戶機(jī)的解碼,以提供從一個(gè)或多個(gè)所述服務(wù)對(duì)等體到所述客戶機(jī)的流媒體傳送。
37.如權(quán)利要求35所述的系統(tǒng),其特征在于,還包括提供所重建的數(shù)據(jù)包的經(jīng)緩沖的、基于客戶機(jī)的解碼,以向所述客戶機(jī)提供足夠的時(shí)間來(lái)自動(dòng)響應(yīng)于網(wǎng)絡(luò)數(shù)據(jù)包丟失和抖動(dòng)。
38.如權(quán)利要求35所述的系統(tǒng),其特征在于,對(duì)所述m個(gè)數(shù)據(jù)單元進(jìn)行擦除編碼包括使用Reed-Solomon擦除碼來(lái)對(duì)每一數(shù)據(jù)單元生成k個(gè)經(jīng)擦除編碼的數(shù)據(jù)塊。
39.如權(quán)利要求36所述的系統(tǒng),其特征在于,使用所述客戶機(jī)計(jì)算機(jī)從所述k個(gè)檢索到的經(jīng)擦除編碼的數(shù)據(jù)塊重建每一數(shù)據(jù)單元包括在每一組k個(gè)檢索到的經(jīng)擦除編碼的數(shù)據(jù)塊上執(zhí)行Reed-Solomon擦除解碼操作,以重建每一數(shù)據(jù)單元。
40.如權(quán)利要求35所述的系統(tǒng),其特征在于,每一可用服務(wù)對(duì)等體被分配一固定的擦除編碼關(guān)鍵字空間。
41.如權(quán)利要求40所述的系統(tǒng),其特征在于,分配給每一可用服務(wù)對(duì)等體的所述固定的擦除編碼關(guān)鍵字空間是由服務(wù)器計(jì)算機(jī)自動(dòng)確定的。
42.如權(quán)利要求40所述的系統(tǒng),其特征在于,分配給每一可用服務(wù)對(duì)等體的所述固定的擦除編碼關(guān)鍵字空間是通過(guò)令每一服務(wù)對(duì)等體隨機(jī)地生成其自己的擦除編碼關(guān)鍵字來(lái)確定的。
43.如權(quán)利要求40所述的系統(tǒng),其特征在于,所述客戶機(jī)計(jì)算機(jī)將在所述擦除編碼關(guān)鍵字空間中具有重復(fù)關(guān)鍵字的可用服務(wù)對(duì)等體的一個(gè)或多個(gè)關(guān)鍵字無(wú)效。
44.如權(quán)利要求35所述的系統(tǒng),其特征在于,所述客戶機(jī)請(qǐng)求經(jīng)擦除編碼的數(shù)據(jù)塊的下載包括每一對(duì)應(yīng)的數(shù)據(jù)單元的ID、所述對(duì)應(yīng)的數(shù)據(jù)單元的起始?jí)K索引、以及要對(duì)所述對(duì)應(yīng)的數(shù)據(jù)單元檢索的經(jīng)擦除編碼的數(shù)據(jù)塊的數(shù)目。
45.如權(quán)利要求35所述的系統(tǒng),其特征在于,每一所述對(duì)應(yīng)服務(wù)對(duì)等體上的經(jīng)擦除編碼的數(shù)據(jù)塊的數(shù)目,即1到k,與每一服務(wù)對(duì)等體的服務(wù)帶寬成比例。
46.如權(quán)利要求35所述的系統(tǒng),其特征在于,k′個(gè)經(jīng)擦除編碼的數(shù)據(jù)塊的每一請(qǐng)求的下載的數(shù)目k′與每一服務(wù)對(duì)等體的服務(wù)帶寬成比例。
47.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述每一數(shù)據(jù)包是嵌入編碼的,且每一數(shù)據(jù)單元具有對(duì)應(yīng)的比特率。
48.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括確定每一服務(wù)對(duì)等體的服務(wù)帶寬,并且其中,所生成且儲(chǔ)存在每一服務(wù)對(duì)等體上的經(jīng)擦除編碼的數(shù)據(jù)塊的數(shù)目與所述對(duì)應(yīng)的服務(wù)帶寬成正比,且與所述數(shù)據(jù)單元的比特率成反比,服從于k個(gè)塊的最大數(shù),使得不要求每一服務(wù)對(duì)等體保持比它能夠服務(wù)的更多的經(jīng)編碼的數(shù)據(jù)塊。
全文摘要
“PeerStreamer”提供用于松散耦合的P2P網(wǎng)絡(luò)的接收器驅(qū)動(dòng)對(duì)等(P2P)媒體流傳送。該網(wǎng)絡(luò)中的對(duì)等體只執(zhí)行簡(jiǎn)單的操作、可以高速緩存流媒體的全部或一部分、不與其他對(duì)等體協(xié)作、可以是不可靠的、以及可以在任何給定的流傳送會(huì)話期間脫機(jī)或聯(lián)機(jī)。該網(wǎng)絡(luò)中的客戶機(jī)進(jìn)行實(shí)時(shí)操作,以便協(xié)調(diào)對(duì)等體、從多個(gè)對(duì)等體流傳送媒體、執(zhí)行負(fù)載平衡、處理對(duì)等體的聯(lián)機(jī)/脫機(jī)狀態(tài)、以及執(zhí)行對(duì)該流媒體的解碼和呈現(xiàn)。在一個(gè)實(shí)施例中,PeerStreamer使用高速率擦除彈性編碼來(lái)允許多個(gè)服務(wù)對(duì)等體保持部分媒體而無(wú)沖突,以便客戶機(jī)僅僅檢索固定數(shù)量的擦除編碼塊,而不管在哪里檢索和檢索什么特定塊。在另一個(gè)實(shí)施例中,PeerStreamer使用嵌入編碼媒體來(lái)根據(jù)可用的服務(wù)帶寬和客戶機(jī)隊(duì)列狀態(tài)而改變流傳送比特率。
文檔編號(hào)H04L12/00GK1750472SQ20051009912
公開(kāi)日2006年3月22日 申請(qǐng)日期2005年8月31日 優(yōu)先權(quán)日2004年9月3日
發(fā)明者李勁 申請(qǐng)人:微軟公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1