摘要:隨著Internet的普及及信息技術的發展,傳統客戶機/服務器模式的IPTV,由于服務器I/O瓶頸的限制,已無法滿足越來越多用戶同時收視的需要。而在文件共享系統和數據庫應用中使用PeerCast技術能夠充分利用閑置的網絡資源,實現有效的負載均衡,更適合應用在大規模的數字直播系統中。
關鍵詞:PeerCast;校園網;直播系統
中圖分類號:TP391.3 文獻標識碼:A文章編號:1009-3044(2008)32-1525-03
Digital Broadcast System of PeerCast Based on Campus Network
LIU Qi-qun, ZHOU Zhi-qiang
(Library and Information Center of Henan Agricultural Vocational College, Zhengzhou 451450, China)
Abstract: With the popularity of Internet and the development of information technology,Because of the server I/O bottlenecks restrictions, traditional c/s model of IPTVhave been unable to meet the needs of users at the same time ratings. The file-sharing systems and database applications used in PeerCast technology can make full use of idle network resources, to achieve effective load balancing, more suitable for application in large-scale digital broadcast system.
Key words: peercast; intranet living; broadcast system
近年來,流媒體的需求隨著internet的普及也逐漸增大,但是傳統的流媒體主要是采用客戶端一服務器模式。服務器以單播的方式和每個客戶建立連接,由于流媒體服務具有高帶寬、持續時間長等特點,隨著客戶數目的快速增加,服務器的資源如帶寬很快被消耗完,成為系統瓶頸所在。針對這些問題,國內外目前的研究和實踐主要采用組播技術、代理緩存技術和P2P技術三種解決方案。ip組播技術由于自身的種種限制,如很難實現可靠性組播和擁塞控制及其協議的復雜性等,ip組播技術并沒有得到廣泛的應用,而代理緩存主要是通過代理服務器的復制,將流媒體數據分散到各地,用戶進行就近訪問。但是其昂貴的成本,始終是阻礙其大規模部署的主要因素。在文件共享系統和數據庫應用中使用得十分成熟的對等網絡(peer to peer,簡稱P2P)技術能夠充分利用閑置的網絡資源,實現有效的負載均衡,十分適合于應用在大規模的數字直播系統中。
1 PeerCast原理及特點
PeerCast是一個把音頻/視頻服務器和客戶端集合在一起的軟件。你可以通過PeerCast來收聽眾多的網絡電臺,也可以自己廣播。PeerCast的特性是你不需要一個有龐大帶寬的服務器來為眾多聽眾提供廣播服務,你所需要的只是PeerCast和一個外部的廣播工具。
PeerCast和其他P2P文件共享軟件的工作方式大部分相同,除了一點,用戶下載的不是文件而是流。然后這些流實時地與其他用戶進行交換。對于任何連接到網絡的機器來說,沒有任何數據會被存儲到本地機上,其網絡架構圖如圖1所示。

圖1 PeerCast網絡架構圖
PeerCast網絡架構圖共分三層:
第一層是YP,YP(Yello Page)從廣播者中收集頻道信息,是整個網絡的根。
第二層是廣播者,廣播者向YP發送頻道信息,這樣YP就能有一個完整的廣播者的列表。
第三層是轉播者,轉播者收聽頻道,每個廣播者維護一份轉播者的列表。
PeerCast和其他P2P軟件相比,有以下特點:
1) 基于文件傳輸的流媒體輸。PeerCast是在Gnutella協議的基礎上發展而來的,Gnutella是開源的P2P文件共享系統,可以傳輸任何類型的文件。PeerCast 傳輸的文件是視/音頻流,仍然使用HTTP方式來傳輸視/音頻文件。
2) PeerCast每個節點的數據只能來源于單一節點。單一節點的模型簡單,緩沖機制容易處理,傳輸過程中不會產生太多的控制信息。在傳輸音頻時沒有任何問題,但是在傳輸視頻數據時,由于視頻數據量大,單一節點需要較長時間的緩沖。單點傳輸還存在的一個問題是如果父節點退出網絡,會對子節點造成很大的影響。每個節點向其他結點轉播頻道。這無法發揮出一般P2P軟件使用的用戶越多傳輸速度越快的優勢,此時節點越多只能使用戶有更多的空間選擇一個最佳的節點,客戶端確定了一個父節點后傳輸速率受限于父節點的帶寬。PeerCast只能從一個結點傳輸數據,父節點退出網絡時將無法自動連接到另一個傳輸節點,如果網絡中節點動態加入和離開得比較頻繁會給使用者帶來麻煩。
PeerCast盡管有一些問題和不完善的方面,但提供了一套完整的P2P流媒體解決方案,有很多可以借鑒的地方,比如頻道發布和Yello Page管理等。
2 數字直播系統的構建
在WINDOWS環境下基于PeerCast的網絡直播,首先需要在裝有視頻采集卡的服務器上視頻安裝視頻編碼器,這里采用Windows Media Encoder 9.0;其次需要安裝PeerCast,安裝程序可以到http://www.peercast.org下載;然后安裝配置web服務器,從而搭建對校園網發布直播信息的站點。下面簡要描述直播服務器的構架過程 。
2.1 安裝Windows Media Encoder
Windows Media Encode 9是Windows Media 9 Series組成部分之一,它的主要作用是進行編碼,可用于將實況或者預先錄制的視頻和音頻文件轉成Windows Media格式文件和流。通過采集卡和Encoder的完美配合,可以輕而易舉的把實況的視頻和音頻源信號實時的壓縮成WMV格式的文件或者流。
安裝完畢Windows Media Encoder9.0并啟動它,軟件自動彈出設置向導。我們選擇“廣播實況事件”,如圖2所示,點擊確定,接下來的設備選項中選擇相應的視頻、音頻設備,下一步,選上“自編碼器拉傳遞”,下一步,廣播連接選項中http端口直接選用默認8080端口(其他未用端口也行),下一步,編碼選項選擇548Kbps(越高越清晰,有多種選項),如圖3所示,點擊完成。

圖2 Windows Media Encoder設置一

圖3 Windows Media Encoder設置二
2.2 PeerCast黃頁站點的構建
黃頁要求web服務器支持php,這里我們選擇免費的apache web服務器,Apache的特點是簡單、速度快、性能穩定。它可以運行在幾乎所有廣泛使用的計算機平臺上。因為它是自由軟件,所以不斷有人來為它開發新的功能、新的特性、修改原來的缺陷。
1) 配置apache
完成安裝apache,打開配置文件http.conf。首先,查找關鍵字“DocumentRoot”(網站根目錄),然后將雙引號\" \"內的地址改成黃頁網站根目錄,地址用絕對路徑,“\\”在Apache里要改成“/”。 然后,找到DirectoryIndex(目錄索引,也就是在僅指定目錄的情況下,默認顯示的文件名),可以添加很多,系統會根據從左至右的順序來優先顯示,以單個半角空格隔開,比如網站的首頁是index.htm,就在光標那里加上“index.htm ”。文件名是任意的,比如我們這里用“yp.php”。再找到ServerName,將其后的字符串改成實際的域名或ip地址加上端口號。重啟apache,使配置生效。
2) 安裝php
將下載的php安裝文件解壓縮,找到“php.ini-dist”文件,將其重命名為“php.ini”,打開編輯。
如果要使php能夠直接調用其它模塊,選擇要加載的模塊,去掉前面的 “;”,就表示要加載此模塊了,加載的越多,占用的資源也就多一點,比如要用mysql,就要把“;extension= php_mysql.dll”前的“;”去掉。所有的模塊文件都放在php解壓縮目錄的“ext”之下,編輯好后保存,關閉。
如果上一步加載了其它模塊,就要指明模塊的位置,否則重啟Apache的時候會提示“找不到指定模塊”的錯誤。有一種最簡單的方法,就是直接將php安裝路徑、里面的ext路徑指定到windows系統路徑中——在“我的電腦”上右鍵,“屬性”,選擇“高級”標簽,點選“環境變量”,在“系統變量”下找到“Path”變量,選擇,雙擊或點擊“編輯”,將目錄php和php\\ext的絕對路徑分別加到原有值的后面。系統路徑添加好后要重啟電腦才能生效。
3) php以module方式與Apache相結合
打開Apache的配置文件,首先找到LoadModule(加載模塊)語句,添加如下兩行(假定D:/php是php的安裝目錄),第一行“LoadModule php5_module D:/php/php5apache2.dll”是指以module方式加載php,第二行“PHPIniDir \"D:/php\"”是指明php的配置文件php.ini的位置。然后,找到AddType語句,添加如下兩行: “AddType application/x-httpd-php .php”、“AddType application/x-httpd-php .html”兩行,也可以加入更多,實質就是添加可以執行php的文件類型,比如你再加上一行“AddType application/x-httpd-php .htm”,則.htm文件也可以執行php程序了,你甚至還可以添加上一行“AddType application/x-httpd-php .txt”,讓普通的文本文件格式也能運行php程序。現在,重啟Apache, 輸入網站的域名或ip地址就可以訪問黃頁了。

圖4 直播服務器構建
2.3 配置PeerCast
(1)安裝完成并啟動PeerCast,右鍵單擊任務欄內PeerCast的小喇叭圖標,打開“Advanced”?“settings”,“yp address”填入當前配置的服務器的ip,“mode”選Root,然后,save settings。(2)選擇“Broadcast”,URL中填入http://localhost:8080,TYPE選擇WMV,其他隨意填,點擊Create relay。
現在,在Windows Media Encode中選擇“開始編碼”,整個直播服務器就開始運行了。
在局域網其他計算機上安裝PeerCast,只須配置“yp address”,填入直播服務器的ip地址即可。在瀏覽器地址欄內輸入直播服務器地址,也即YP地址,就可以進入黃頁,收看直播,PeerCast會調用media player播放視頻流。
3 實際應用
我們以轉播一場晚會為例來構架直播服務器系統,其結構圖如圖4所示。 這里我們用的模擬切換臺(如果是數字切換臺可直接將視頻采集卡連接到切換臺的輸出上),視頻信號通過切換臺,一路進入現場預監,一路到調制器和調音臺出來的音頻信號混合成射頻信號,調制器出來的射頻信號再進入放大器,出來的信號,一路接有線電視網,大家通過有線電視觀看節目;另一路進入直播服務器,出來的數字信號進入校園數字網絡,校園網用戶可以通過安裝PeerCast,通過瀏覽器訪問直播服務器YP來觀看現場直播的晚會。
4 結束語
目前,基于校園網絡的PeerCast數字直播系統已經運行了一年多,直播了多場文藝活動,且使用效果良好。對于
在直播過程中存在的一些問題,基本解決,力求更加完善,對大范圍推廣應用已經打下了堅實的基礎。
參考文獻:
[1] 藍天果.基于P2P的流媒體分發系統的設計與實現[D].北京郵電大學,2006.
[2] 謝勇均.P2P視頻直播傳輸系統的研究與實現[D].中國科學院研究生院(計算技術研究所,2006.
[3] 羅建光.基于P2P網絡的大規模視頻直播系統[J].軟件學報,2007,18(2):391-399.
[4] 陳戈.P2P與組播結合實現高質量IP視頻直播承載[J].通信業與經濟市場,2007,4,56-59.
[5] 駱力明.視頻直播系統關鍵性技術研究[J].微計算機信息,2007,05X,112-114.
[6] 陳錦平.網絡直播系統[J].電腦編程技巧與維護,2007,3,58-59.