一種網絡流媒體數據播放方法和系統的製作方法
2023-05-03 19:09:26 1
專利名稱:一種網絡流媒體數據播放方法和系統的製作方法
技術領域:
本發明電通信技術,尤其涉及一種網絡流媒體數據播放方法和系統。
背景技術:
隨著寬帶網接入技術的快速發展,流媒體應用越來越受人關注。傳統的基於流媒體伺服器的內容分發技術遇到了較大的挑戰一方面由於流媒體伺服器的帶寬限制,系統所能支持的同時在線人數有限,擴展性不高,特別是近年來人們對畫面的品質要求也提高了,現在一般的網絡電視的碼流基本上都在400~600Kbps左右;另一方面,流媒體伺服器的維護成本較高。基於以上的考慮,基於P2P的內容分發技術開始受到廣泛的關注和發展。
在P2P應用領域,主要有三種系統架構集中式,純分布式和混合式。集中式P2P的典型代表為eMule,BitTorrent,其採用一種Tracker伺服器的實體來實現信息的存儲和搜索;純分布式P2P,就是採用DHT技術,將信息分散存儲到網絡上的各個節點,並採用P2P搜索技術來獲取這些信息;混合式P2P的典型代表為Skype,其利用超級節點進行信息存儲和搜索。
在現有技術中,實時流媒體內容分發主要採用應用層組播樹(ALM)傳播,應用層組播的典型代表為基於單樹的ZIGZAG模型(Duc A.Tran,KienA.Hua,TaiDo,″ZIGZAGAn Efficient Peer-to-Peer Scheme for Media Streaming″,IEEE2003)和基於多樹的SplitStream模型(M.Castro,P.Druschel,A.-M.Kermarrec,A.Nandi,A.Rowstron and A.Singh,″SplitStreamHigh-Bandwidth Multicast in Cooperative Environments″,in ACM SOSP,Bolton Landing,NY,USA,October 19-22,2003),組播樹通過在全局維護一個以媒體源為根節點的分發樹結構,數據分發採用類似網絡層組播技術,從上向下,逐層分發,作為葉子節點的用戶終端只能被動地接受來自上層節點的數據,根節點的數據量很大,形成了數據傳輸瓶頸,這種技術方案對於網絡動態拓撲變化的適應性較差,不能充分利用系統現有的網絡資源,效率低。
發明內容
本發明的目的在於提供一種高效率的網絡流媒體數據播放方法和系統,以解決現有技術中對於網絡動態拓撲變化的適應性較差,效率低的問題。
本發明中的網絡流媒體數據播放方法採用如下步驟A、客戶端獲取頻道信息;B、根據頻道信息選擇頻道,取得相應頻道活動節點列表;C、客戶端根據該活動節點列表獲取新的夥伴節點信息,通過頻道伺服器在客戶端與夥伴節點之間實現流媒體數據分發,客戶端進行相應播放。
所述的步驟A包括如下步驟A1、客戶端啟動後連接STUN伺服器,完成客戶端NAT類型和外部IP位址信息的測試;A2、客戶端連接頻道發布Web伺服器,由頻道發布Web伺服器下載頻道信息文件,顯示頻道列表。
所述的步驟B包括如下步驟B1、由頻道列表選取所需頻道,並向相關頻道伺服器發送NAT類型和外部IP位址信息;B2、客戶端登陸所述頻道伺服器,頻道伺服器根據所選頻道,依據客戶端IP位址地域性和NAT可穿越性向客戶端返回最佳的頻道活動節點列表。
所述的頻道伺服器還向客戶端返回流媒體數據同步信息和流媒體頭信息。
所述的步驟C中,所述的客戶端通過「心跳包」機制與頻道伺服器保持連接。
所述的步驟A之前還包括如下步驟媒體源連接到頻道伺服器,添加一個新的頻道,頻道伺服器保存該媒體源的頻道,頻道伺服器對頻道信息文件進行相應更新。
所述的媒體源向頻道伺服器發送流媒體數據同步信息。
所述的步驟C包括如下步驟C1、客戶端節點向活動節點請求所需數據片;C2、客戶端採用Membe/Partner機制來管理節點,節點與夥伴節點通過Gossip協議不斷地發現新節點,添加作為自己的Member節點,對所有的活動節點進行更新;C3、客戶端與夥伴節點之間通過頻道伺服器建立數據通道,完成流媒體數據分發,客戶端對收到的流媒體數據進行相應播放。
所述的步驟C1中,客戶端將數據片請求隨機地發送到持有該數據片的各個夥伴節點或活動節點,以保持節點的負載平衡。
所述的步驟C2中,客戶端節點通過周期性地向夥伴節點發送Gossip包,根據本地的播放進度和數據片的有效性,發出相關數據片的獲取請求,以及本地節點所能夠提供的數據片信息。
所述的步驟C2中,客戶端根據對夥伴節點的質量和流量評估,周期性地淘汰20%的夥伴節點,並選取等量的閒置Member節點進行替換。
所述的步驟C3中,客戶端之間採用頻道伺服器轉發NAT穿透相關信令進行NAT/Firewall穿透,客戶端之間採用UDP協議連接數據通道。
這種網絡流媒體數據播放系統,包括媒體源和客戶端,所述的媒體源保存有流媒體數據,其特徵在於還包括頻道伺服器和頻道發布Web伺服器,其中,所述的頻道伺服器保存媒體源的頻道,對頻道發布Web伺服器中的頻道信息文件進行更新;所述的頻道發布Web伺服器接收頻道伺服器發送的頻道,保存頻道信息文件;所述的客戶端根據頻道發布Web伺服器中的頻道信息文件選取頻道,頻道伺服器根據所選頻道向客戶端發送相應頻道活動節點列表,客戶端根據活動節點列表獲取新的夥伴節點信息,通過頻道伺服器在客戶端的夥伴節點之間實現流媒體數據分發,客戶端對流媒體數據進行播放。
所述的客戶端採用Membe/Partner機制來管理節點,節點通過與夥伴節點的Gossip機制不斷的發現新節點,添加並作為自己的Member節點,對所有的活動節點進行更新。
所述客戶端中設置緩衝管理器,所述的緩衝管理器採用環形結構,同時應用帶引用計數的數據塊緩衝池,根據播放的進度來控制本地的數據存儲,該緩衝管理器設置了兩個遊標,一個用於指示當前播放的進度,另一個用於指示本地緩衝的起始數據片ID號,數據採用推模式添加到緩衝管理器;播放時從緩衝管理器中獲取數據片,並推給流媒體的過濾器進行渲染和播放。
所述系統還包括STUN伺服器,所述的STUN伺服器通過與客戶端信息交互,完成客戶端NAT類型和外部IP位址信息的測試,由客戶端保存所述NAT和IP信息並根據需要向頻道伺服器發送所述信息。
所述的採用STUN伺服器採用STUN協議(RFC 3489)與客戶端進行信息交互。
所述系統中包括多個頻道伺服器,所述頻道伺服器之間採用級聯,所述頻道伺服器完成客戶端之間、以及客戶端與不同頻道伺服器之間的信息中轉,所述的中轉信息包括活動節點列表、NAT穿透信令。
本發明的有益效果為在本發明中,客戶端獲取頻道信息,根據頻道信息選擇頻道,取得相應頻道活動節點列表,客戶端根據該活動節點列表獲取新的夥伴節點信息,通過頻道伺服器在客戶端的夥伴節點之間實現流媒體數據分發,客戶端進行相應播放,具體地說,客戶端採用Membe/Partner機制來管理節點,節點與夥伴節點通過Gossip協議不斷地發現新節點,添加作為自己的Member節點,即對所有的活動節點進行更新。這樣,在本發明中,數據分發採用Gossip算法,節點隨機地給系統中的部分(活動)節點發送消息,每個接收到消息的(活動)節點繼續向其它節點發送消息,重複這個過程,直到消息被發送給系統中的所有節點,在流媒體數據傳輸過程中,音視頻/流媒體數據被分割成一個個小的片斷,用一個緩存映射BMap(buffer map)來表示節點中是否擁有某個片斷的數據,節點和夥伴節點之間通過Gossip算法不斷交換BMap來了解相互間的緩存情況,換句話說,在數據傳輸過程中,節點(對應的客戶端)之間就相互成為相對的數據發送端或接收端,從而大大降低了系統主伺服器(如頻道伺服器、媒體源)的負荷,充分利用了系統現有的網絡資源,提高了系統工作效率。
在本發明中,採用STUN伺服器採用STUN協議(RFC 3489)與客戶端進行信息交互,完成客戶端NAT類型和外部IP位址信息的測試,可進一步提高系統網絡的透明性,為最大限度利用系統現有網絡資源提供了有效的途徑,進一步提高了本發明的實用性和可操作性。
在本發明中,客戶端根據對夥伴節點的質量和流量評估,如每個節點通過維護一個本地節點視圖,可實現動態地調整這些夥伴節點,使系統傳輸通道優化,進一步提高了本發明的實用性。
圖1為本發明實施例1系統結構示意圖;圖2為本發明基本控制流程示意圖;圖3為本發明實施例1控制流程示意圖;圖4為本發明實施例2系統結構示意圖。
具體實施例方式
下面根據附圖和實施例對本發明作進一步詳細說明實施例1根據圖1,本發明包括媒體源1、客戶端2、頻道伺服器3、頻道發布Web伺服器4和STUN伺服器5。
如圖1所示,媒體源1保存有流媒體數據,媒體源1連接到頻道伺服器3,添加一個新的頻道,頻道伺服器3保存該媒體源1的頻道。
如圖1所示,所述的頻道伺服器3保存媒體源1的頻道,對頻道發布Web伺服器4中的頻道信息文件進行更新;頻道發布Web伺服器4接收頻道伺服器3發送的頻道,保存頻道信息文件,頻道信息文件中包含有頻道信息和相關信息。
如圖1所示,客戶端2與頻道伺服器3相聯,在該圖1中,為清楚地顯示有關連接關係,只顯示了一個客戶端2,而在實際應用中,可能會有若干個客戶端2與頻道伺服器3相聯,客戶端2根據頻道發布Web伺服器4中的頻道信息文件選取頻道,頻道伺服器3根據所選頻道向客戶端2發送相應頻道活動節點列表,客戶端2根據活動節點列表獲取新的夥伴節點信息,通過頻道伺服器3在客戶端2的夥伴節點之間實現流媒體數據分發,客戶端2對流媒體數據進行播放,具體地,客戶端2採用Membe/Partner機制來管理節點,節點與夥伴節點通過Gossip協議不斷地發現新節點,添加作為自己的Member節點,對所有的活動節點進行更新。
客戶端2中設置緩衝管理器,緩衝管理器採用環形結構,同時應用帶引用計數的數據塊緩衝池,根據播放的進度來控制本地的數據存儲,該緩衝管理器設置了兩個遊標,一個用於指示當前播放的進度,另一個用於指示本地緩衝的起始數據片ID號,數據採用推模式添加到緩衝管理器;播放時從緩衝管理器中獲取數據片,並推給流媒體的過濾器進行渲染和播放。
如圖1所示,STUN伺服器5採用STUN協議(RFC 3489)與客戶端2信息交互,完成客戶端2NAT類型和外部IP位址信息的測試,由客戶端2保存所述NAT和IP信息並根據需要向頻道伺服器3發送所述信息。
如圖1和圖2所示,本發明的基本控制流程如下1)客戶端2由頻道發布Web伺服器4中的頻道信息文件獲取頻道信息。
2)客戶端2根據頻道信息文件的內容選擇頻道,頻道伺服器3根據所選頻道向客戶端2發送相應頻道活動節點列表。
3)客戶端2節點向其中的活動節點請求所需數據片。
4)客戶端2採用Membe/Partner機制來管理節點,節點與夥伴節點通過Gossip協議不斷地發現新節點,添加作為自己的Member節點,對所有的活動節點進行更新。
5)客戶端2與夥伴節點之間通過頻道伺服器3建立數據通道,完成流媒體數據分發,客戶端2對收到的流媒體數據進行相應播放。
如圖1和圖3所示,下面就本發明的具體控制流程說明如下1.媒體源1連接到頻道伺服器3,添加一個新的頻道。
2.頻道伺服器3保存該媒體源1的頻道以及該頻道中流媒體數據同步信息,頻道伺服器3對頻道發布Web伺服器4中的頻道信息文件進行相應更新。
3.客戶端2啟動後連接STUN伺服器5,STUN伺服器5採用STUN協議(RFC 3489)與客戶端2信息交互,完成客戶端2NAT類型和外部IP位址信息的測試,客戶端2保存該NAT和IP位址信息。
4.客戶端2連接頻道發布Web伺服器4,由頻道發布Web伺服器4下載頻道信息文件,在客戶端2顯示頻道列表。
5.用戶從頻道列表中選取所需頻道,並向頻道伺服器3發送NAT類型和外部IP位址信息,從用戶的層面上來說,這種選取可直觀地體現為點擊一項與頻道伺服器3的連結。
6.客戶端2登陸該頻道伺服器3,頻道伺服器3根據所選頻道,依據客戶端IP位址地域性和NAT可穿越性向客戶端2返回最佳的頻道活動節點列表、流媒體數據同步信息和流媒體頭信息。
7.客戶端2節點向其中的活動節點請求所需數據片,客戶端2將數據片請求隨機地發送到持有該數據片的各個夥伴節點或活動節點,以保持節點的負載平衡。
8.客戶端2採用Membe/Partner機制來管理節點,節點與夥伴節點通過Gossip協議不斷地發現新節點,添加作為自己的Member節點,對所有的活動節點進行更新,在這種更新過程中,客戶端2節點通過周期性地向夥伴節點發送Gossip包,根據本地的播放進度和數據片的有效性,發出相關數據片的獲取請求,以及本地節點所能夠提供的數據片信息,客戶端2根據對夥伴節點的質量和流量評估,周期性地淘汰20%的夥伴節點,並選取等量的閒置Member節點進行替換。
為了減小向單一夥伴節點過量請求數據片而導致數據冗餘和播放延遲,在本發明中,為每個夥伴節點設置了滑動窗口機制,在數據片調度時參考當前夥伴節點的滑動窗口大小,以決定向該節點請求相應的數據片是否容許。
各節點在收到夥伴節點的Gossip數據包後,保存夥伴節點的緩衝區數據片位圖信息BMap,同時,節點周期性地比較本地緩衝區數據片位圖和夥伴節點的BMap,執行數據片調度算法向夥伴節點請求新的數據片。
9.客戶端2與夥伴節點之間通過頻道伺服器3建立數據通道,客戶端2之間採用頻道伺服器3轉發NAT穿透相關信令進行NAT/Firewall穿透,在流媒體數據的傳輸中,客戶端2之間採用UDP協議連接數據通道,從而完成流媒體數據分發,客戶端2對收到的流媒體數據進行相應播放。客戶端2通過「心跳包」機制與頻道伺服器3保持連接,即按設定的時間周期,客戶端2與頻道伺服器3之間進行呼叫、應答聯絡,以確定客戶端2相對於頻道伺服器3處於在線狀態,且頻道伺服器3定時獲取客戶端2的有關狀態信息。
在本發明中,為了減少數據片在處理過程中的數據拷貝,節點採用了帶引用計數的內存緩衝池技術,採用環形結構的緩衝管理器,同時應用帶引用計數的數據塊緩衝池,根據播放的進度來控制本地的數據存儲,該緩衝管理器設置了兩個遊標,一個用於指示當前播放的進度,另一個用於指示本地緩衝的起始數據片ID號,數據採用推模式添加到緩衝管理器,當從夥伴節點獲取到數據片時,位於客戶端2的流媒體播放器,通過一個獨立的線程不斷地從客戶端2中的Buffer管理器中拉數據,播放時從緩衝管理器中獲取數據片,並推給流媒體的過濾器進行渲染和播放。
這樣,本發明在數據傳輸過程中,節點(或對應的客戶端)之間就相互成為相對的數據發送端或接收端,從而大大降低了系統主伺服器(如頻道伺服器、媒體源)的負荷,充分利用了系統現有的網絡資源,提高了系統工作效率。
實施例2如圖4所示,本實施例與實施例1的區別在於在本實施例中,本發明包括多個頻道伺服器3A、3B、…、3X,頻道伺服器3A、3B、…、3X之間採用級聯,多個客戶端2A、…、2Y分別與頻道伺服器3A、3B、…、3X相聯,頻道伺服器3A、3B、…、3X完成客戶端2A、…、2Y之間、以及客戶端2A、…、2Y與不同頻道伺服器3A、3B、…、3X之間的信息中轉,所述的中轉信息包括活動節點列表、NAT穿透信令等,至於其它結構與控制流程,與實施例1所述相同或相似,此處不再贅述。
權利要求
1.一種網絡流媒體數據播放方法,其特徵在於它採用如下步驟A、客戶端獲取頻道信息;B、根據頻道信息選擇頻道,取得相應頻道活動節點列表;C、客戶端根據該活動節點列表獲取新的夥伴節點信息,通過頻道伺服器在客戶端與夥伴節點之間實現流媒體數據分發,客戶端進行相應播放。
2.根據權利要求1所述的網絡流媒體數據播放方法,其特徵在於所述的步驟A包括如下步驟A1、客戶端啟動後連接STUN伺服器,完成客戶端NAT類型和外部IP位址信息的測試;A2、客戶端連接頻道發布Web伺服器,由頻道發布Web伺服器下載頻道信息文件,顯示頻道列表。
3.根據權利要求2所述的網絡流媒體數據播放方法,其特徵在於所述的步驟B包括如下步驟B1、由頻道列表選取所需頻道,並向相關頻道伺服器發送NAT類型和外部IP位址信息;B2、客戶端登陸所述頻道伺服器,頻道伺服器根據所選頻道,依據客戶端IP位址地域性和NAT可穿越性向客戶端返回最佳的頻道活動節點列表。
4.根據權利要求3所述的網絡流媒體數據播放方法,其特徵在於所述的頻道伺服器還向客戶端返回流媒體數據同步信息和流媒體頭信息。
5.根據權利要求1所述的網絡流媒體數據播放方法,其特徵在於所述的步驟C中,所述的客戶端通過「心跳包」機制與頻道伺服器保持連接。
6.根據權利要求2-5中任意一項所述的網絡流媒體數據播放方法,其特徵在於所述的步驟A之前還包括如下步驟媒體源連接到頻道伺服器,添加一個新的頻道,頻道伺服器保存該媒體源的頻道,頻道伺服器對頻道信息文件進行相應更新。
7.根據權利要求6所述的網絡流媒體數據播放方法,其特徵在於所述的媒體源向頻道伺服器發送流媒體數據同步信息。
8.根據權利要求2-5中任意一項所述的網絡流媒體數據播放方法,其特徵在於所述的步驟C包括如下步驟C1、客戶端節點向活動節點請求所需數據片;C2、客戶端採用Membe/Partner機制來管理節點,節點與夥伴節點通過Gossip協議不斷地發現新節點,添加作為自己的Member節點,對所有的活動節點進行更新;C3、客戶端與夥伴節點之間通過頻道伺服器建立數據通道,完成流媒體數據分發,客戶端對收到的流媒體數據進行相應播放。
9.根據權利要求8所述的網絡流媒體數據播放方法,其特徵在於所述的步驟C1中,客戶端將數據片請求隨機地發送到持有該數據片的各個夥伴節點或活動節點,以保持節點的負載平衡。
10.根據權利要求8所述的網絡流媒體數據播放方法,其特徵在於所述的步驟C2中,客戶端節點通過周期性地向夥伴節點發送Gossip包,根據本地的播放進度和數據片的有效性,發出相關數據片的獲取請求,以及本地節點所能夠提供的數據片信息。
11.根據權利要求8所述的網絡流媒體數據播放方法,其特徵在於所述的步驟C2中,客戶端根據對夥伴節點的質量和流量評估,周期性地淘汰20%的夥伴節點,並選取等量的閒置Member節點進行替換。
12.根據權利要求8所述的網絡流媒體數據播放方法,其特徵在於所述的步驟C3中,客戶端之間採用頻道伺服器轉發NAT穿透相關信令進行NAT/Firewall穿透,客戶端之間採用UDP協議連接數據通道。
13.一種網絡流媒體數據播放系統,包括媒體源和客戶端,所述的媒體源保存有流媒體數據,其特徵在於還包括頻道伺服器和頻道發布Web伺服器,其中,所述的頻道伺服器保存媒體源的頻道,對頻道發布Web伺服器中的頻道信息文件進行更新;所述的頻道發布Web伺服器接收頻道伺服器發送的頻道,保存頻道信息文件;所述的客戶端根據頻道發布Web伺服器中的頻道信息文件選取頻道,頻道伺服器根據所選頻道向客戶端發送相應頻道活動節點列表,客戶端根據活動節點列表獲取新的夥伴節點信息,通過頻道伺服器在客戶端的夥伴節點之間實現流媒體數據分發,客戶端對流媒體數據進行播放。
14.根據權利要求13所述的網絡流媒體數據播放系統,其特徵在於所述的客戶端採用Membe/Partner機制來管理節點,節點與夥伴節點通過Gossip協議不斷地發現新節點,添加作為自己的Member節點,對所有的活動節點進行更新。
15.根據權利要求13-14中任意一項所述的網絡流媒體數據播放系統,其特徵在於所述客戶端中設置緩衝管理器,所述的緩衝管理器採用環形結構,同時應用帶引用計數的數據塊緩衝池,根據播放的進度來控制本地的數據存儲,該緩衝管理器設置了兩個遊標,一個用於指示當前播放的進度,另一個用於指示本地緩衝的起始數據片ID號,數據採用推模式添加到緩衝管理器;播放時從緩衝管理器中獲取數據片,並推給流媒體的過濾器進行渲染和播放。
16.根據權利要求13-14中任意一項所述的網絡流媒體數據播放系統,其特徵在於所述系統還包括STUN伺服器,所述的STUN伺服器通過與客戶端信息交互,完成客戶端NAT類型和外部IP位址信息的測試,由客戶端保存所述NAT和IP信息並根據需要向頻道伺服器發送所述信息。
17.根據權利要求16所述的網絡流媒體數據播放系統,其特徵在於所述的採用STUN伺服器採用STUN協議(RFC 3489)與客戶端進行信息交互。
18.根據權利要求13-14中任意一項所述的網絡流媒體數據播放系統,其特徵在於所述系統中包括多個頻道伺服器,所述頻道伺服器之間採用級聯,所述頻道伺服器完成客戶端之間、以及客戶端與不同頻道伺服器之間的信息中轉,所述的中轉信息包括活動節點列表、NAT穿透信令。
全文摘要
一種涉及電通信技術的網絡流媒體數據播放方法和系統,該方法包括A.客戶端獲取頻道信息,B.根據頻道信息選擇頻道,取得相應頻道活動節點列表,C.根據該活動節點列表獲取新的夥伴節點信息,通過頻道伺服器在客戶端與夥伴節點之間實現流媒體數據分發;該系統包括媒體源和客戶端,其特徵在於頻道伺服器保存對頻道發布Web伺服器中的頻道信息文件進行更新;頻道發布Web伺服器接收頻道伺服器發送的頻道,保存頻道信息文件;客戶端根據頻道信息文件選取頻道,頻道伺服器向客戶端發送相應頻道活動節點列表,客戶端根據活動節點列表獲取新的夥伴節點信息,實現流媒體數據分發,對流媒體數據進行播放,本發明效率高。
文檔編號H04N7/173GK101047696SQ200610034740
公開日2007年10月3日 申請日期2006年3月27日 優先權日2006年3月27日
發明者朱建平, 王素雲 申請人:互聯天下科技發展(深圳)有限公司