新四季網

基於點對點傳輸的流媒體直播系統同步播放方法

2023-04-27 08:53:06

專利名稱:基於點對點傳輸的流媒體直播系統同步播放方法
技術領域:
本發明屬於網際網路音視頻數據播放方法,具體涉及一種基於點對點
(P2P) ^tr的流媒體直播系統同步播放方法。 背景駄
目前利用網際網路進行音視頻數據直播的各主流點對點(P2P)系統如 PPlive、 QQlive、 PPstream等都存在播放不同步的問題,即不同客戶觀看 同1影片時畫面不一致,有時相差在5秒左右,有時相差達120秒,隨 機性 :。由於播放不同步,造,戶,差。

發明內容
本發明的目的在於提供一種可以實現動態同步播放的基於點對點 (P2P)傳輸的流媒體直播系統同步播方M法。
實現本發明的目的方法是
以緩存伺服器作為頂層,以各客戶端PC枳組成的P2P網絡作為第二層; 首先在緩存伺服器對直播源音視M^進行封裝,包括
(1) 將設定繊量的軒特視頻繊合併成一個3P包,並對3P包 進fi^續遞增且唯一的編號;
(2) 同步申請固定大小緩存區,用*^存^1纖的3 包;
(3) 當保存的3P包個ifc&iU offset時,確定PullPos和PlayPos, 有PullPos = PlayPos + offset; PullPos為拉包點,即客戶端開^i青求 拉包的起點;PlayPos為播放點,即客戶端開始播放的起點;offset為 3P包最小數量,即考慮拉包延時與播放最小緩存以皿片碼率,數計算 的一個偏移值;
其次啟動P2P網絡客戶端,包括
(4) P2P網絡客戶端啟動後,先從父節點中取得PullPos,並申請固 定大小的緩存區用來保存3P包;
(5) 以PullPos為起始包,向父節點拉取3P包,當存在多個父節點 時,則同時請求多個3P包,從父節點取得的3P包按照包號依次保存到緩存中;
(6) 當保存的3P包個數滿^i^播放offset要求時,f^人其中的一 個父節點取得PlayPos,客戶端從PlayPos處開始播放;
(7) 播放開始後,根據PlayPos計算出PullPos,二者滿足PullPos =PlayPos + offset,且與播方M^同步繊;
(8) 當緩存區t麟後對己經播放的3P包按照艦先出柳,進行刪 除或覆蓋等更新操作;
(9) 客戶端拉^M如果小於碼率,則需要進糹彌態調整,確定跳包點。
(10) 跳包後,當緩存中可以播放的3P包不存在時,播放將暫停,等 待拉包縦到播放要求時,重新從父節點中取f射翻iC點,並從播放點處重 新開始播放。
戶,(1)中的設定,量為不皿32Kbyte。
■ (9)中瑕抱點的確定是將PullPos和PlayPos置為O,表明M 點不能提微包點和播放點,同時以節點平均下載碼率為參數計算跳包點。
基本原理當P2P網絡直播的各客戶端在同一時刻緩存的繊基糊 同,而且當某客戶端因為性會嗟異(如網絡帶寬差異等)等原因出現緩存 異步時倉激^^態調整,則各客戶端的播放是同步的。
本發明方法在已開發的P2P直播系統PowerLiveP2P VI. 4中得到完全 應用。測錄明不同客戶端播放畫面相差在l秒以內,完全實現了本發 明目的。
下面結合附圖對本發明作進一步說明。


圖1是發明方法的原理框圖。
圖2是緩存服務^f裝算法流程圖。
圖3是客戶端同步緩存算法流程圖。
見圖l,基於點對點(P2P)傳輸的流媒體直播系統同步播M"法,以 緩存伺服器l作為頂層,以各客戶端PC機3 (如第l、第2、第m和第n 客戶PC機)組成的P2P網絡2作為第二層;
首先在緩存伺服器1對直播源音視頻 (即sample)進行封裝,按照不超過32Kbyte大小將^T個sample合併成一個3P包,並對3P艦行 編號,編號是遞增且唯一的,各3P包頭結構P2P—3PPACK—HEAD中保存了編 號和3P包的SHA1哈希值^#數,哈希tOT於客戶端衞正3P包的正確性。 緩存服務驗啟動時申請固定大小緩存區,用來保存軒纖的3P包。當 保存的3P包個數達到最小數量(offset)時,確定拉包點(PullPos)和 播放點(PlayPos)。拉包點和播放點隨^ij"裝同步,。PullPos為客戶 端開始請求拉包的起點;PlayPos為客戶端開始播放的起點,PullPos = PlayPos + offset; offset為考慮拉包延時與播放最小緩存以及影片碼率 等參數計算的一個偏,,即3P包最小M。
其次對客戶端,客戶端PC機3啟動後M父節點中取得PullPos,並 申請固定大小的緩存區用來保存3P包。然後以PullPos為起始包,向父節 點拉取3P包。當存在多個父節點時,則同時請求多個3P包。從父節點取 得的3P包按照包號依次保存到緩存中。當保存的3P包個數滿^^f放 最小數量(offset)要求時,就從其中的一個父節點取得PlayPos,客戶 端從PlayPos處開始播放。播放開始後,根據PlayPos計算出PullPos, 二者滿足PullPos = PlayPos + offset,且與播方M^同步鵬。PullPos 和PlayPos用來給下級節點M^包點和播放點。當緩存區i臭滿後對已經 播放的3P包按照先進先出的順序進行刪除或覆蓋等更新操作。根據 PullPos和PlayPos ±真充和^§ 的各客戶端緩存基 |同。
再次,客戶端PC機3拉^g如果小於碼率,則需要進糊態調整。 此時,將PullPos和PlayPos置為0,表明節點不能JI^包點和播放 點。同時採用一定算法函繊行跳包計算,瑕抱計算函數以節點平均下載 碼率為參數,確定跳包點。瑕抱後,當緩存中可以播放的3P包不存在時,
播放將暫停,等待拉包idii鵬放要求時,重新從父節點中取#^放點,
並從播放點處重新開始播放。
結構定義與實現算法 1結構定義 1.13P包頭結構 struct P2P—3PPACK—HEAD
BYTEHashVal [20]; 〃哈希值(SHA1)DWORD dwChnlN0: 〃頻道編號
DW0RD64 dw3PPackN0; 〃3P包編號
WORD wSampleNumbers; 〃包含的sample個數
DWORDdwSize; 〃該P包的數據大小(不包含此頭大小)
};
1.2 sample頭結構 struct P2P—SAMPLE—HEAD
DWORD dwDataSize; 〃Sample的f[Jg大小(不包含此頭大
小)
WORD wSampleStreamNum; 〃Sample流編號
DW0RD64 qwSampleTimeStamp; 〃Sample時間戳
DW0RD64 qwSampleTimeDuration;〃Sample時長
DWORD SampleFlags; 〃Sample標誌
DWORD dwCustomTimeSt卿; 〃根據月艮務器Tick計算的時間戳
1. 3緩^t盾環隊列結構 struct STRUCT—3P—皿
DWORD ChnlNum; 〃頻道編號
DW0RD64 PackNum; 〃3P包編號
DWORD DataSize; 〃3P包總大小(包頭+Saraple大小)
BYTE *p3PData; 〃3P爐鄉艦
1.4鄰居節點信息存儲結構 struct P2P—NODE—ADDR
DW0RD64 qwNodeID;
DWORD dwWanIP;
DWORD dwLanIP;
USHORT uTCPPort;
〃點編號 〃外網IP位址 〃內網IP位址 〃TCP監聽埠int nNodeType; 〃節點類型
};
struct PEER_N0DE_INF0
P2P—NODE—ADDR addrNode; 〃節點信息 time_t timeStamp; 〃時間戳 DWORD dwExchangeCount; 〃節點信息交換7, BYTE chWanType; 〃節點公網屬性 BYTE chLanType; 〃節點內網屬性
};
2緩存伺服器的3P敏裝算鄉代碼
QWORD qwNum;〃3P包編號
int iSize;〃3P包大小
int iSamplesize;//sample的大小
QWORD PullPos;〃拉包點
QWORD PlayPos;〃播放點
DWORD Number; 〃3P包個數
DWORD Offset;〃PlayPos與PullPos偏移值
P2P—SAMPLE—HEAD sampleHead; 〃sample頭
P2P—3PPACK—HEAD packHead; 〃3P包頭
CArray〈STRUCT_3P—IDX〉 m—aryldx; 〃3P包索弓傲組
Initialize(m_aryldx);〃初始化nLaryldx
while (1)
If (systemexit) 〃系^ii出
Break ;〃結^f裝 If(iSize+ iSaraplesize 〈 32*1024)
SetValue (sampleHead);〃設置sampleHead Update (packHead): 〃^§ packHead中^^ft Merge (sample) ;//將sample合併至!j當前3P包Else
Update (packHead); 〃gff packHead中^Hl
Finish3PPack(qwNum);〃完成當前3P ^if裝
Save3PPack (qwNum); 〃將當前完成封裝的3P包保存到m—aryldx
Numb6r+"h
If (Numbet=offset)
PullPos=Number; PlayPos二l;
Else if(Numbet〉offset)
PullPos++; PlayPos卄;
qwNum++;
Create3PPack (qwNum); 〃,一個新3P包,置為當前3P包 Set Value (sampleHead) ;〃"^S sampleHead Update (packHead); 〃^f packHead中^SHl Merge (sample); 〃將sample合併至!j當前3P包
3客戶端同步緩存算鄉代碼 typedef
CMap〈QW0RD, QWORD, PEER—NODE—INFO, PEER—NODE_INFO>CPeerNodeMap; CPeerNodeMap mjnapCurFather; 〃當前父節點歹!]表 PEER—NODE—INFO father; 〃當前父節點 QWORD qwNum;〃3P包編號 QWORD PullPos;〃拉包點QW0RD PlayPos;〃播放點
DWORD Offset; 〃PlayPos與Pul lPos偏雜
CArray<STRUCT_3P—IDX〉 m_aryIdx; 〃3P包索弓傲組
For(;;)
Pul 1Pos^GetPul IPosFromFather (mapCurFather); 〃從父節點取拉包點 If(PullPos〉0)
Break ;〃如果成功取得拉包點,瑕咄循環
Initialize (m—aryldx);〃初始化m—aryldx qwNum = PullPos; while (1)
If (systemexit) 〃系,出
Break ;〃結束 For(;;)
Father = GetFather (mapCurFather); 〃從父節點列表取一1^I節

If(InValid(Father)) 〃父節點無效表明遍歷了一遍父節點列表, 跳出
Break;
Request3PPack (qwN卿father); 〃從父節點i青求3P包 Save3PPack (qwNum); 〃將取得的3P包保存到m_aryldx qwNum++;〃Next 3P包
If (! PlayReady ) 〃判斷是否可以播放
Continue ;〃還不會離放 while (PlayPos<=0) 〃如果沒有成功取#|番放點,繼續取播放點
PlayPos^GetPlayPosFromFather (mapCurFather); 〃從父節點取播包點
If(PlayPos〉=0)
PullPos=PlayPos+ Offset;
Play3PPack(PlayPos);〃從PlayPos開始播放
PullPos++;
PlayPos++;
Update (m—aryldx);〃維護3P包索弓l數組刪除舊的3P包
If (needAd just ) 〃判斷是否需要進摘態調整
PullPos = Jump;〃謝彌態調整跳包到一個新拉包隨 PlayPos = 0;
4算法流程圖
4.1緩存伺服器封裝算法流程圖 緩存伺服器封裝算法流程圖如圖2戶B。 4. 2客戶端同步緩存算法流程圖 客戶端同步緩存算法流程圖如圖3戶B。
權利要求
1、一種基於點對點傳輸的流媒體直播系統同步播放方法,其特徵是以緩存伺服器作為頂層,以各客戶端PC機組成的P2P網絡作為第二層首先在緩存伺服器對直播源音視頻數據進行封裝,包括(1)將設定數據量的若干個音視頻數據合併成一個3P包,並對3P包進行連續遞增且唯一的編號;(2)同步申請固定大小緩存區,用來保存若干連續的3P包;(3)當保存的3P包個數達到offset時,確定PullPos和PlayPos,有PullPos=PlayPos+offset;PullPos為拉包點,即客戶端開始請求拉包的起點;PlayPos為播放點,即客戶端開始播放的起點;offset為3P包最小數量,即考慮拉包延時與播放最小緩存以及影片碼率等參數計算的一個偏移值;其次啟動P2P網絡客戶端,包括(4)P2P網絡客戶端啟動後,先從父節點中取得PullPos,並申請固定大小的緩存區用來保存3P包;(5)以PullPos為起始包,向父節點拉取3P包,當存在多個父節點時,則同時請求多個3P包,從父節點取得的3P包按照包號依次保存到緩存中;(6)當保存的3P包個數滿足連續播放offset要求時,就從其中的一個父節點取得PlayPos,客戶端從PlayPos處開始播放;(7)播放開始後,根據PlayPos計算出PullPos,二者滿足PullPos=PlayPos+offset,且與播放速度同步推進;(8)當緩存區填滿後對已經播放的3P包按照先進先出的順序進行刪除或覆蓋等更新操作;(9)客戶端拉包速度如果小於碼率,則進行動態調整,確定跳包點;(10)跳包後,當緩存中可以播放的3P包不存在時,播放將暫停,等待拉包數達到播放要求時,重新從父節點中取得播放點,並從播放點處重新開始播放。
2、 根據權利要求1所述的基於點對點傳輸的流媒體直播系統同步播放方法,其特徵是戶,(1)中的設定i^量為不皿32Kbyte。
3、根據權利要求1或2所述的基於點對點傳輸的流媒體直播系統同步 播放方法,其特徵是戶;M (9)中跳包點的確定是將PullPos和PlayPos置為o,表明該節點不能^m包點和播放點,同時以節點平均下載碼率為參數計算跳包點。
全文摘要
本發明公開了一種基於點對點傳輸的流媒體直播系統同步播放方法,它是以緩存伺服器作為頂層,以各客戶端PC機組成的P2P網絡作為第二層首先在緩存伺服器對直播源音視頻數據進行封裝,其次啟動P2P網絡客戶端,使各客戶端在同一時刻緩存的數據基本相同,而且當某客戶端因為性能差異(如網絡帶寬差異等)等原因出現緩存數據異步時能進行動態調整,實現各客戶端的同步播放。
文檔編號H04L12/28GK101304351SQ20081003161
公開日2008年11月12日 申請日期2008年6月30日 優先權日2008年6月30日
發明者劉戊開, 唐新春, 嶽新雨, 李興平, 王龍波, 謙 陳, 譜 陳 申請人:湖南創智數碼科技股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀