鄭藝芳
(福建師范大學(xué)人民武裝學(xué)院,福建福州 350007)
基于HTTP的P2P流媒體直播系統(tǒng)構(gòu)建*
鄭藝芳
(福建師范大學(xué)人民武裝學(xué)院,福建福州 350007)
P2P技術(shù)在音視頻直播中的應(yīng)用,可以極大降低中心服務(wù)器的壓力,為用戶提供良好的服務(wù)體驗(yàn),是新一代內(nèi)容分發(fā)的核心技術(shù).基于HTTP流媒體協(xié)議構(gòu)建的P2P直播系統(tǒng),可以使P2P終端具有更好的網(wǎng)絡(luò)適應(yīng)性;其中HTTP流媒體協(xié)議的切片技術(shù),有利于P2P網(wǎng)絡(luò)中資源的定位和查詢,比起傳統(tǒng)的P2P協(xié)議,更加適合專用網(wǎng)絡(luò)中的音視頻直播服務(wù)構(gòu)建.
HTTP流直播;P2P;流媒體
HTTP是互聯(lián)網(wǎng)上流量排名第一的協(xié)議,其次為各種P2P協(xié)議,如BT等.HTTP承載了大部分的文本、音視頻數(shù)據(jù)傳輸,是各種主流應(yīng)用的首選協(xié)議.但長(zhǎng)期以來(lái),HTTP沒有用來(lái)作為流媒體數(shù)據(jù)傳輸?shù)闹髁鲄f(xié)議,大部分直播服務(wù)采用了RTSP、RTMP等協(xié)議進(jìn)行傳輸控制.在音視頻直播領(lǐng)域,基于P2P的流媒體技術(shù)十分普及,如 PPStream、PPLive、ESM等,它們大部分采用了復(fù)雜的P2P網(wǎng)絡(luò)模型和混合模型,資源定位算法復(fù)雜,各計(jì)算節(jié)點(diǎn)的系統(tǒng)資源占用較大.
由于HTTP流媒體協(xié)議基于標(biāo)準(zhǔn)HTTP協(xié)議,并在此基礎(chǔ)上定義了適合媒體數(shù)據(jù)實(shí)時(shí)傳播的機(jī)制,有效保證了音視頻數(shù)據(jù)的傳輸實(shí)時(shí)性.HTTP對(duì)網(wǎng)絡(luò)有較強(qiáng)適用性,即大部分的防火墻都默認(rèn)允許HTTP協(xié)議穿透;以此為基礎(chǔ)來(lái)構(gòu)建P2P服務(wù),可以適應(yīng)現(xiàn)有網(wǎng)絡(luò),為用戶提供較好體驗(yàn),同時(shí)極大減輕服務(wù)器的壓力[1].
基于HTTP流媒體協(xié)議構(gòu)建傳統(tǒng)的視頻直播系統(tǒng),有三個(gè)主要部分:直播數(shù)據(jù)編碼、數(shù)據(jù)分發(fā)系統(tǒng)、客戶端.一般架構(gòu)如圖1所示.
圖1 HTTP流媒體服務(wù)體系
在典型的配置中,前段編碼器將音視頻直播流數(shù)據(jù)按照指定壓縮標(biāo)準(zhǔn)進(jìn)行編碼,一般編碼規(guī)范會(huì)遵循MPEG-2或H.264標(biāo)準(zhǔn),然后通過(guò)文件切割器不斷生成小的TS流文件,同時(shí)生成索引文件.所創(chuàng)建的索引文件和TS流文件群會(huì)分發(fā)到Web架構(gòu)服務(wù)器中,由Web服務(wù)器將索引文件和TS流文件進(jìn)行發(fā)布.這樣客戶端就可以通過(guò)標(biāo)準(zhǔn)HTTP協(xié)議讀取索引及流文件,解碼后播出.
直播數(shù)據(jù)編碼部分的數(shù)據(jù)來(lái)源是衛(wèi)星接收機(jī),衛(wèi)星接收機(jī)接收衛(wèi)星信號(hào),將其以MPEG-2的TS流輸入到編碼器.一般情況下,每個(gè)頻道都配置一臺(tái)專用編碼器,所以前端編碼器的多少和直播系統(tǒng)支持的頻道數(shù)有關(guān).編碼器調(diào)整自己的配置,采用H.264的視頻編碼格式和AAC的音頻格式,對(duì)輸入TS流進(jìn)行壓縮編碼,并對(duì)音視頻流以MPEG2 TS的文件格式進(jìn)行封裝.直播編碼器產(chǎn)生的TS流直接輸入到流文件切割器中,流切割器將其按照直播的實(shí)時(shí)性要求,切割為一定粒度的小TS文件,一般該粒度設(shè)置為10秒;同時(shí),流切割器還產(chǎn)生一個(gè)包含生成TS文件列表的索引文件[2].
這樣,直播數(shù)據(jù)編碼部分最終生成了索引和TS流文件,這些文件將被存儲(chǔ)到數(shù)據(jù)轉(zhuǎn)發(fā)系統(tǒng),進(jìn)行分發(fā).
數(shù)據(jù)分發(fā)系統(tǒng)一般是由Web服務(wù)器或者是web緩存系統(tǒng)組成,用來(lái)作為HTTP服務(wù)器發(fā)布媒體索引文件和一系列的.ts文件,以供HTTP客戶端下載.一般來(lái)說(shuō),索引文件采用M3U8文件格式規(guī)范,TS文件為MPEG-2中的文件封裝格式.
表1 文件格式和MIME類型對(duì)應(yīng)
M3U8文件示例如表2所示.其中將M3U8中的每一行列出來(lái),并在右方注釋.
表2 M3U8文件示例及注釋
在完成直播功能時(shí),M3U8文件需要及時(shí)更新,這個(gè)取決于及時(shí)調(diào)整其存活時(shí)間屬性,這樣文件會(huì)被頻繁地覆蓋,客戶端也會(huì)在存活時(shí)間到期后重新請(qǐng)求更新的M3U8文件.
客戶端首先獲取M3U8索引文件,并解析M3U8識(shí)別其中的每一個(gè)TS文件,以及解密密鑰等必要信息.客戶端按順序下載每個(gè)可用的媒體文件.
客戶端也采用HTTP協(xié)議請(qǐng)求數(shù)據(jù),HTTP協(xié)議并不需要設(shè)計(jì)如何穿透防火墻,一般防火墻都允許這一類協(xié)議的數(shù)據(jù)通過(guò)[3].
第二部分描述了基于服務(wù)器的直播系統(tǒng)架構(gòu).這種架構(gòu)充分利用了HTTP部署方便的特點(diǎn),可以較為快速地完成視頻直播系統(tǒng)的構(gòu)建.然而,基于HTTP的服務(wù)器模型和一般的B/S架構(gòu)有同樣的缺陷,即隨著用戶規(guī)模的擴(kuò)大,服務(wù)器需要不斷擴(kuò)容以支持用戶并發(fā)請(qǐng)求;當(dāng)用戶數(shù)量極大時(shí),服務(wù)器節(jié)點(diǎn)的投資建設(shè)將占用大量的成本.
基于P2P技術(shù)可以解決這一問(wèn)題,在P2P系統(tǒng)中,客戶端同時(shí)作為服務(wù)器提供數(shù)據(jù)分發(fā)服務(wù).在服務(wù)器端,除了傳統(tǒng)的數(shù)據(jù)服務(wù)器外,還需要配置少量服務(wù)器用于收集資源區(qū)域分布信息,為客戶端請(qǐng)求數(shù)據(jù)提供索引服務(wù).
基于HTTP流協(xié)議的P2P模型,具有如下優(yōu)勢(shì):
(1)HTTP協(xié)議可以無(wú)需考慮網(wǎng)絡(luò)穿透問(wèn)題,防火墻一般都允許HTTP協(xié)議通過(guò);
(2)HTTP流媒體協(xié)議對(duì)文件的切片方式,導(dǎo)致客戶端需要下載多個(gè)小ts文件,存儲(chǔ)在內(nèi)存中后連貫起來(lái)播放,在直播系統(tǒng)設(shè)計(jì)中,一般會(huì)下載3段ts文件.這樣,終端的節(jié)點(diǎn)實(shí)際上都保存這最近3段的ts文件.這種設(shè)計(jì)模式方便終端節(jié)點(diǎn)通過(guò)標(biāo)準(zhǔn)的web方式提供數(shù)據(jù)服務(wù);
(3)終端節(jié)點(diǎn)和資源節(jié)點(diǎn)管理服務(wù)器之間基于標(biāo)準(zhǔn)HTTP協(xié)議進(jìn)行數(shù)據(jù)交互,協(xié)議設(shè)計(jì)方便,軟件編寫簡(jiǎn)單.
基于HTTP的P2P網(wǎng)絡(luò)模型如圖2所示.
圖2 基于HTTP的P2P網(wǎng)絡(luò)模型
相對(duì)于傳統(tǒng)的HTTP流服務(wù),該網(wǎng)絡(luò)模型在服務(wù)架構(gòu)上,增加了資源節(jié)點(diǎn)管理服務(wù)器,采用P2P中的混合網(wǎng)絡(luò)模型進(jìn)行資源的定位和協(xié)調(diào).每個(gè)終端節(jié)點(diǎn)都接受節(jié)點(diǎn)管理服務(wù)器的命令,告知其當(dāng)前狀態(tài)、網(wǎng)絡(luò)狀況等信息.
資源節(jié)點(diǎn)管理服務(wù)器不僅直接和終端節(jié)點(diǎn)交換信息,同時(shí)和web服務(wù)器交換信息.Web服務(wù)器接收終端節(jié)點(diǎn)的首次請(qǐng)求,并根據(jù)節(jié)點(diǎn)管理服務(wù)器中保存的當(dāng)前節(jié)點(diǎn)的信息來(lái)決定終端最終從哪里得到數(shù)據(jù).Web服務(wù)器將連接的客戶端信息同步給節(jié)點(diǎn)管理服務(wù)器,這樣,節(jié)點(diǎn)服務(wù)器就根據(jù)區(qū)域節(jié)點(diǎn)資源分布算法,生成相應(yīng)的區(qū)域節(jié)點(diǎn)分布信息.
終端節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)時(shí),如果服務(wù)器認(rèn)為該區(qū)域的節(jié)點(diǎn)足以支撐其數(shù)據(jù)請(qǐng)求,則其首先從web服務(wù)器得到對(duì)應(yīng)區(qū)域的節(jié)點(diǎn)分布信息,然后從各個(gè)節(jié)點(diǎn)獲取對(duì)應(yīng)的直播數(shù)據(jù)[4].這時(shí),各個(gè)終端節(jié)點(diǎn)之間通過(guò)HTTP協(xié)議完成數(shù)據(jù)交互,所有節(jié)點(diǎn)在網(wǎng)絡(luò)上都是平等的.
P2P節(jié)點(diǎn)開始總是從web服務(wù)器請(qǐng)求數(shù)據(jù),web服務(wù)器是P2P節(jié)點(diǎn)唯一知道的初始外界聯(lián)系對(duì)象.設(shè)P2P節(jié)點(diǎn)為A,中心Web服務(wù)集群為H,資源節(jié)點(diǎn)管理服務(wù)器為R,P2P節(jié)點(diǎn)的數(shù)據(jù)請(qǐng)求流程如下:
(1)節(jié)點(diǎn)A連接中心Web服務(wù)器H,首得到當(dāng)前的直播列表文件,A節(jié)點(diǎn)解析該列表文件,但暫時(shí)不請(qǐng)求其中指定的URL獲取數(shù)據(jù).
(2)H得到A的連接請(qǐng)求后,通知資源節(jié)點(diǎn)管理服務(wù)器R,同時(shí)在回復(fù)信息中告知R的訪問(wèn)方法.
(3)A向R發(fā)起請(qǐng)求,要求得到索引文件中指定的流媒體ts文件的數(shù)據(jù)源分布狀況.
(4)R查找數(shù)據(jù)庫(kù),得到A節(jié)點(diǎn)所在區(qū)域中的信息,回復(fù)數(shù)據(jù)資源的區(qū)域分布信息給A;
(5)A節(jié)點(diǎn)將根據(jù)獲取的區(qū)域分布信息向其中的節(jié)點(diǎn)發(fā)起請(qǐng)求,獲取對(duì)應(yīng)數(shù)據(jù).
由以上數(shù)據(jù)獲取流程可知,資源節(jié)點(diǎn)管理服務(wù)器R查找資源節(jié)點(diǎn)的算法,是影響整體性能的關(guān)鍵所在.在本課題中,采用了類似DHT的算法來(lái)完成節(jié)點(diǎn)定位和查詢.節(jié)點(diǎn)A使用哈希函數(shù)HASH(RID,RIP)標(biāo)示自己請(qǐng)求的資源名稱(RID)以及自身IP地址(RIP),經(jīng)過(guò)哈希運(yùn)算后得到唯一的標(biāo)識(shí),節(jié)點(diǎn)管理服務(wù)器R據(jù)此查找其對(duì)應(yīng)的節(jié)點(diǎn)資源信息.
節(jié)點(diǎn)管理服務(wù)器采用web服務(wù)模式構(gòu)建,基于soap協(xié)議為web服務(wù)器,各個(gè)終端節(jié)點(diǎn)提供訪問(wèn)方法.
建設(shè)專用網(wǎng)絡(luò)的多媒體廣告信息系統(tǒng)需要增加直播功能,采用了基于HTTP的P2P技術(shù).該系統(tǒng)提供了30個(gè)頻道的采集和直播,并以每個(gè)1.2~1.6Mbps的碼流完成編碼參數(shù)配置.設(shè)計(jì)采用HP380G5服務(wù)器作為Web分發(fā)系統(tǒng),通過(guò)Linux系統(tǒng)集群實(shí)現(xiàn).每個(gè)服務(wù)器配備千兆網(wǎng)卡,服務(wù)器設(shè)計(jì)負(fù)載能力為300用戶.預(yù)計(jì)用戶數(shù)為10~30萬(wàn)之間.
圖3 廣告信息直播系統(tǒng)模塊圖
系統(tǒng)整體包括內(nèi)容制作系統(tǒng)、直播采集轉(zhuǎn)發(fā)系統(tǒng)、廣告管理系統(tǒng)、廣告服務(wù)系統(tǒng)、信息發(fā)布系統(tǒng)、各種形式的多媒體信息終端,下面分別說(shuō)明其作用.
(1)內(nèi)容制作系統(tǒng)可將各種格式的視頻進(jìn)行轉(zhuǎn)碼和檢測(cè),使其他格式的視頻資源轉(zhuǎn)化為符合高清廣告機(jī)要求的視頻,并對(duì)視頻進(jìn)行壓縮,形成h264編碼視頻;
(2)直播采集轉(zhuǎn)發(fā)系統(tǒng)將衛(wèi)星電視信號(hào)轉(zhuǎn)換為數(shù)據(jù)流,并將直播轉(zhuǎn)發(fā)到Web數(shù)據(jù)分發(fā)系統(tǒng)中;
(3)多媒體廣告管理系統(tǒng)包括廣告運(yùn)營(yíng)商管理、廣告資源管理、廣告資源分發(fā)、廣告發(fā)布、廣告機(jī)分組管理、廣告機(jī)監(jiān)控、廣告展示統(tǒng)計(jì)、第三方信息接入等模塊.以組為單位的管理模式可以實(shí)現(xiàn)個(gè)性化的精確廣告投放展示.
(4)多媒體廣告服務(wù)系統(tǒng)包括廣告機(jī)心跳服務(wù)、廣告資源下載服務(wù)、日志上報(bào)采集、直播服務(wù)、第三方數(shù)據(jù)轉(zhuǎn)發(fā)等主要模塊.廣告服務(wù)系統(tǒng)采用分布式部署.
(5)圖文信息發(fā)布管理系統(tǒng)進(jìn)行資訊管理和資訊瀏覽查詢展示,直接響應(yīng)終端的展示查詢請(qǐng)求.
在實(shí)際的環(huán)境中測(cè)試,每天同時(shí)上線用戶數(shù)最高峰值為5000左右,此時(shí),服務(wù)器投入的資源為2臺(tái)集群Web數(shù)據(jù)分發(fā)服務(wù)器,其余的數(shù)據(jù)都通過(guò)P2P網(wǎng)絡(luò)進(jìn)行分發(fā).而我們?cè)趯?shí)驗(yàn)室模擬5000用戶進(jìn)行傳統(tǒng)中心服務(wù)模式測(cè)試,支撐5000用戶需要至少18臺(tái)服務(wù)器集群,且此時(shí)服務(wù)器CPU占用率已高達(dá)85%.表3是測(cè)試數(shù)據(jù)的對(duì)比.
表3 P2P分發(fā)模式和中心服務(wù)模式對(duì)比
數(shù)據(jù)顯示,P2P模式服務(wù)器壓力明顯較小,但客戶端壓力也明顯較大.由于此應(yīng)用場(chǎng)合是運(yùn)行在專用網(wǎng)絡(luò)中的廣告信息終端設(shè)備,不運(yùn)行其它任務(wù),所以客戶端略高的資源占用不會(huì)引起業(yè)務(wù)實(shí)現(xiàn)問(wèn)題.對(duì)比兩種方案,在5000臺(tái)的規(guī)模下,P2P模式已經(jīng)占據(jù)成本優(yōu)勢(shì).隨著用戶數(shù)量的增加,其優(yōu)勢(shì)更加明顯.
基于HTTP流媒體協(xié)議構(gòu)建的P2P直播系統(tǒng),可以滿足中小型流媒體直播服務(wù)的需求,其特點(diǎn)使得部署應(yīng)用十分簡(jiǎn)單,而且可以提供實(shí)時(shí)性較好的直播服務(wù).采用該技術(shù),可以有效解決視頻直播中的服務(wù)器壓力過(guò)大,高峰時(shí)段服務(wù)質(zhì)量下降等問(wèn)題,極大提高直播系統(tǒng)的穩(wěn)定性并降低總體成本.
[1]王志海,童新海,沈寒輝.OpenSSL與網(wǎng)絡(luò)信息安全——基礎(chǔ)、結(jié)構(gòu)和指令[M].北京:清華大學(xué)出版社,2007.
[2]管磊.P2P技術(shù)揭秘:P2P網(wǎng)絡(luò)技術(shù)原理與典型系統(tǒng)開發(fā)[M].北京:清華大學(xué)出版社,2011.
[3](美)史蒂文斯.TCP.IP詳解(卷3):TCP事務(wù)協(xié)議.HTTP和UNIX域協(xié)議[M].北京:人民郵電出版社,2010.
[4]黃孝建,陶蒙華.IPTV關(guān)鍵技術(shù)詳解[M].北京:北京郵電大學(xué)出版社,2009.
TN919.85
A
1008-4681(2012)02-0043-04
2011-11-18
鄭藝芳(1978-),女,福建福州人,福建師范大學(xué)人民武裝學(xué)院講師,碩士.研究方向:計(jì)算機(jī)應(yīng)用技術(shù)、網(wǎng)絡(luò)服務(wù)、網(wǎng)格計(jì)算等.
(責(zé)任編校:晴川)