欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng)及方法與流程

文檔序號:12498319閱讀:658來源:國知局
P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng)及方法與流程

本發(fā)明涉及一種網(wǎng)絡流媒體技術(shù)領(lǐng)域,特別是涉及一種P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng)及方法。



背景技術(shù):

在傳統(tǒng)的網(wǎng)絡直播系統(tǒng)中,直播源會將視頻流通過RTMP(Real Time Messaging Protocol,實時消息傳輸協(xié)議)推送到直播源站,然后經(jīng)過轉(zhuǎn)碼/轉(zhuǎn)封裝等操作,形成一個待分發(fā)的視頻流,通常是flv格式(流媒體格式)(但也不僅限于flv格式),這個flv格式的視頻流會逐個tag(視頻標簽)的被推送到CDN(Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡)邊緣服務器,用戶可以就近從CDN邊緣服務器中獲取。

在現(xiàn)有的P2P(Peer to Peer,對等網(wǎng)絡)直播系統(tǒng)中,視頻分發(fā)并不是以tag為單位,而是將若干tag合并成一個chunk(視頻文件塊,又稱為信息塊),分發(fā)chunk的(n,k)糾刪碼編碼結(jié)果,每個直播節(jié)點從CDN邊緣節(jié)點獲取chunk編碼片段后互相傳遞。直播節(jié)點在收集齊k個不同的編碼片段后執(zhí)行解碼操作,恢復chunk數(shù)據(jù),再進一步從chunk中分離出tag。

在現(xiàn)有的直播系統(tǒng)中,為了保持系統(tǒng)的健壯性和安全運行,會設置兩個直播源站互為主備,平時視頻流推送到主站,CDN邊緣節(jié)點也向主站請求數(shù)據(jù);當主站發(fā)生故障時,視頻流改為推送到備站,CDN邊緣節(jié)點也改為向備站請求數(shù)據(jù)。

在現(xiàn)有的P2P直播系統(tǒng)中,假設包含兩個邊緣節(jié)點A和B,初始時,A和B都向主站請求數(shù)據(jù),在某一時刻,A獲得了第一chunk,但隨后主站宕機,B此時還未獲得該第一chunk,它發(fā)現(xiàn)主站宕機后,改為向備站請求數(shù)據(jù),由此B獲得了第二chunk;但是B從備站獲得的第二chunk很難保證和A從主站獲得的第一chunk嚴格相同(比如由于RTMP推流過程中可能發(fā)生隨機丟幀等原因),這就導致A和B處獲得的chunk并不相同,而不同chunk中的編碼片段放在一起解碼就會出現(xiàn)不一致的問題,從而導致無法成功解析出需要播放的視頻數(shù)據(jù),進而導致無法正常完成P2P直播。



技術(shù)實現(xiàn)要素:

本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中主備直播源站在切換后生成的chunk的編碼片段放在一起解碼會出現(xiàn)問題,導致無法正常完成P2P直播的缺陷,提供一種P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng)及方法。

本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題的:

本發(fā)明提供了一種P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng),其特點在于,包括一個主直播源站和至少一個備用直播源站;

所述主直播源站用于接收待直播的視頻數(shù)據(jù),并將視頻數(shù)據(jù)依次寫入多個第一chunk中;

所述主直播源站還用于利用自增ID(身份標識碼)依次為每個第一chunk設置第一標識ID,并將每個第一chunk的第一標識ID同步至所述至少一個備用直播源站;

在所述主直播源站發(fā)生故障時,從所述至少一個備用直播源站中選取一目標備用直播源站并切換為新的主直播源站;

所述新的主直播源站用于繼續(xù)接收所述待直播的視頻數(shù)據(jù),并將視頻數(shù)據(jù)依次寫入多個第二chunk中;

所述新的主直播源站還用于查詢所述第一標識ID的最大值,并利用自增ID依次為每個第二chunk設置第二標識ID;所述第二標識ID的最小值大于所述第一標識ID的最大值。

較佳地,所述新的主直播源站還用于將每個第二chunk的第二標識ID同步至其它備用直播源站。

較佳地,所述第二標識ID的最小值與所述第一標識ID的最大值滿足如下比較關(guān)系:

C2>C1+(ΔT*R)/Csize;

其中C2表示所述第二標識ID的最小值,C1表示所述新的主直播源站被同步過的所述第一標識ID的最大值,ΔT表示從所述主直播源站發(fā)生故障到所述目標備用直播源站切換為新的主直播源站之間的時間間隔,R表示將視頻數(shù)據(jù)寫入所述第一chunk中的碼率,Csize表示所述第一chunk的容量。

較佳地,所述第二標識ID的最小值與所述第一標識ID的最大值之差比(ΔT*R)/Csize至少大一個數(shù)量級。

較佳地,所述主直播源站用于定時同步每個第一chunk的第一標識ID。

較佳地,所述新的主直播源站用于定時同步每個第二chunk的第二標識ID。

較佳地,所述保持系統(tǒng)還包括多個邊緣服務器和多個直播節(jié)點;

所述主直播源站還用于將所述多個第一chunk分發(fā)至所述多個邊緣服務器,所述新的主直播源站還用于將所述多個第二chunk分發(fā)至所述多個邊緣服務器;

所述邊緣服務器用于對每個chunk執(zhí)行編碼操作以生成多個與所述chunk具有相同標識ID的編碼片段,并將編碼片段發(fā)送至直播節(jié)點,不同直播節(jié)點之間用于相互交換編碼片段,所述直播節(jié)點用于對具有相同標識ID的編碼片段執(zhí)行解碼操作以恢復chunk;

所述chunk包括所述第一chunk及所述第二chunk。

較佳地,所述編碼操作為糾刪碼編碼操作,所述解碼操作為糾刪碼解碼操作,不同直播節(jié)點之間用于通過P2P方式相互交換編碼片段。其中,糾刪碼編碼和解碼優(yōu)選為(n,k)糾刪碼編碼和解碼。

較佳地,所述保持系統(tǒng)還包括窗口設置模塊,所述窗口設置模塊用于設置一接收窗口及一跳躍窗口;所述接收窗口及所述跳躍窗口均為ID集合,所述第一標識ID均屬于所述接收窗口,所述第二標識ID均屬于所述跳躍窗口;

所述直播節(jié)點用于在接收到一個目標chunk的編碼片段后,檢測所述目標chunk的標識ID是否屬于所述接收窗口或所述跳躍窗口;

若所述目標chunk的標識ID不屬于所述接收窗口及所述跳躍窗口,則丟棄所述目標chunk的編碼片段;

若所述目標chunk的標識ID屬于所述接收窗口,則對所述目標chunk執(zhí)行解碼操作,并增大所述接收窗口及所述跳躍窗口的最小值;即通過增大所述接收窗口及所述跳躍窗口的最小值來同時向前移動所述接收窗口與所述跳躍窗口,其中,所述接收窗口和所述跳躍窗口中的最大值和最小值的差值一直保持不變;

若所述目標chunk的標識ID屬于所述跳躍窗口,則修改所述接收窗口及所述跳躍窗口的最小值,并使得所述目標chunk的標識ID屬于修改后的接收窗口,同樣,所述接收窗口和所述跳躍窗口中的最大值和最小值的差值一直保持不變。

本發(fā)明的目的在于還提供了一種P2P直播的視頻數(shù)據(jù)一致性的保持方法,其特點在于,包括以下步驟:

S1、主直播源站接收待直播的視頻數(shù)據(jù),并將視頻數(shù)據(jù)依次寫入多個第一chunk中;

S2、所述主直播源站利用自增ID依次為每個第一chunk設置第一標識ID,并將每個第一chunk的第一標識ID同步至至少一個備用直播源站;

S3、在所述主直播源站發(fā)生故障時,從所述至少一個備用直播源站中選取一目標備用直播源站并切換為新的主直播源站;

S4、所述新的主直播源站繼續(xù)接收所述待直播的視頻數(shù)據(jù),并將視頻數(shù)據(jù)依次寫入多個第二chunk中;

S5、所述新的主直播源站查詢所述第一標識ID的最大值,并利用自增ID依次為每個第二chunk設置第二標識ID;所述第二標識ID的最小值大于所述第一標識ID的最大值。

較佳地,步驟S5之后還包括:

S6、所述新的主直播源站將每個第二chunk的第二標識ID同步至其它備用直播源站。

較佳地,所述第二標識ID的最小值與所述第一標識ID的最大值滿足如下比較關(guān)系:

C2>C1+(ΔT*R)/Csize;

其中C2表示所述第二標識ID的最小值,C1表示所述新的主直播源站被同步過的所述第一標識ID的最大值,ΔT表示從所述主直播源站發(fā)生故障到所述目標備用直播源站切換為新的主直播源站之間的時間間隔,R表示將視頻數(shù)據(jù)寫入所述第一chunk中的碼率,Csize表示所述第一chunk的容量。

較佳地,所述第二標識ID的最小值與所述第一標識ID的最大值之差比(ΔT*R)/Csize至少大一個數(shù)量級。

較佳地,步驟S2中所述主直播源站定時同步每個第一chunk的第一標識ID。

較佳地,步驟S6中所述新的主直播源站定時同步每個第二chunk的第二標識ID。

較佳地,步驟S5之后還包括:

S7、所述主直播源站將所述多個第一chunk分發(fā)至多個邊緣服務器,所述新的主直播源站將所述多個第二chunk分發(fā)至所述多個邊緣服務器;

所述邊緣服務器對每個chunk執(zhí)行編碼操作以生成多個與所述chunk具有相同標識ID的編碼片段,并將編碼片段發(fā)送至直播節(jié)點,不同直播節(jié)點之間相互交換編碼片段,所述直播節(jié)點對具有相同標識ID的編碼片段執(zhí)行解碼操作以恢復chunk;

所述chunk包括所述第一chunk及所述第二chunk。

較佳地,步驟S7中所述編碼操作為糾刪碼編碼操作,所述解碼操作為糾刪碼解碼操作,不同直播節(jié)點之間用于通過P2P方式相互交換編碼片段。

較佳地,步驟S7還包括以下步驟:

S8、設置一接收窗口及一跳躍窗口;所述接收窗口及所述跳躍窗口均為ID集合,所述第一標識ID均屬于所述接收窗口,所述第二標識ID均屬于所述跳躍窗口;

S9、所述直播節(jié)點在接收到一個目標chunk的編碼片段后,檢測所述目標chunk的標識ID是否屬于所述接收窗口或所述跳躍窗口;

若所述目標chunk的標識ID不屬于所述接收窗口及所述跳躍窗口,則丟棄所述目標chunk的編碼片段;

若所述目標chunk的標識ID屬于所述接收窗口,則對所述目標chunk執(zhí)行解碼操作,并增大所述接收窗口及所述跳躍窗口的最小值;

若所述目標chunk的標識ID屬于所述跳躍窗口,則修改所述接收窗口及所述跳躍窗口的最小值,并使得所述目標chunk的標識ID屬于修改后的接收窗口。

本發(fā)明的積極進步效果在于:本發(fā)明通過對主直播源站中寫入視頻數(shù)據(jù)的chunk與備用直播源站切換為新的主直播源站后其中寫入視頻數(shù)據(jù)的chunk分別標記不同的標識ID,并在主備切換前后的標識ID之間設置差值,從而保證主備切換前后寫入視頻數(shù)據(jù)的chunk具有不同的標識ID,從而避免出現(xiàn)chunk的標識ID相同而chunk的內(nèi)容不同的情況,進而使得主備切換前后的不同chunk之間不會出現(xiàn)任何沖突,不同chunk中的編碼片段不會被放在一起解碼,保證正常完成P2P直播。

附圖說明

圖1為本發(fā)明的實施例1的P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng)的模塊示意圖。

圖2為本發(fā)明的實施例2的P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng)的模塊示意圖。

圖3為本發(fā)明的實施例3的P2P直播的視頻數(shù)據(jù)一致性的保持方法的流程圖。

圖4為本發(fā)明的實施例4的P2P直播的視頻數(shù)據(jù)一致性的保持方法的流程圖。

具體實施方式

下面通過實施例的方式進一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實施例范圍之中。

實施例1

如圖1所示,本實施例的P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng)包括一個主直播源站1和至少一個備用直播源站2;

其中,所述主直播源站1會接收待直播的視頻數(shù)據(jù),并將視頻數(shù)據(jù)依次寫入多個第一chunk中,具體地,所述待直播的視頻數(shù)據(jù)可由直播源通過攝像等方式獲取并通過某種多媒體傳輸協(xié)議(包括但不限于RTMP)將所述待直播的視頻數(shù)據(jù)傳輸至所述主直播源站1。

所述主直播源站1會利用自增ID依次為每個第一chunk設置第一標識ID(即表示多個第一chunk的第一標識ID依次為自增ID),所述自增ID即表示在為當前第一chunk賦予第一ID值后,在為下一個chunk賦予ID值時,再次賦予的ID值會在第一ID值的基礎(chǔ)上自動增加。

在本實施例的具體實現(xiàn)過程中,假設所述主直播源站1需要將視頻數(shù)據(jù)寫入10個第一chunk中,自增ID的初始ID值為1,那么10個第一chunk的第一標識ID可以分別記為chunk_1、chunk_2、chunk_3、chunk_4、chunk_5、chunk_6、chunk_7、chunk_8、chunk_9和chunk_10;

所述主直播源站1還將每個第一chunk的第一標識ID同步至所述至少一個備用直播源站2中,這樣,每個備用直播源站2中就可以同步記錄寫入視頻數(shù)據(jù)的第一chunk的第一標識ID,從而可以知悉當前時刻所述主直播源站1生成chunk的進度。

其中,在本實施例中,優(yōu)選地,在同步更新chunk的標識ID時,不需要實時更新,可以以一個較低的頻率進行同步更新,例如每幾秒同步更新一次。具體地,所述主直播源站1可以以一個較低的頻率定時地將每個第一chunk的第一標識ID同步至備用直播源站中。

在所述主直播源站1發(fā)生故障宕機時,本發(fā)明的保持系統(tǒng)可以實現(xiàn)直播源站的主備切換,具體地,會從所述至少一個備用直播源站2中選取一個目標備用直播源站并切換為新的主直播源站;而之前的主直播源站則相應地變換為一個備用直播源站;

所述新的主直播源站會繼續(xù)接收所述待直播的視頻數(shù)據(jù),并將視頻數(shù)據(jù)依次寫入多個第二chunk中,并利用自增ID依次為每個第二chunk設置第二標識ID(即表示多個第二chunk的第二標識ID為自增ID);其中,所述第二標識ID的最小值大于所述第一標識ID的最大值;

在本實施例的具體實現(xiàn)過程中,由于之前10個第一chunk的第一標識ID可以分別記為chunk_1、chunk_2、chunk_3、chunk_4、chunk_5、chunk_6、chunk_7、chunk_8、chunk_9和chunk_10,即第一標識ID的最大值為chunk_10;

假設主直播源站1在某時刻將chunk_1的標識ID同步至備用直播源站2中,之后主直播源站1發(fā)生宕機。新的主直播源站只知道chunk_1曾經(jīng)被產(chǎn)生,但不知道chunk_2至chunk_10的存在。但它同時知道主直播源站1產(chǎn)生chunk的速度不會太快,在從上次更新標識ID到現(xiàn)在大約能產(chǎn)生10個chunks,而產(chǎn)生100個chunks的概率小到可以忽略不計。

那么優(yōu)選地,所述新的主直播源站可選取第二標識ID的最小值為chunk_101(當然,可以根據(jù)實際需要進行選取),假設所述新的主直播源站同樣需要將視頻數(shù)據(jù)寫入10個第二chunk中,則10個第二chunk的第二標識ID依次分別為:chunk_101、chunk_102、chunk_103、chunk_104、chunk_105、chunk_106、chunk_107、chunk_108、chunk_109和chunk_110;

同樣,所述新的主直播源站還將每個第二chunk的第二標識ID同步至其它備用直播源站;當然,所述新的主直播源站也可以以一個較低的頻率定時地將每個第二chunk的第二標識ID同步至備用直播源站中。

在本實施例中,優(yōu)選地,所述第二標識ID的最小值與所述第一標識ID的最大值滿足如下比較關(guān)系:

C2>C1+(ΔT*R)/Csize;

其中C2表示所述第二標識ID的最小值,C1表示所述新的主直播源站被同步過的所述第一標識ID的最大值,ΔT表示從所述主直播源站發(fā)生故障到所述目標備用直播源站切換為新的主直播源站之間的時間間隔,R表示將視頻數(shù)據(jù)寫入所述第一chunk中的碼率,Csize表示所述第一chunk的容量。而更優(yōu)選地,可以設置所述第二標識ID的最小值與所述第一標識ID的最大值之差比(ΔT*R)/Csize至少大一個數(shù)量級。

通過上述比較關(guān)系來限定所述第二標識ID的最小值與所述第一標識ID的最大值之間的大小,就可以保證從所述主直播源站發(fā)生故障到所述目標備用直播源站切換為新的主直播源站之間的時間間隔內(nèi),不會出現(xiàn)初始的主直播源站和后來的新的主直播源站賦予的chunk的標識ID相同的情況,即避免了出現(xiàn)chunk的標識ID相同而chunk的內(nèi)容不同的情況,進而使得主備切換前后的不同chunk之間不會出現(xiàn)任何沖突。

如圖1所示,在本實施例中,優(yōu)選地,所述保持系統(tǒng)還可以包括多個直播節(jié)點3和多個邊緣服務器4,所述主直播源站1還將所述多個第一chunk(當然,包括每個第一chunk的第一標識ID)分發(fā)至所述多個邊緣服務器4;所述新的主直播源站還將所述多個第二chunk(當然,包括每個第二chunk的第二標識ID)分發(fā)至所述邊緣服務器4。

所述邊緣服務器4用于對接收到的每個chunk執(zhí)行編碼操作以生成多個與所述chunk具有相同標識ID的編碼片段,并將編碼片段發(fā)送至直播節(jié)點4(具體可以向一個直播節(jié)點4發(fā)送一個編碼片段),不同直播節(jié)點4之間用于相互交換和共享編碼片段,所述直播節(jié)點3則用于對具有相同標識ID的編碼片段執(zhí)行解碼操作以恢復chunk;其中,所述chunk包括所述第一chunk及所述第二chunk。

而優(yōu)選地,所述編碼操作可以為(n,k)糾刪碼編碼操作,所述解碼操作可以為(n,k)糾刪碼解碼操作,不同直播節(jié)點3之間則用于通過P2P方式相互交換和共享編碼片段。

舉一個具體的例子,假設兩個邊緣服務器C和D,初始時,C和D都向初始的主直播源站1請求數(shù)據(jù),即所述主直播源站1會將在其中寫入視頻數(shù)據(jù)的第一chunk(即chunk_1、chunk_2…)依次分發(fā)給C和D,假設在經(jīng)過一段時間后,所述主直播源站1發(fā)生故障宕機,chunk_10這一第一chunk被分發(fā)至邊緣服務器C,但還未分發(fā)至邊緣服務器D,那么此時相當于邊緣服務器C擁有chunk_1至chunk_10這10個第一chunk,而邊緣服務器D僅擁有chunk_1至chunk_9這9個第一chunk;

在初始的主直播源站1發(fā)生故障時,會有一個備用直播源站2切換為新的主直播源站,又由于初始的主直播源站1并不是實時地將第一chunk及其第一標識ID同步更新至備用直播源站2,假設在主直播源站1發(fā)生故障宕機前,僅將第九個第一chunk的第一標識ID即chunk_9同步至備用直播源站2,而備用直播源站2并不知道當前最新的第一chunk為第十個第一chunk,即不知道當前最新的第一chunk的第一標識ID為chunk_10;

這時,當一個備用直播源站2切換為新的主直播源站時,由于新的主直播源站中記錄的第一chunk的最新第一標識ID為chunk_9(即相當于第一標識ID的最大值),理論上其會從chunk_10開始來對第二chunk賦予第二標識ID,在本發(fā)明中,為了避免這種情況發(fā)生,會在第一標識ID的最大值(chunk_9)的基礎(chǔ)上修改第二標識ID的最小值的取值,即會在第一標識ID的最大值的基礎(chǔ)上疊加一個足夠大的增量,例如92,那么,在所述新的主直播源站中,在將視頻數(shù)據(jù)寫入第二chunk中時,第二chunk的第二標識ID會從101開始進行賦值,即此時在所述新的主直播源站中,所述第二chunk的第二標識ID的最小值為chunk_101,其中寫入視頻數(shù)據(jù)的10個第二chunk的第二標識ID依次分別為:chunk_101、chunk_102、chunk_103、chunk_104、chunk_105、chunk_106、chunk_107、chunk_108、chunk_109和chunk_110;

同樣,此時邊緣服務器C和D會改為向新的主直播源站請求數(shù)據(jù),那么新的主直播源站會將其中寫入視頻數(shù)據(jù)的10個第二chunk分發(fā)至邊緣服務器C和D;

最終,邊緣服務器C中擁有chunk_1至chunk_10這10個第一chunk以及chunk_101至chunk_110這10個第二chunk,邊緣服務器D中則擁有有chunk_1至chunk_9這9個第一chunk以及chunk_101至chunk_110這10個第二chunk;從而在邊緣服務器C和D中,標識ID小于等于chunk_9的chunk均來自初始的主直播源站,標識ID大于等于chunk_101的chunk均來自新的主直播源站,并且新的主直播源站并不會將第二chunk的第二標識ID賦值為chunk_10,即本實施例中不會出現(xiàn)兩個chunk的標識ID同為chunk_10但其中內(nèi)容并不相同的情況,從而確保了主備直播源站切換前后生成的不同chunk之間不會出現(xiàn)任何沖突,保證來自初始的主直播源站和新的主直播源站中的不同chunk中的編碼片段可以放在一起解碼,進而保證正常完成P2P直播。

實施例2

如圖2所示,本實施例的P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng)與實施例1基本相同,不同之處在于:本實施例的P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng)還包括部署在直播節(jié)點的窗口設置模塊5;

所述窗口設置模塊5會設置一接收窗口及一跳躍窗口;所述接收窗口及所述跳躍窗口均為ID集合,所述第一標識ID均屬于所述接收窗口,所述第二標識ID均屬于所述跳躍窗口,其中,所述窗口設置模塊5可以將所述接收窗口及所述跳躍窗口設置在所述多個直播節(jié)點3中。

在本實施例的具體實現(xiàn)過程中,參見實施例1,假設直播節(jié)點正在接收chunk_1的編碼片段,那么可以將所述接收窗口設置為[chunk_1,chunk_50],這樣,任何一個近期由主直播源站1產(chǎn)生的第一chunk(例如chunk_1到chunk_10)的第一標識ID均落入所述接收窗口的集合中;同時可以將所述跳躍窗口設置為[chunk_51,chunk_200],這樣,如果直播源站在近期發(fā)生切換(即一個備用直播源站切換為新的主直播源站),新的主直播源站產(chǎn)生的第二chunk的第二標識ID(例如chunk_101至chunk_110)均落入所述跳躍窗口的集合中;

對于每個直播節(jié)點,在接收到一個目標chunk的編碼片段后,會檢測所述目標chunk的標識ID是否屬于所述接收窗口或所述跳躍窗口,然后根據(jù)不同的檢測結(jié)果執(zhí)行不同的后續(xù)操作,具體地,

若所述目標chunk的標識ID既不屬于所述接收窗口也不屬于所述跳躍窗口,則丟棄所述目標chunk的編碼片段;

若所述目標chunk的標識ID屬于所述接收窗口,則接受所述目標chunk,如目標chunk已經(jīng)可以被解碼,則對所述目標chunk執(zhí)行解碼操作,并增大所述接收窗口及所述跳躍窗口的最小值,同時保持所述接收窗口和所述跳躍窗口中的最大值和最小值的差值不變,從而實現(xiàn)向前移動所述接收窗口和跳躍窗口。例如,假設目前的接收窗口為[chunk_1,chunk_50],而跳躍窗口為[chunk_51,chunk_200];直播節(jié)點接收到chunk_1的編碼片段,判斷chunk_1已可被解碼,則對chunk_1執(zhí)行解碼,同時將接收窗口向前移動為[chunk_2,chunk_51],將跳躍窗口向前移動為[chunk_52,chunk_201]。

若所述目標chunk的標識ID屬于所述跳躍窗口,則修改所述接收窗口及所述跳躍窗口的最小值,并使得所述目標chunk的標識ID屬于修改后的接收窗口,同樣,所述接收窗口和所述跳躍窗口中的最大值和最小值的差值一直保持不變。例如,假設所述目標chunk的標識ID為chunk_105,此時屬于所述跳躍窗口[chunk_51,chunk_200],那么此時就修改所述接收窗口及所述跳躍窗口的最小值,例如,將所述接收窗口的最小值修改為chunk_101,將所述跳躍窗口的最小值修改為chunk_151,優(yōu)選地,可以保持所述接收窗口和所述跳躍窗口中最大值和最小值之間的差值不變,那么,修改后的接收窗口為[chunk_101,chunk_150],修改后的跳躍窗口為[chunk_151,chunk_300],此時,所述目標chunk的標識ID就會落入到修改后的接收窗口中。

對于所述目標chunk的標識ID屬于所述跳躍窗口這一檢測結(jié)果,通常可能有兩種情況會導致這種結(jié)果:所述直播節(jié)點的播放進度太慢,需要向前追趕播放進度;或者所述主直播源站和所述備用直播源站發(fā)生了主備切換。在本實施例中,不必區(qū)分上述兩種情況,而是采用相同的手段來執(zhí)行后續(xù)操作:可以認為所述直播節(jié)點的當前播放進度已經(jīng)大大落后于實時直播內(nèi)容,因而將接收窗口和跳躍窗口同時向前移動,以使所述直播節(jié)點最新收到的目標chunk的標識ID落在接收窗口中。即:不再嘗試解碼恢復原始接收窗口中的落后數(shù)據(jù),而是專注于接收和恢復最新的視頻數(shù)據(jù)內(nèi)容。這時,由于被恢復的chunk中的tag在時間軸上未必連續(xù),用戶在觀看時也許會出現(xiàn)內(nèi)容的跳躍。但考慮到這種情況較少發(fā)生,且直播用戶一般都關(guān)注最新的內(nèi)容,所以通常情況下是可以被用戶接受的。

實施例3

本實施例的P2P直播的視頻數(shù)據(jù)一致性的保持方法利用實施例1的P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng)實現(xiàn),如圖3所示,所述P2P直播的視頻數(shù)據(jù)一致性的保持方法包括以下步驟:

步驟101、主直播源站接收待直播的視頻數(shù)據(jù),并將視頻數(shù)據(jù)依次寫入多個第一chunk中;

步驟102、所述主直播源站利用自增ID依次為每個第一chunk設置第一標識ID,并將每個第一chunk的第一標識ID同步至至少一個備用直播源站;

步驟103、在所述主直播源站發(fā)生故障時,從所述至少一個備用直播源站中選取一目標備用直播源站并切換為新的主直播源站;

步驟104、所述新的主直播源站繼續(xù)接收所述待直播的視頻數(shù)據(jù),并將視頻數(shù)據(jù)依次寫入多個第二chunk中;

步驟105、所述新的主直播源站查詢所述第一標識ID的最大值,并利用自增ID依次為每個第二chunk設置第二標識ID;所述第二標識ID的最小值大于所述第一標識ID的最大值;

步驟106、所述新的主直播源站將每個第二chunk的第二標識ID同步至其它備用直播源站;

步驟107、所述主直播源站將所述多個第一chunk分發(fā)至所述多個直播節(jié)點;所述新的主直播源站將所述多個第二chunk分發(fā)至所述多個直播節(jié)點。

其中,在步驟105中,所述第二標識ID的最小值與所述第一標識ID的最大值滿足如下比較關(guān)系:

C2>C1+(ΔT*R)/Csize;

其中C2表示所述第二標識ID的最小值,C1表示所述新的主直播源站被同步過的所述第一標識ID的最大值,ΔT表示從所述主直播源站發(fā)生故障到所述目標備用直播源站切換為新的主直播源站之間的時間間隔,R表示將視頻數(shù)據(jù)寫入所述第一chunk中的碼率,Csize表示所述第一chunk的容量。并且,優(yōu)選地,所述第二標識ID的最小值與所述第一標識ID的最大值之差比(ΔT*R)/Csize至少大一個數(shù)量級。

另外,步驟102中優(yōu)選地所述主直播源站可以以一個較低的頻率定時同步每個第一chunk的第一標識ID,步驟106中所述新的主直播源站可以以一個較低的頻率定時同步每個第二chunk的第二標識ID。

實施例4

本實施例的P2P直播的視頻數(shù)據(jù)一致性的保持方法利用實施例2的P2P直播的視頻數(shù)據(jù)一致性的保持系統(tǒng)實現(xiàn),如圖4所示,所述P2P直播的視頻數(shù)據(jù)一致性的保持方法包括以下步驟:

步驟201、主直播源站接收待直播的視頻數(shù)據(jù),并將視頻數(shù)據(jù)依次寫入多個第一chunk中;

步驟202、所述主直播源站利用自增ID依次為每個第一chunk設置第一標識ID,并將每個第一chunk的第一標識ID同步至至少一個備用直播源站;

步驟203、在所述主直播源站發(fā)生故障時,從所述至少一個備用直播源站中選取一目標備用直播源站并切換為新的主直播源站;

步驟204、所述新的主直播源站繼續(xù)接收所述待直播的視頻數(shù)據(jù),并將視頻數(shù)據(jù)依次寫入多個第二chunk中;

步驟205、所述新的主直播源站查詢所述第一標識ID的最大值,并利用自增ID依次為每個第二chunk設置第二標識ID;所述第二標識ID的最小值大于所述第一標識ID的最大值;

步驟206、所述新的主直播源站將每個第二chunk的第二標識ID同步至其它備用直播源站;

步驟207、所述主直播源站將所述多個第一chunk分發(fā)至多個邊緣服務器,所述新的主直播源站將所述多個第二chunk分發(fā)至所述多個邊緣服務器;

所述邊緣服務器對每個chunk執(zhí)行編碼操作以生成多個與所述chunk具有相同標識ID的編碼片段,并將編碼片段發(fā)送至直播節(jié)點,不同直播節(jié)點之間相互交換編碼片段,所述直播節(jié)點對具有相同標識ID的編碼片段執(zhí)行解碼操作以恢復chunk;所述chunk包括所述第一chunk及所述第二chunk。

其中,在步驟207中,優(yōu)選地,所述編碼操作為糾刪碼編碼操作,所述解碼操作為糾刪碼解碼操作,不同直播節(jié)點之間用于通過P2P方式相互交換編碼片段。

步驟208、在直播節(jié)點設置一接收窗口及一跳躍窗口;所述接收窗口及所述跳躍窗口均為ID集合,所述第一標識ID均屬于所述接收窗口,所述第二標識ID均屬于所述跳躍窗口;

步驟209、所述直播節(jié)點在接收到一個目標chunk的編碼片段后,檢測所述目標chunk的標識ID是否屬于所述接收窗口或所述跳躍窗口,然后根據(jù)不同的檢測結(jié)果執(zhí)行不同的后續(xù)操作。

具體地,

若所述目標chunk的標識ID不屬于所述接收窗口及所述跳躍窗口,則丟棄所述目標chunk的編碼片段;

若所述目標chunk的標識ID屬于所述接收窗口,則對所述目標chunk執(zhí)行解碼操作,并增大所述接收窗口及所述跳躍窗口的最小值,以相應地向前移動所述接收窗口及所述跳躍窗口;

若所述目標chunk的標識ID屬于所述跳躍窗口,則修改所述接收窗口及所述跳躍窗口的最小值,并使得所述目標chunk的標識ID屬于修改后的接收窗口。

雖然以上描述了本發(fā)明的具體實施方式,但是本領(lǐng)域的技術(shù)人員應當理解,這些僅是舉例說明,本發(fā)明的保護范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實質(zhì)的前提下,可以對這些實施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護范圍。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
涪陵区| 沙河市| 土默特右旗| 卓资县| 揭阳市| 钟山县| 周至县| 鞍山市| 开封市| 沈丘县| 纳雍县| 平远县| 涟水县| 灌云县| 丰原市| 遂平县| 湘西| 衡阳市| 庆阳市| 江川县| 德惠市| 连州市| 石泉县| 长泰县| 蕲春县| 新建县| 凤庆县| 卢氏县| 江西省| 鄯善县| 苍梧县| 靖安县| 蓝田县| 吉隆县| 洮南市| 谢通门县| 久治县| 平江县| 乐都县| 军事| 兴化市|