天天看點

基于HTTP的點對點廣播

本文是我一年前做一個p2p解決方案的時候寫的,現在翻出來有些基本概念已經忘記了,才知道以前竟然還做過這個,驚訝中啊:

簡介:

此方案由開放源代碼項目P2P-Radio修改而成,(P2P-Radio是一個點對點音頻和視訊廣播系統,功能有freeloader檢測,流式傳輸,SHOUTcast 支援,一個易于使用的GUI,以及一個單獨的監視應用程式來顯示目前P2P網絡的結構。-----------摘自P2P-Radio項目文檔)下圖展示了一般網絡結構:

該架構安排有一個監控子產品,每個加入此P2P網絡的節點都會在此子產品有所表示進而全面展示了全網結構

工作原理:

1. 虛拟資源伺服器啟動,随即從真實資源所在地下載下傳流資料。

2. 虛拟資源伺服器啟動TCP/UDP守護收發線程,等待客戶連接配接。

3. 如果使能監控,則虛拟資源伺服器第一個加入到監控服務的樹形結構中。

4. 客戶連接配接虛拟資源伺服器,同時客戶啟動一個接收線程,實時接收媒體流并載入本地緩存,同時客戶要啟動同上虛拟資源伺服器一樣的TCP/UDP收發線程,這樣它便可以作為資源提供者服務其它節點,如果使能監控,則每個連接配接節點都會作為被連接配接節點的子節點加入監控樹形結構。

5. 如果使能監控,資料的每次傳輸以及發生的每個事件(如加入,退出,重定向等)都會在樹形結構有所展現,并列印日志。

6. 預設地,代碼中會啟動本機預設播放器播放流媒體,但是也可以通過Web方式用浏覽器插件播放,因為流媒體本身就是在http上傳輸的,這将非常友善。

優點:

音視訊流在http上傳輸,點對點傳輸。對于播放實時流媒體可以節省大量帶寬。網絡拓撲監控與資料傳輸分離,有利于擴充。

缺點:

必須有資源伺服器,是以存在資源伺服器處的帶寬瓶頸

測試

經過測試在區域網路中性能很好,具體方案如下:

一台主機充當虛拟資源伺服器,将資源從真正的伺服器下載下傳到本地緩存,連續下載下傳,基于時間戳實時更新流資料,區域網路内其他主機中的一台連接配接此虛拟資源主機,另外的主機可以随意彼此連接配接。

1. 節點1:ip-10.2.1.56,port-2000, 虛拟資源伺服器 à 遠端主機的音頻

2. 節點2:ip-10.2.1.65,port-2000, 一般節點 à 節點1

3. 節點3:ip-10.2.1.62,port-2000, 一般節點 à 節點2

4. 節點4:ip-10.2.1.56,port-2490, 一般節點 à 節點3

5. 節點5:ip-10.2.1.62,port-2490, 一般節點 à 節點4

6. 節點6:ip-10.2.1.56,port-12533,一般節點 à 節點2

7. 節點7:ip-10.2.1.65,port-2490, 一般節點 à 節點3

8. 在節點2用windows media player打開http://10.2.1.62:2490/stream.mp3

9. 節點7自動打開windows media player播放http://10.2.1.62:2001/stream.mp3

以上測試通過,播放流暢,不足之處在于音樂有些走調,不知原因,解決中,另外就是偶爾有爆破音,不能确定原因,解決中。