專利名稱:一種對等網(wǎng)絡(luò)流媒體網(wǎng)絡(luò)編碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)編碼技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種對等網(wǎng)絡(luò)流媒體網(wǎng)絡(luò) 編碼方法。
背景技術(shù):
流媒體是指在網(wǎng)絡(luò)上按時間先后次序傳輸和播放的連續(xù)音、視頻數(shù)據(jù)流,具有數(shù) 據(jù)量大、邊下載邊播放等特點(diǎn),逐漸成為互聯(lián)網(wǎng)上音視頻服務(wù)的主要形式。然而,流媒體具 有嚴(yán)格的時序關(guān)系,播放要求嚴(yán)格的實時連續(xù)性。針對IP網(wǎng)絡(luò),P2P(Peer to Peer,對等) 技術(shù)通過用戶間的數(shù)據(jù)共享和對等傳輸能夠有效提高視頻播放質(zhì)量、網(wǎng)絡(luò)吞吐量等系統(tǒng)性 能,是一種有效的應(yīng)用層協(xié)作傳輸技術(shù)。然而,由于用戶群分裂、網(wǎng)絡(luò)結(jié)構(gòu)動態(tài)變化等因素, P2P流媒體分發(fā)仍存在數(shù)據(jù)“饑餓”現(xiàn)象,導(dǎo)致視頻播放中斷或質(zhì)量降低,因此,極端條件下 P2P流媒體分發(fā)的性能改善技術(shù)仍是其重點(diǎn)研究方向。在實用化網(wǎng)絡(luò)編碼應(yīng)用中,特別在流媒體分發(fā)系統(tǒng)中,最基本的工作是完成視頻 數(shù)據(jù)的分段,以實現(xiàn)段內(nèi)網(wǎng)絡(luò)編碼,在提高系統(tǒng)傳輸性能的同時保持流媒體的實時播放特 性。在已有的研究成果中,針對流媒體分發(fā)中視頻的幀播放特點(diǎn),網(wǎng)絡(luò)編碼通常采用時間分 段方式以GoP (Group of Picture,畫面組)為單位分段和以秒為單位分段,這種分段方式 有利于滿足視頻播放要求,但視頻VBR(Variable-Bit-Rate,變比特率)特性使該方式下的 數(shù)據(jù)段大小隨機(jī)波動,不便于緩沖區(qū)管理和數(shù)據(jù)調(diào)度。因此,本發(fā)明采用數(shù)據(jù)分段方式,即 每個段具有相同的分段長度。實際上,網(wǎng)絡(luò)編碼的分段長度與節(jié)點(diǎn)緩沖區(qū)、帶寬等多種因素有關(guān),并直接影響播 放起始時延、視頻播放質(zhì)量和帶寬有效負(fù)載率。因此,在滿足資源約束和視頻播放要求的綜 合條件下,最大化網(wǎng)絡(luò)編碼的分段長度可有效提高編碼數(shù)據(jù)的有效負(fù)載率,從而提高帶寬 利用率??紤]實際的P2P系統(tǒng),各節(jié)點(diǎn)提供的緩沖區(qū)等資源不同,因此它們允許的最大分段 長度,即分段長度約束是不同的。若系統(tǒng)中所有節(jié)點(diǎn)采用相同的分段長度,其最大分段長度 只能為所有節(jié)點(diǎn)分段長度約束的最小值,造成具有大緩沖區(qū)節(jié)點(diǎn)的資源浪費(fèi),降低帶寬利 用率。然而,目前針對P2P流媒體分發(fā)的網(wǎng)絡(luò)編碼設(shè)計中,還沒有實現(xiàn)對不同緩沖區(qū)的處 理,影響了 P2P系統(tǒng)性能。
發(fā)明內(nèi)容
本發(fā)明的目的旨在至少解決上述技術(shù)缺陷之一,特別針對P2P系統(tǒng)中通過將分段 長度約束按大小順序劃分為多個等級,并在同級內(nèi)使用相同的分段長度,使各節(jié)點(diǎn)能夠根 據(jù)提供的資源使用不同的分段長度,提出了一種對等網(wǎng)絡(luò)流媒體網(wǎng)絡(luò)編碼方法。為實現(xiàn)上述目的,本發(fā)明的實施例提出了一種對等網(wǎng)絡(luò)流媒體網(wǎng)絡(luò)編碼方法,包 括如下步驟基于分段長度約束對節(jié)點(diǎn)分級,所述分段長度約束為每個節(jié)點(diǎn)所能采用的可行最大分段長度,將所述節(jié)點(diǎn)分為L級,各級的節(jié)點(diǎn)數(shù)分別為k1;k2. ..kL,n = ki+k2+. . . +K,n為節(jié)點(diǎn)數(shù);根據(jù)所述節(jié)點(diǎn)分級L,確定各級節(jié)點(diǎn)不同的分段長度gi,i = 1,2,…,L ;根據(jù)所述節(jié)點(diǎn)分級L和各級的分段長度gi,對段內(nèi)數(shù)據(jù)采用隨機(jī)網(wǎng)絡(luò)編碼實現(xiàn)段內(nèi)編碼;根據(jù)所述段內(nèi)編碼得到的編碼數(shù)據(jù)塊,各級節(jié)點(diǎn)之間協(xié)同工作,低級別節(jié)點(diǎn)向同 級或高級別節(jié)點(diǎn)發(fā)送數(shù)據(jù)請求,所述被請求的同級別或高級別節(jié)點(diǎn)接收所述數(shù)據(jù)請求,并 向請求節(jié)點(diǎn)發(fā)送數(shù)據(jù)。根據(jù)本發(fā)明實施例的方法,針對P2P系統(tǒng)中各節(jié)點(diǎn)具有的不同分段長度約束,以 隨機(jī)網(wǎng)絡(luò)編碼為基礎(chǔ),通過將分段長度約束按大小順序劃分為多個等級,并在同級內(nèi)使用 相同的分段長度,使各節(jié)點(diǎn)能夠根據(jù)提供的資源使用不同的分段長度。同時,通過設(shè)計相同 長度的編碼向量和分段長度的整數(shù)倍關(guān)系等,使采用不同等級分段長度的節(jié)點(diǎn)能夠協(xié)同工 作,低級別節(jié)點(diǎn)可使用同級別或高級別節(jié)點(diǎn)的編碼數(shù)據(jù),具有較高的解碼概率。因此,本發(fā) 明內(nèi)容可用于實際P2P流媒體系統(tǒng)中的網(wǎng)絡(luò)編碼設(shè)計,以充分利用節(jié)點(diǎn)緩沖區(qū)等資源,提 高網(wǎng)絡(luò)編碼數(shù)據(jù)的有效負(fù)載率。本發(fā)明提出的上述方案,對現(xiàn)有系統(tǒng)的改動很小,不會影響系統(tǒng)的兼容性,而且實 現(xiàn)簡單、高效。本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變 得明顯,或通過本發(fā)明的實踐了解到。
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對實施例的描述中將變 得明顯和容易理解,其中圖1為根據(jù)本發(fā)明實施例的對等網(wǎng)絡(luò)流媒體網(wǎng)絡(luò)編碼的流程框圖;圖2為根據(jù)本發(fā)明實施例的基于分段長度約束的節(jié)點(diǎn)分級,L = 3的示意圖;圖3為根據(jù)本發(fā)明實施例的視頻數(shù)據(jù)的分級分段,L = 3的示意圖;圖4為根據(jù)本發(fā)明實施例的一級分段的段內(nèi)分塊及編碼示意圖;圖5為根據(jù)本發(fā)明實施例的二級分段的段內(nèi)分塊及編碼示意圖;圖6為根據(jù)本發(fā)明實施例的節(jié)點(diǎn)主動請求編碼數(shù)據(jù)塊的流程圖;圖7為根據(jù)本發(fā)明實施例的節(jié)點(diǎn)處理編碼數(shù)據(jù)塊請求的流程圖。
具體實施例方式下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終 相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附 圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。為實現(xiàn)本發(fā)明之目的,本發(fā)明實施例公開了一種對等網(wǎng)絡(luò)流媒體網(wǎng)絡(luò)編碼方法, 結(jié)合圖1所示,該方法包括如下步驟SlOl 基于分段長度約束對節(jié)點(diǎn)分級,分段長度約束為每個節(jié)點(diǎn)上的最大分段長 度,將節(jié)點(diǎn)分為L級,各級的節(jié)點(diǎn)數(shù)分別為k1; k2. . . kL, η = ki+k2+. . . +kL, η為節(jié)點(diǎn)數(shù)。具體的說,基于分段長度約束對所有節(jié)點(diǎn)分級包括首先,確定各節(jié)點(diǎn)的分段長度約束<,j = l,2,…,η。分段長度約束<為每個節(jié)點(diǎn)所能采用的可行最大分段長度。其 中,分段長度約束4是由各Peer節(jié)點(diǎn)提供的緩沖區(qū)、接入帶寬、播放時延約束等因素決定。 然后將上述各節(jié)點(diǎn)的分段長度約束<按從小到大進(jìn)行排序,即· S…《乂。根據(jù)Ρ2Ρ流 媒體系統(tǒng)結(jié)構(gòu)和解碼概率需求,估計節(jié)點(diǎn)數(shù)閾值λ。閾值λ可以保障所有節(jié)點(diǎn)在網(wǎng)絡(luò)編碼 系統(tǒng)中都能夠盡可能的解碼,即具有較高的解碼概率。其影響該閾值的因素包括網(wǎng)絡(luò)拓?fù)?結(jié)構(gòu)和需求的解碼概率,在固定其他條件下,閾值越大,解碼概率越高,反之越低。根據(jù)節(jié)點(diǎn)數(shù)閾值λ,將各節(jié)點(diǎn)分為L級,各級的節(jié)點(diǎn)數(shù)分別為
ki+k2+. . . +kL,即確定每一級的節(jié)點(diǎn)數(shù)和該級可使用的最大分段長度^nax。其中,最高級節(jié)點(diǎn)數(shù)必須大于節(jié)點(diǎn)數(shù)閾值,即& > λ,由此可以保障解碼概率。下面以節(jié)點(diǎn)分級L = 3時的分級方法為例,結(jié)合圖2詳細(xì)說明。 圖2為基于分段長度約束的節(jié)點(diǎn)分級L = 3時的示意圖,如圖2中所示,基于分段 長度約束¥將所有節(jié)點(diǎn)劃分為三個等級,即L = 3。具體的說,首先確定各節(jié)點(diǎn)的分段長度約束¥,然后對節(jié)點(diǎn)的分段長度約束按從 小到大進(jìn)行排序,即i ^·、《。根據(jù)P2P流媒體系統(tǒng)結(jié)構(gòu)和解碼概率需求,估計節(jié)點(diǎn) 數(shù)閾值λ,依據(jù)該閾值,對系統(tǒng)中所有節(jié)點(diǎn)進(jìn)行分級,即確定每一級的節(jié)點(diǎn)數(shù)和該級可使用 的最大分段長度^max。在本實施例中,將N個節(jié)點(diǎn)劃分為三級,每級節(jié)點(diǎn)數(shù)為ki;i = 1,2,3。 其中,第一級節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)為h,第二級節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)為k2,第三級節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)為k3,且 本實施例提供的網(wǎng)絡(luò)編碼分段采用數(shù)據(jù)分段方式,克服了時間分段方式造成的數(shù) 據(jù)塊大小波動的缺點(diǎn),便于緩沖區(qū)管理和數(shù)據(jù)調(diào)度。針對給定視頻,網(wǎng)絡(luò)編碼分段長度的確 定需要綜合考慮了以下因素節(jié)點(diǎn)緩沖區(qū)、動態(tài)帶寬變化范圍、播放起始時延等。S102 根據(jù)節(jié)點(diǎn)分級L,確定各級節(jié)點(diǎn)不同的分段長度gi,i = 1,2,…,L。在上述步驟中給定的節(jié)點(diǎn)分級下,確定每一級使用的分段長度gi,i = 1,2,…,L。 其中,一級以上的分段長度gi(i ^ 2)為一級分段長度&的整數(shù)倍。設(shè)視頻數(shù)據(jù)總長度為S,則分段長度gl把該視頻數(shù)據(jù)等分成m段,即S = mXgl。 若節(jié)點(diǎn)共分為L級,則m可分解為L-I個正整數(shù),即
,其中κ i = 1, 2,…,L-I為第i+1級的分段長度乘子。高級分段的分段長度gi,i > 2是次高級分段的分段長度的整數(shù)倍,即 Si =^l-Igi-! =^1Kjgl,則最高級分段長度為& 二!!口/^免。即所有級別分段長度的最小公
倍數(shù)為做高級別分段長度,能夠整除視頻總數(shù)據(jù)長度S。在本實施例中,相同級別的節(jié)點(diǎn)具有相同的分段長度。各級分段長度gi除滿足上述整數(shù)化關(guān)系外,還要滿足每一級的分段長度gi,i = 1,2...L要不大于該級中各節(jié)點(diǎn)最大分段長度的最小值,結(jié)合圖2所示,即 …
在實際計算中,可采用整數(shù)規(guī)劃計算各級分段長度參數(shù),并實現(xiàn)分段長度的最大 化。圖3示出了視頻數(shù)據(jù)的分級分段,L = 3的示意圖。結(jié)合圖2和圖3所示,將視頻 內(nèi)容劃分為三級,各級分段長度分別為gl、&和g3,其中,& = 2gl、g3 = 4gl,即K1=K2 = 2。如圖3中所示,分段后,一級節(jié)點(diǎn)將視頻內(nèi)容分段為S11, S12,…,Sm,二級節(jié)點(diǎn)分段 為S21,S22,…,^f,三級節(jié)點(diǎn)分段為S41,S42,…,&寧。其中,高級分段的每一段包含低級分 段的多個分段,如S21由S11和S12構(gòu)成,J2f由Snri和Sm構(gòu)成;S41由Sn、S12, S13和S14構(gòu)成,
4 學(xué)甶 Sm—3、Sm—2、 Snri和Sm構(gòu)成。優(yōu)選的,通過設(shè)計節(jié)點(diǎn)分段,可使K i = 2,i = 1,2,…,L-1,形成二分分段。S103:根據(jù)節(jié)點(diǎn)分級L和各級的分段長度gi,對段內(nèi)數(shù)據(jù)采用隨機(jī)網(wǎng)絡(luò)編碼實現(xiàn) 段內(nèi)編碼。根據(jù)步驟101和102中確定的節(jié)點(diǎn)分級L和各級的分段長度gi,對段內(nèi)數(shù)據(jù)進(jìn)行 網(wǎng)絡(luò)編碼,本實施例采用隨機(jī)網(wǎng)絡(luò)編碼實現(xiàn)段內(nèi)編碼。圖4示出了一級分段的段內(nèi)分塊及編碼示意圖。如圖4中所示,一級分 段的段數(shù)據(jù)等分為N塊,每個數(shù)據(jù)塊長度為gl/N。然后由節(jié)點(diǎn)隨機(jī)生成編碼向量 di = ^iel + ai2e2 + · ·. + o^e》,其中’司為已有數(shù)據(jù)塊的編碼向量。若為編碼數(shù)據(jù)塊, 貝阮為該塊的編碼向量;若為原始數(shù)據(jù)塊,則《為單位向量。在此編碼向量下,新編碼數(shù)據(jù)塊 Ei 為已有數(shù)據(jù)塊 Bil,Bi2,…,BiN 的線性組合 Ei = anBn+ai2Bi2+- + aiNBiN, 如圖4所示,編碼數(shù)據(jù)包由編碼向量和編碼數(shù)據(jù)構(gòu)成的有效負(fù)載組成,增大編碼 數(shù)據(jù)長度可提高數(shù)據(jù)有效負(fù)載率,進(jìn)而提高帶寬利用率。在段內(nèi)編碼中,所有級別的分段采用相同的分塊方式,即編碼塊數(shù)相同,各級別的 分段的編碼塊數(shù)相同,同一級別的分段中每塊數(shù)據(jù)塊長度大小相同,因此,每一塊數(shù)據(jù)塊長 度與分段長度成正比。高級別節(jié)點(diǎn)在實施段內(nèi)編碼前,進(jìn)行數(shù)據(jù)重組,包括如下步驟將該級的每段數(shù)據(jù)劃分為若干子段,其中,子段長度為最低一級的分段長度gl,然 后以子段為單位對編碼數(shù)據(jù)進(jìn)行重組。如圖3所示,各子段按順序從橫向排列轉(zhuǎn)換為縱向排列,然后在分塊時以重組后 的數(shù)據(jù)進(jìn)行分塊。結(jié)合圖3和圖5所示,二級分段S21劃分為兩個子段S11和S12,對上述子 段進(jìn)行重組;三級分段S41對子段Sn、S12, S13, S14進(jìn)行重組。重組后數(shù)據(jù)采用相同分塊數(shù), 如此以來,每個子段的分塊方式與一級分段的分塊方式完全相同,在編碼數(shù)據(jù)請求中可以 復(fù)用。即由節(jié)點(diǎn)隨機(jī)生成編碼向量碗=anel + ai2e2 + ··· +,其中 ,為已有數(shù) 據(jù)塊的編碼向量。若為編碼數(shù)據(jù)塊,則€為該塊的編碼向量;若為原始數(shù)據(jù)塊,則《·為單位 向量。在此編碼向量下,新編碼數(shù)據(jù)塊Ei為已有數(shù)據(jù)塊Bil,Bi2,…,BiN的線性組合Ei =α ηΒη+α i2Bi2+…+ α iNBiN。在本實施例中,以二級分段實施段內(nèi)編碼為例, 即 其中,對二級分段數(shù)據(jù)也等分為N塊,每個數(shù)據(jù)塊長度為2gl/N。S104:根據(jù)段內(nèi)編碼得到的編碼數(shù)據(jù)塊,各級節(jié)點(diǎn)之間協(xié)同工作,低級別的節(jié)點(diǎn)向 同級別或高級別節(jié)點(diǎn)發(fā)送數(shù)據(jù)請求,被請求節(jié)點(diǎn)接收數(shù)據(jù)請求,并向請求節(jié)點(diǎn)發(fā)送數(shù)據(jù)。在上述分級分段和段內(nèi)編碼方式下,不同級別分段長度的節(jié)點(diǎn)之間能夠協(xié)同工 作,低級別的節(jié)點(diǎn)可以向同級別或高級別的節(jié)點(diǎn)請求數(shù)據(jù),同級別或高級別節(jié)點(diǎn)根據(jù)請求 節(jié)點(diǎn)的分級參數(shù)和所請求的段號,定位到所請求的數(shù)據(jù)的位置,針對定位到的內(nèi)容進(jìn)行隨 機(jī)網(wǎng)絡(luò)編碼,并傳輸該子段的編碼數(shù)據(jù)。然而,高級別的節(jié)點(diǎn)不能使用低級別節(jié)點(diǎn)的網(wǎng)絡(luò)編 碼數(shù)據(jù),只能使用同級別或更高級別節(jié)點(diǎn)的編碼數(shù)據(jù)。具體的說,結(jié)合圖6所示,低級別節(jié)點(diǎn)向同級別或高級別節(jié)點(diǎn)請求編碼數(shù)據(jù)塊包 括以下步驟,下面以節(jié)點(diǎn)A表示低級別節(jié)點(diǎn),節(jié)點(diǎn)S表示同級別或高級別節(jié)點(diǎn)。Sl 節(jié)點(diǎn)A請求指定段的編碼數(shù)據(jù)塊,向節(jié)點(diǎn)S發(fā)送本節(jié)點(diǎn)的分級參數(shù)及指定段的 段號。在本實施例中,節(jié)點(diǎn)A為一級分段節(jié)點(diǎn),節(jié)點(diǎn)S為二級分段節(jié)點(diǎn),指定段的段號為S11.S2:節(jié)點(diǎn)A接收來自節(jié)點(diǎn)S發(fā)送的編碼向量,判斷本次編碼向量Cii和已接收的向 量α 是否線性相關(guān),若線性相關(guān),則丟棄該編碼向量,執(zhí)行步驟Sl ;否則執(zhí)行步驟S3 ;S3 節(jié)點(diǎn)S根據(jù)節(jié)點(diǎn)A的分級參數(shù)和所請求的段號,向節(jié)點(diǎn)A傳輸該子段的編碼數(shù) 據(jù);S4 節(jié)點(diǎn)A判斷是否接收到能夠解碼的最少線性無關(guān)塊,若已接收到,則從解碼塊 中產(chǎn)生可以播放的流媒體數(shù)據(jù);否則,判斷向被請求節(jié)點(diǎn)請求數(shù)據(jù)塊的次數(shù),若超過了設(shè)定的請求次數(shù)閾值,則該段編碼塊請求結(jié)束;若未超過設(shè)定的請求次 數(shù)閾值,重新定位被請求節(jié)點(diǎn),執(zhí)行步驟Si,再次發(fā)送數(shù)據(jù)請求。其中,在步驟S3中,被請求節(jié)點(diǎn)即節(jié)點(diǎn)S根據(jù)請求節(jié)點(diǎn)即節(jié)點(diǎn)A的分級參數(shù)和所 請求的段號,向請求節(jié)點(diǎn)傳輸該子段的編碼數(shù)據(jù),結(jié)合圖7所示,包括如下步驟S31 節(jié)點(diǎn)S接收節(jié)點(diǎn)A的分級參數(shù)及所請求的編碼數(shù)據(jù)塊的段號,根據(jù)請求參數(shù) 定位請求內(nèi)容在本節(jié)點(diǎn)上的段號和位置;S32:節(jié)點(diǎn)S隨機(jī)產(chǎn)生N個隨機(jī)數(shù)Ciil,α i2,…,α iN,并組成一個N維編碼向量
,并將該向量發(fā)送給節(jié)點(diǎn)A ;S33 節(jié)點(diǎn)S接收節(jié)點(diǎn)A的反饋信息,若節(jié)點(diǎn)A重新請求編碼向量,則執(zhí)行步驟S32 ; 若可用則執(zhí)行步驟S34 ;否則不做任何響應(yīng),結(jié)束本次請求;S34 將定位的數(shù)據(jù)塊等分為N塊,N > 1,根據(jù)編碼向量和數(shù)據(jù)塊Bil,Bi2,…,BiN, 生成新的編碼數(shù)據(jù)塊Ei = α ηΒη+ α i2Bi2+…+ α iNBiN ;優(yōu)選的,節(jié)點(diǎn)S組合對應(yīng)位置的已有編碼數(shù)據(jù)塊,生成新的編碼數(shù)據(jù)塊。S35:節(jié)點(diǎn)S向節(jié)點(diǎn)A發(fā)送編碼向量αi和數(shù)據(jù)塊Ei。
根據(jù)本發(fā)明實施例提供的方法,結(jié)合圖4和圖5所示,二級分段節(jié)點(diǎn)定位編碼數(shù)據(jù) 段S11在數(shù)據(jù)塊E21中的位置,即編碼塊E21的上半部分。該二級分段節(jié)點(diǎn)生成新的編碼向量和編碼數(shù)據(jù)塊
并發(fā)送給請求的一級分段節(jié) 點(diǎn)。類似地,若一級分段節(jié)點(diǎn)向二級分段節(jié)點(diǎn)請求編碼數(shù)據(jù)段S12,二級分段節(jié)點(diǎn)發(fā)送編碼 數(shù)據(jù)
給請求節(jié)點(diǎn)。如此以來,低
級別節(jié)點(diǎn)可以任意使用高級別節(jié)點(diǎn)的網(wǎng)絡(luò)編碼數(shù)據(jù)。若二級分段節(jié)點(diǎn)向二級分段節(jié)點(diǎn)請求編碼數(shù)據(jù)段S21,服務(wù)節(jié)點(diǎn)發(fā)送編碼數(shù)據(jù)
給請求節(jié)點(diǎn)。根據(jù)本發(fā)明實施例提供的對等網(wǎng)絡(luò)流媒體網(wǎng)絡(luò)編碼方法,采用分級分段方式,能 夠有效處理P2P網(wǎng)絡(luò)中節(jié)點(diǎn)緩沖區(qū)差異等因素引起的不同分段長度約束。該編碼方法以隨 機(jī)網(wǎng)絡(luò)編碼為基礎(chǔ),可應(yīng)用于實際分布式的P2P流媒體系統(tǒng)中,具有較高的實用性。對不同 級別的節(jié)點(diǎn)傳送大小不同的編碼塊,解決了同等分段方式對大緩沖區(qū)節(jié)點(diǎn)的資源浪費(fèi)。低級別的節(jié)點(diǎn)可以向同級別或更高級別節(jié)點(diǎn)請求數(shù)據(jù)塊,提高了解碼概率,支持 節(jié)點(diǎn)間的協(xié)同工作。針對視頻數(shù)據(jù)總長度進(jìn)行設(shè)計,能夠處理視頻最后分段的網(wǎng)絡(luò)編碼???之,本發(fā)明實施例提供的方法充分利用不同節(jié)點(diǎn)提供的緩沖區(qū)等資源,并保持了網(wǎng)絡(luò)編碼 的優(yōu)勢,通過提高編碼數(shù)據(jù)有效負(fù)載率可改善網(wǎng)絡(luò)帶寬利用率和視頻播放質(zhì)量,并具有較 高的實用價值。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步驟是可 以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中, 該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理模塊中,也可以 是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模 塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如 果以軟件功能模塊的形式實現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機(jī) 可讀取存儲介質(zhì)中。上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人 員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng) 視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種對等網(wǎng)絡(luò)流媒體網(wǎng)絡(luò)編碼方法,其特征在于,該方法包括如下步驟基于分段長度約束對節(jié)點(diǎn)分級,所述分段長度約束為每個節(jié)點(diǎn)所能采用的可行最大分段長度,將所述節(jié)點(diǎn)分為L級,各級的節(jié)點(diǎn)數(shù)分別為k1,k2...kL,n=k1+k2+...+kL,n為節(jié)點(diǎn)數(shù);根據(jù)所述節(jié)點(diǎn)分級L,確定各級節(jié)點(diǎn)不同的分段長度gi,i=1,2,…,L;根據(jù)所述節(jié)點(diǎn)分級L和各級的分段長度gi,對段內(nèi)數(shù)據(jù)采用隨機(jī)網(wǎng)絡(luò)編碼實現(xiàn)段內(nèi)編碼;根據(jù)所述段內(nèi)編碼得到的編碼數(shù)據(jù)塊,各級節(jié)點(diǎn)之間協(xié)同工作,低級別節(jié)點(diǎn)向同級或高級別節(jié)點(diǎn)發(fā)送數(shù)據(jù)請求,所述被請求的同級別或高級別節(jié)點(diǎn)接收所述數(shù)據(jù)請求,并向請求節(jié)點(diǎn)發(fā)送數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于,基于分段長度約束對所有節(jié)點(diǎn)分級包括如 下步驟確定各節(jié)點(diǎn)的分段長度約束^ , j = 1,2,…,η ;將所述各節(jié)點(diǎn)的分段長度約束<按從小到大進(jìn)行排序,即 估計節(jié)點(diǎn)數(shù)閾值入;根據(jù)所述節(jié)點(diǎn)數(shù)閾值λ,將所述節(jié)點(diǎn)分為L級,各級的節(jié)點(diǎn)數(shù)分別為k1; k2. . . kL, η = ki+k2+. . . +&,確定每一級的節(jié)點(diǎn)數(shù)和該級可使用的最大分段長度g,max,其中,& > λ,
3.如權(quán)利要求1所述的方法,其特征在于,確定各級節(jié)點(diǎn)不同的分段長度gi包括如下 步驟除一級以外的其他級別的分段長度gi,i > 2為一級分段長度為gl的整數(shù)倍,分段長度 gl將視頻數(shù)據(jù)等分為m段,S卩S = mXgl,其中,S為視頻數(shù)據(jù)總長度,gl為一級分段長度, 為第i+Ι級的分段長度乘子,i = 1,2,…,L-1,高級分段的分段長度gi,i > 2為次高級分段的分段長度的整數(shù)倍,即 ,則最高級分段長度為
4.如權(quán)利要求3所述的方法,其特征在于,所述最高級分段長度&能夠整除視頻總數(shù) 據(jù)長度S,同級別節(jié)點(diǎn)具有相同的分段長度。
5.如權(quán)利要求2或3所述的方法,其特征在于,各級別的分段長度為gi,i= 1,2...L, 則每一級的分段長度小于或等于該分級中各節(jié)點(diǎn)最大分段長度的最小值,即
6.如權(quán)利要求1所述的方法,其特征在于,對段內(nèi)數(shù)據(jù)采用隨機(jī)網(wǎng)絡(luò)編碼實現(xiàn)段內(nèi)編 碼,包括如下步驟將各級分段的段數(shù)據(jù)等分為N塊,則每塊數(shù)據(jù)塊長度為gi/N ;由節(jié)點(diǎn)隨機(jī)生成編碼向量 ;則新編碼數(shù)據(jù)塊Ei為已有數(shù)據(jù)塊Bil,Bi2,…,BiN的線性組合Ei = α nBn+Qi2Bi2+-+ Q iNBiN。
7.如權(quán)利要求6所述的方法,其特征在于,對高級別分段的段內(nèi)數(shù)據(jù)采用隨機(jī)網(wǎng)絡(luò)編 碼實現(xiàn)段內(nèi)編碼前,進(jìn)行數(shù)據(jù)重組,包括如下步驟將所述高級別分段的每段數(shù)據(jù)劃分為子段,所述子段長度為一級分段長度gl,然后以 子段為單位對編碼數(shù)據(jù)進(jìn)行重組;對重組后的數(shù)據(jù)等分為N塊,則每塊數(shù)據(jù)塊長度為gi/N。
8.如權(quán)利要求6所述的方法,其特征在于,各級別的分段的編碼塊數(shù)相同,同一級別的 分段中每塊數(shù)據(jù)塊長度大小相等,所述每塊數(shù)據(jù)塊長度與其所在級別的分段長度成正比。
9.如權(quán)利要求1所述的方法,其特征在于,各級別分段長度的節(jié)點(diǎn)之間協(xié)同工作包括 如下步驟51低級別節(jié)點(diǎn)請求指定段的編碼數(shù)據(jù)塊,向同級別或高級別節(jié)點(diǎn)發(fā)送本節(jié)點(diǎn)的分級 參數(shù)及所述指定段的段號;52所述低級別節(jié)點(diǎn)接收所述同級別或高級別節(jié)點(diǎn)發(fā)送的編碼向量,判斷本次編碼向 量α 已接收的向量α"是否線性相關(guān),若線性相關(guān),則丟棄該編碼向量,執(zhí)行步驟Sl ; 否則執(zhí)行步驟S3 ;53所述同級別或高級別節(jié)點(diǎn)根據(jù)所述低級別節(jié)點(diǎn)的分級參數(shù)和所請求的段號,向所 述低級別節(jié)點(diǎn)傳輸該子段的編碼數(shù)據(jù);S4:所述低級別節(jié)點(diǎn)判斷是否接收到能夠解碼的最少線性無關(guān)塊,若已接收到,則從解 碼塊中產(chǎn)生流媒體數(shù)據(jù);否則,判斷向被請求的同級別或高級別節(jié)點(diǎn)請求數(shù)據(jù)塊的次數(shù);若超過請求次數(shù)閾值,則該段編碼塊請求結(jié)束;若未超過請求次數(shù)閾值,重新定位高級 別節(jié)點(diǎn),執(zhí)行步驟Si,再次發(fā)送數(shù)據(jù)請求。
10.如權(quán)利要求9所述的方法,其特征在于,所述同級別或高級別節(jié)點(diǎn)根據(jù)所述低級 別節(jié)點(diǎn)的分級參數(shù)和所請求的段號,向所述低級別節(jié)點(diǎn)傳輸該子段的編碼數(shù)據(jù)包括如下步 驟S31 所述同級別或高級別節(jié)點(diǎn)接收所述低級別節(jié)點(diǎn)的分級參數(shù)及所請求的編碼數(shù)據(jù) 塊的段號,根據(jù)請求參數(shù)定位請求內(nèi)容在本節(jié)點(diǎn)上的段號和位置;S32:所述同級別或高級別節(jié)點(diǎn)隨機(jī)產(chǎn)生N個隨機(jī)數(shù)Ciil,Cii2,…,α ,并組成一個N 維編碼向量 ,并將該向量發(fā)送給所述低級別節(jié)點(diǎn);S33 所述同級別或高級別節(jié)點(diǎn)接收所述低級別節(jié)點(diǎn)的反饋信息,若所述低級別節(jié)點(diǎn)重 新請求編碼向量,則執(zhí)行步驟S32 ;若可用則執(zhí)行步驟S34 ;否則不做任何響應(yīng),結(jié)束本次請 求;S34通過以下兩種方式之一生成新的編碼數(shù)據(jù)塊1)將定位的數(shù)據(jù)塊等分為N塊,根據(jù)編碼向量和數(shù)據(jù)塊Bil,Bi2,…,BiN,生成新的編碼 數(shù)據(jù)塊 Ei = αi1Βi1+ αi2Bi2+…+ αiNBiN, Ν> 1 ;2)所述同級別或高級別被請求節(jié)點(diǎn)組合對應(yīng)位置的已有編碼數(shù)據(jù)塊,生成新的編碼數(shù)據(jù)塊;S35所述同級別或高級別節(jié)點(diǎn)向所述低級別節(jié)點(diǎn)發(fā)送編碼向量αi和數(shù)據(jù)塊Ei。
全文摘要
本發(fā)明的實施例公開了一種對等網(wǎng)絡(luò)流媒體網(wǎng)絡(luò)編碼方法,該方法包括基于分段長度約束對節(jié)點(diǎn)分級,分段長度約束為每個節(jié)點(diǎn)所能采用的可行最大分段長度,將節(jié)點(diǎn)分為L級,各級的節(jié)點(diǎn)數(shù)分別為k1,k2...kL,n=k1+k2+...+kL,n為節(jié)點(diǎn)數(shù);根據(jù)節(jié)點(diǎn)分級L,確定各級節(jié)點(diǎn)不同的分段長度gi,i=1,2,…,L;根據(jù)節(jié)點(diǎn)分級L和各級的分段長度gi,對段內(nèi)數(shù)據(jù)采用隨機(jī)網(wǎng)絡(luò)編碼實現(xiàn)段內(nèi)編碼;各級別分段長度的節(jié)點(diǎn)之間協(xié)同工作,高級別節(jié)點(diǎn)接收同級別或低級別節(jié)點(diǎn)的數(shù)據(jù)請求,并向該請求節(jié)點(diǎn)發(fā)送數(shù)據(jù)。根據(jù)本發(fā)明實施例提供的方法,充分利用了不同節(jié)點(diǎn)提供的緩沖區(qū)等資源,并保持了網(wǎng)絡(luò)編碼的優(yōu)勢,通過提高編碼數(shù)據(jù)有效負(fù)載率可改善網(wǎng)絡(luò)帶寬利用率,并具有較高的實用價值。
文檔編號H04L29/06GK101848224SQ201010186909
公開日2010年9月29日 申請日期2010年5月26日 優(yōu)先權(quán)日2010年5月26日
發(fā)明者于敬敬, 奚宏生, 王子磊 申請人:中國科學(xué)技術(shù)大學(xué)