王勤,呂仁俊,趙新冬,戴威
摘要:為了解決視頻播放中因帶寬不足而帶來的播放質(zhì)量下降問題,本文設(shè)計(jì)并實(shí)現(xiàn)了一種具有模式感知功能的視頻播放和發(fā)布系統(tǒng)。服務(wù)器通過對(duì)網(wǎng)絡(luò)性能的實(shí)時(shí)監(jiān)控能夠自動(dòng)提供B/S和P2P兩種視頻流的傳輸模式,播放端通過自動(dòng)感知,實(shí)時(shí)切換不同的播放模式。系統(tǒng)采用P2P技術(shù)進(jìn)行分布式視頻發(fā)布,降低對(duì)服務(wù)器的并發(fā)能力和網(wǎng)絡(luò)帶寬要求,從而提高視頻播放質(zhì)量和傳輸?shù)恼w效率。所實(shí)現(xiàn)的系統(tǒng)在江蘇電力網(wǎng)絡(luò)大學(xué)中得到實(shí)際驗(yàn)證,系統(tǒng)具有良好的適應(yīng)性,有效提高了用戶的播放體驗(yàn),解決了傳統(tǒng)視頻播放中單一模式下的網(wǎng)絡(luò)負(fù)載問題。
關(guān)鍵詞:p2p;模式感知;視頻播放
中圖分類號(hào):G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2014)02-0161-05
一、引言
流媒體播放技術(shù)是當(dāng)前互聯(lián)網(wǎng)視頻播放的主流技術(shù),為了改變?cè)蠦/S模式下對(duì)媒體服務(wù)器并發(fā)能力和網(wǎng)絡(luò)負(fù)載的巨大需求,[1]P2P技術(shù)采用分布式共享原理,將播放內(nèi)容在用戶播放端之間進(jìn)行分發(fā)和傳播,形成了一種新的傳輸模式,克服了原有視頻數(shù)據(jù)均通過客戶端和服務(wù)器之間直接傳輸模式的不足,現(xiàn)有市場(chǎng)上的PPLive,Torrent軟件等均依據(jù)此原理進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)。另一個(gè)方面,由于P2P技術(shù)的應(yīng)用,在客戶端網(wǎng)絡(luò)也會(huì)產(chǎn)生較大的網(wǎng)絡(luò)流量,對(duì)終端網(wǎng)絡(luò)的流量管理也帶了一定的困難。因此,如何根據(jù)網(wǎng)絡(luò)當(dāng)前負(fù)載情況和服務(wù)器性能,設(shè)計(jì)一種兼顧兩種傳播模式的流媒體播放系統(tǒng),將具有較高的實(shí)用價(jià)值。網(wǎng)絡(luò)教育是流媒體播放技術(shù)的典型應(yīng)用領(lǐng)域,如現(xiàn)有MOOC學(xué)習(xí)模式為源自斯坦福大學(xué)、哈佛和MIT大力推動(dòng)的基于網(wǎng)絡(luò)的一種學(xué)習(xí)模式,成為2012至2013年最受關(guān)注的創(chuàng)新型教學(xué)模式,其開放系統(tǒng)在全世界擁有幾十萬至百萬級(jí)的用戶,視頻文檔是其主要資源之一,主要通過流媒體方式進(jìn)行學(xué)習(xí)。江蘇電力網(wǎng)絡(luò)大學(xué)為滿足江蘇省所有電力職工的在線學(xué)習(xí)而設(shè)計(jì),同時(shí)對(duì)全國電力系統(tǒng)開放,是電力系統(tǒng)在線學(xué)習(xí)和考試的重要平臺(tái),具有數(shù)十萬個(gè)終端用戶。本文的設(shè)計(jì)目標(biāo)為針對(duì)現(xiàn)有網(wǎng)大在線學(xué)習(xí)系統(tǒng)在并發(fā)訪問支持方面的不足,在不改變?cè)邢到y(tǒng)總體架構(gòu)和用戶使用方式的前提下,利用P2P技術(shù)為現(xiàn)有系統(tǒng)提供一種新型的學(xué)習(xí)點(diǎn)播服務(wù)模式,并且保證能夠與現(xiàn)有流媒體點(diǎn)播方式相兼容。針對(duì)以上需求,本文對(duì)MediaPlayer播放器的工作原理進(jìn)行了詳細(xì)分析,提出了一套具有播放模式感知的視頻播放系統(tǒng)設(shè)計(jì)方法,將設(shè)計(jì)完成的播放系統(tǒng)在江蘇電力網(wǎng)絡(luò)大學(xué)環(huán)境中進(jìn)行實(shí)施部署和實(shí)際測(cè)試,各項(xiàng)功能和指標(biāo)滿足設(shè)計(jì)需求,解決了兩種播放模式的兼容和播放質(zhì)量保證的問題。
二、系統(tǒng)架構(gòu)設(shè)計(jì)
江蘇電力網(wǎng)絡(luò)大學(xué)網(wǎng)絡(luò)拓?fù)湓O(shè)計(jì)采用“集中—分布式”模式,呈現(xiàn)為“中心—區(qū)域—播放終端”三層結(jié)構(gòu)。中心位于南京,部署所有的課件資源。區(qū)域?yàn)榻K各個(gè)二級(jí)城市,每個(gè)區(qū)域向該區(qū)域內(nèi)所有職工提供視頻學(xué)習(xí)服務(wù)。由于區(qū)域節(jié)點(diǎn)數(shù)目有限、而終端播放用戶并發(fā)數(shù)量較大,[2]因此中心節(jié)點(diǎn)和區(qū)域節(jié)點(diǎn)之間采用FTP協(xié)議進(jìn)行通信,并將用戶需求視頻暫存。區(qū)域節(jié)點(diǎn)和終端用戶之間采用流媒體視頻點(diǎn)播和P2P傳輸兩種模式。具體系統(tǒng)架構(gòu)見圖1所示。
區(qū)域中心流媒體服務(wù)器不僅能夠提供視頻流媒體點(diǎn)播,而且能夠根據(jù)區(qū)域點(diǎn)播用戶負(fù)載情況實(shí)時(shí)啟動(dòng)P2P機(jī)制,因此除了部署點(diǎn)播服務(wù)器之外還需要設(shè)計(jì)目錄服務(wù)器以提供P2P服務(wù),如圖2所示。P2P目錄服務(wù)器的功能如下:負(fù)責(zé)管理各個(gè)在線客戶端以及所有課件視頻分段的分布信息,并接收處理P2P客戶端的各種請(qǐng)求。
用戶播放端軟件能夠自動(dòng)感知目錄服務(wù)器是否在線,從而進(jìn)行兩種工作模式的自動(dòng)轉(zhuǎn)換。如圖2所示,P2P客戶端的功能如下:負(fù)責(zé)處理本客戶端所需視頻的P2P傳輸業(yè)務(wù)、其他客戶端向本客戶端發(fā)出的傳輸視頻請(qǐng)求業(yè)務(wù)、本客戶端與P2P目錄服務(wù)器的信息交互業(yè)務(wù)。
三、關(guān)鍵技術(shù)及相應(yīng)策略
根據(jù)系統(tǒng)的功能需求,系統(tǒng)設(shè)計(jì)中需要解決以下關(guān)鍵技術(shù):
1.如何保證系統(tǒng)兩種工作模式的兼容性。現(xiàn)有在線學(xué)習(xí)系統(tǒng)為流媒體點(diǎn)播服務(wù)模式,若在原有基礎(chǔ)上,基于P2P技術(shù)設(shè)計(jì)一種新的分布式資源發(fā)布模式,需要保證整個(gè)系統(tǒng)在兩種服務(wù)模式方面的相互切換、相互補(bǔ)充。[3]在并發(fā)用戶正常情況下,區(qū)域服務(wù)器保持原有流媒體點(diǎn)播工作模式,在并發(fā)用戶數(shù)量較大時(shí),區(qū)域服務(wù)器則轉(zhuǎn)換到P2P模式下工作,而在P2P異常情況下,系統(tǒng)也能夠自動(dòng)切換到原有流媒體點(diǎn)播服務(wù)模式下工作。采用的策略:在區(qū)域中心服務(wù)器上設(shè)置一監(jiān)視功能模塊,維持兩個(gè)變量,流媒體點(diǎn)播用戶數(shù)量StreamUser和P2P用戶直接從區(qū)域服務(wù)器下載分片的用戶數(shù)量P2PServerUser,若StreamUser大于給定值,則系統(tǒng)轉(zhuǎn)換到P2P模式下工作;若P2PServerUser大于給定值,說明P2P用戶數(shù)變少或者發(fā)生了系統(tǒng)異常,則系統(tǒng)工作模式轉(zhuǎn)換到流媒體點(diǎn)播模式下工作。
2.Media Player播放器如何支持P2P工作模式。在現(xiàn)有系統(tǒng)工作模式下,Media Player作為客戶端與媒體服務(wù)器通過實(shí)時(shí)流媒體傳輸協(xié)議RTP、RTCP和UDP協(xié)議進(jìn)行內(nèi)容傳輸,系統(tǒng)采用“邊播放邊傳輸”方式工作;在P2P模式下,Media Player需要從本地獲取播放內(nèi)容,而內(nèi)容的獲取通過P2P機(jī)制從其他用戶端進(jìn)行下載,采用“邊播放邊下載”方式進(jìn)行工作。采用策略:用戶播放端軟件首先判定區(qū)域服務(wù)器上的P2P目錄服務(wù)是否為工作狀態(tài),若是則用戶播放端軟件自動(dòng)啟動(dòng)P2P模式,從目錄服務(wù)器獲取種子節(jié)點(diǎn)信息,啟動(dòng)多線程進(jìn)行本地網(wǎng)絡(luò)的視頻分段下載。
3.P2P系統(tǒng)內(nèi)容發(fā)布負(fù)載均衡問題。P2P系統(tǒng)中的負(fù)載均衡問題指如何保證在多個(gè)用戶終端并發(fā)播放時(shí),防止出現(xiàn)種子節(jié)點(diǎn)選擇熱點(diǎn)問題。[4]P2P機(jī)制本身的優(yōu)勢(shì)在于同一個(gè)內(nèi)容播放的用戶越多,后來的用戶下載的速度就越快,但如果沒有好的機(jī)制避免其熱點(diǎn)問題,其優(yōu)勢(shì)就難以發(fā)揮出來。采用策略:用戶終端在播放某一視頻時(shí),首先從區(qū)域目錄服務(wù)器上獲取該視頻的分片信息及每個(gè)分片的種子信息,目錄服務(wù)器在選取每個(gè)分片的種子節(jié)點(diǎn)時(shí)采取“同一網(wǎng)段內(nèi)的種子節(jié)點(diǎn)、P2P服務(wù)當(dāng)前線程數(shù)少的種子節(jié)點(diǎn)和心跳網(wǎng)絡(luò)性能最好的種子節(jié)點(diǎn)”三個(gè)優(yōu)先級(jí)進(jìn)行選取,一方面防止某個(gè)種子節(jié)點(diǎn)成為P2P熱點(diǎn),同時(shí)保證能夠選取性能較好的節(jié)點(diǎn)。endprint
4.P2P系統(tǒng)異常處理。在P2P機(jī)制中,視頻播放器數(shù)據(jù)來自于本地多線程從區(qū)域內(nèi)其他播放終端下載的P2P分片,[5]在下載過程中,由于網(wǎng)絡(luò)狀況的不穩(wěn)定,或者由于視頻資源提供端的突發(fā)情況,可能會(huì)導(dǎo)致P2P分片無法成功下載,為了保證系統(tǒng)的健壯性,異常處理機(jī)制必不可少。異常處理策略:主要異常分為種子節(jié)點(diǎn)分片不存在、網(wǎng)絡(luò)異常中斷、種子節(jié)點(diǎn)異常關(guān)閉、種子節(jié)點(diǎn)線程過多拒絕服務(wù)異常,[6]處理策略為在種子節(jié)點(diǎn)列表中聯(lián)系其他節(jié)點(diǎn),若仍然不能成功獲取分片數(shù)據(jù),則從區(qū)域目錄服務(wù)器直接獲取分片資源。
四、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
系統(tǒng)軟件主要由區(qū)域服務(wù)器和播放終端兩個(gè)主要部分構(gòu)成。
1.播放客戶端軟件設(shè)計(jì)與實(shí)現(xiàn)。播放客戶端在播放之前首先需要向區(qū)域P2P目錄服務(wù)器獲得播放文件的種子信息,然后啟動(dòng)多線程進(jìn)行播放終端之間的P2P分片資源共享。播放客戶端與區(qū)域P2P目錄服務(wù)器之間的交互如圖3所示。[1]
播放終端之間通過P2P方式進(jìn)行視頻分片的分布式共享與傳輸,從而保證播放器本地?cái)?shù)據(jù)的快速獲取,取代流媒體點(diǎn)播獲取播放數(shù)據(jù)的模式,兩個(gè)播放終端之間的分片傳輸如圖4所示。
播放終端之間進(jìn)行P2P視頻分片傳輸時(shí)可能產(chǎn)生不同的異常,這里對(duì)分片提供者產(chǎn)生的異常和網(wǎng)絡(luò)通信異常分別進(jìn)行了不同的處理。具體如圖5所示。
2.區(qū)域P2P目錄服務(wù)器端軟件設(shè)計(jì)與實(shí)現(xiàn)。P2P目錄服務(wù)器的軟件主要為種子文件生成及選源策略、P2P播放客戶端的心跳監(jiān)控與處理、P2P播放客戶端分片種子信息更新等模塊。
種子生成與選源策略模塊主要負(fù)責(zé)處理P2P播放客戶端發(fā)送來的視頻資源請(qǐng)求??蛻舳酥贫ㄎ募c文件地址,服務(wù)器根據(jù)客戶端需求的視頻文件,在數(shù)據(jù)庫的ClientFragmentTable表中選出種子客戶端,生成一個(gè)xml類型文件的種子列表,發(fā)送給請(qǐng)求方客戶端。
按照選源策略,種子節(jié)點(diǎn)選擇算法(SourceSelect算法)的具體描述如下:
在選源算法中,一般需要選出的種子數(shù)量為6個(gè),所以實(shí)現(xiàn)中的n等于6。選出一個(gè)種子,需要遍歷整個(gè)含有分段的種子集合一次,選出6個(gè)種子,生成種子列表的情況下,算法的復(fù)雜度就為O(6N)。在達(dá)到均衡機(jī)制的要求下,該算法是合理有效的。
P2P目錄服務(wù)器需要對(duì)播放終端的上線及學(xué)習(xí)過程進(jìn)行記錄存檔,同時(shí)通過心跳功能獲取當(dāng)前節(jié)點(diǎn)的通信性能,為種子節(jié)點(diǎn)選擇做好準(zhǔn)備。
心跳功能的記錄結(jié)構(gòu)如表2所示,IP地址用于判定所在的網(wǎng)段,UploadNum記錄當(dāng)前播放終端啟動(dòng)的線程數(shù),本系統(tǒng)規(guī)定線程數(shù)為4個(gè),線程數(shù)作為種子節(jié)點(diǎn)選源的一個(gè)因素之一。
P2P目錄服務(wù)器提供每個(gè)視頻文件的種子文檔信息,以便用戶播放端能夠進(jìn)行終端網(wǎng)絡(luò)的P2P終端分片共享,由于視頻分片的分布是動(dòng)態(tài)的,因此每個(gè)播放終端將自己所擁有的視頻分片向目錄服務(wù)器進(jìn)行匯報(bào),為種子文檔的產(chǎn)生做好準(zhǔn)備。分片更新工作流程如圖6所示。
分片更新算法UpdateLocalFragments如下:
該算法根據(jù)本文設(shè)計(jì)的更新本地分片的策略進(jìn)行實(shí)現(xiàn),將本地的分片更新到服務(wù)器從而實(shí)現(xiàn)數(shù)據(jù)的共享。
五、系統(tǒng)測(cè)試
系統(tǒng)測(cè)試主要通過測(cè)試用例對(duì)系統(tǒng)的各項(xiàng)功能進(jìn)行測(cè)試,[8]主要包括流媒體播放與P2P播放兩種模式的切換測(cè)試、P2P目錄服務(wù)器的P2P下載功能測(cè)試、用戶播放端分片信息更新的測(cè)試、用戶播放端之間的多線程P2P下載與上傳功能測(cè)試、P2P目錄服務(wù)器種子節(jié)點(diǎn)選源均衡策略測(cè)試、P2P傳輸異常測(cè)試。這里僅給出三個(gè)主要功能測(cè)試用例及測(cè)試結(jié)果。
測(cè)試環(huán)境如圖7所示:
(1)服務(wù)器1臺(tái),該服務(wù)器上部署一個(gè)流媒體課件服務(wù)器、一個(gè)課件點(diǎn)播web服務(wù)器(網(wǎng)絡(luò)大學(xué)學(xué)習(xí)平臺(tái))、一個(gè)P2P目錄服務(wù)器。
(2)用戶播放終端計(jì)算機(jī)5臺(tái),具有瀏覽器軟件和P2P客戶端軟件。
主要功能的測(cè)試樣例及測(cè)試結(jié)果:
1.流媒體播放與P2P播放兩種模式的切換測(cè)試
2.P2P客戶端之間單線程和多線程傳輸功能測(cè)試
3.P2P目錄服務(wù)器種子節(jié)點(diǎn)選源均衡策略測(cè)試
以上結(jié)果是在實(shí)際環(huán)境下測(cè)試的實(shí)際結(jié)果,實(shí)際測(cè)試表明所完成的設(shè)計(jì)符合實(shí)際設(shè)計(jì)需求,功能正確。
六、分析與討論
本文根據(jù)實(shí)際需求,在原有流媒體視頻點(diǎn)播架構(gòu)的基礎(chǔ)上,增加P2P視頻播放功能,所實(shí)現(xiàn)的系統(tǒng)設(shè)計(jì)和功能滿足了兩種播放模式的兼容和自動(dòng)感知切換,充分利用了兩種播放模式各自的優(yōu)點(diǎn),系統(tǒng)設(shè)計(jì)考慮了各種異常處理方案,使得系統(tǒng)本身具有較好的健壯性,系統(tǒng)的機(jī)制和策略具有實(shí)際價(jià)值,能夠應(yīng)用于不同領(lǐng)域中的數(shù)據(jù)分發(fā)和共享。
參考文獻(xiàn):
[1]沈時(shí)軍,李三立.基于P2P的視頻點(diǎn)播系統(tǒng)綜述[J].計(jì)算機(jī)學(xué)報(bào),2010,(04):613-624.
[2]王書芹,姜秀柱,田芳,等.基于P2P的流媒體點(diǎn)播系統(tǒng)中客戶端緩存的研究[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(9):219-221.
[3]方煒,吳明暉,應(yīng)晶,等.基于P2P的流媒體應(yīng)用及其關(guān)鍵算法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2005,22(5):35-37.
[4]黃良飛.基于DirectShow技術(shù)的網(wǎng)絡(luò)視頻播放器設(shè)計(jì)[D].浙江大學(xué)碩士學(xué)位論文,2007.
[5]呂偉梅,鄭慶華,黃華,等.移動(dòng)流媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2008,35(9):126-128.
[6]趙進(jìn),葉梧,馮穗力.基于RTP/RTCP的流媒體服務(wù)器技術(shù)研究[J].中國有線電視,2004,(01).
[7]Mengkun Yang,Zongming Fei.A segmentation-based fine-grained peer sharing technique for delivering large media files in content distribution networks[J].IEEE transactions on multimedia,2006,8,(4):821-829.
[8]Aditya Ganjam,Sanjay G Rao,Kunwadee Sripanidkulchai.On-demand waypoints for live P2P video broadcasting[J].Peer-to-Peer Networking and Applications,2010,3(4):277—293.endprint
4.P2P系統(tǒng)異常處理。在P2P機(jī)制中,視頻播放器數(shù)據(jù)來自于本地多線程從區(qū)域內(nèi)其他播放終端下載的P2P分片,[5]在下載過程中,由于網(wǎng)絡(luò)狀況的不穩(wěn)定,或者由于視頻資源提供端的突發(fā)情況,可能會(huì)導(dǎo)致P2P分片無法成功下載,為了保證系統(tǒng)的健壯性,異常處理機(jī)制必不可少。異常處理策略:主要異常分為種子節(jié)點(diǎn)分片不存在、網(wǎng)絡(luò)異常中斷、種子節(jié)點(diǎn)異常關(guān)閉、種子節(jié)點(diǎn)線程過多拒絕服務(wù)異常,[6]處理策略為在種子節(jié)點(diǎn)列表中聯(lián)系其他節(jié)點(diǎn),若仍然不能成功獲取分片數(shù)據(jù),則從區(qū)域目錄服務(wù)器直接獲取分片資源。
四、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
系統(tǒng)軟件主要由區(qū)域服務(wù)器和播放終端兩個(gè)主要部分構(gòu)成。
1.播放客戶端軟件設(shè)計(jì)與實(shí)現(xiàn)。播放客戶端在播放之前首先需要向區(qū)域P2P目錄服務(wù)器獲得播放文件的種子信息,然后啟動(dòng)多線程進(jìn)行播放終端之間的P2P分片資源共享。播放客戶端與區(qū)域P2P目錄服務(wù)器之間的交互如圖3所示。[1]
播放終端之間通過P2P方式進(jìn)行視頻分片的分布式共享與傳輸,從而保證播放器本地?cái)?shù)據(jù)的快速獲取,取代流媒體點(diǎn)播獲取播放數(shù)據(jù)的模式,兩個(gè)播放終端之間的分片傳輸如圖4所示。
播放終端之間進(jìn)行P2P視頻分片傳輸時(shí)可能產(chǎn)生不同的異常,這里對(duì)分片提供者產(chǎn)生的異常和網(wǎng)絡(luò)通信異常分別進(jìn)行了不同的處理。具體如圖5所示。
2.區(qū)域P2P目錄服務(wù)器端軟件設(shè)計(jì)與實(shí)現(xiàn)。P2P目錄服務(wù)器的軟件主要為種子文件生成及選源策略、P2P播放客戶端的心跳監(jiān)控與處理、P2P播放客戶端分片種子信息更新等模塊。
種子生成與選源策略模塊主要負(fù)責(zé)處理P2P播放客戶端發(fā)送來的視頻資源請(qǐng)求??蛻舳酥贫ㄎ募c文件地址,服務(wù)器根據(jù)客戶端需求的視頻文件,在數(shù)據(jù)庫的ClientFragmentTable表中選出種子客戶端,生成一個(gè)xml類型文件的種子列表,發(fā)送給請(qǐng)求方客戶端。
按照選源策略,種子節(jié)點(diǎn)選擇算法(SourceSelect算法)的具體描述如下:
在選源算法中,一般需要選出的種子數(shù)量為6個(gè),所以實(shí)現(xiàn)中的n等于6。選出一個(gè)種子,需要遍歷整個(gè)含有分段的種子集合一次,選出6個(gè)種子,生成種子列表的情況下,算法的復(fù)雜度就為O(6N)。在達(dá)到均衡機(jī)制的要求下,該算法是合理有效的。
P2P目錄服務(wù)器需要對(duì)播放終端的上線及學(xué)習(xí)過程進(jìn)行記錄存檔,同時(shí)通過心跳功能獲取當(dāng)前節(jié)點(diǎn)的通信性能,為種子節(jié)點(diǎn)選擇做好準(zhǔn)備。
心跳功能的記錄結(jié)構(gòu)如表2所示,IP地址用于判定所在的網(wǎng)段,UploadNum記錄當(dāng)前播放終端啟動(dòng)的線程數(shù),本系統(tǒng)規(guī)定線程數(shù)為4個(gè),線程數(shù)作為種子節(jié)點(diǎn)選源的一個(gè)因素之一。
P2P目錄服務(wù)器提供每個(gè)視頻文件的種子文檔信息,以便用戶播放端能夠進(jìn)行終端網(wǎng)絡(luò)的P2P終端分片共享,由于視頻分片的分布是動(dòng)態(tài)的,因此每個(gè)播放終端將自己所擁有的視頻分片向目錄服務(wù)器進(jìn)行匯報(bào),為種子文檔的產(chǎn)生做好準(zhǔn)備。分片更新工作流程如圖6所示。
分片更新算法UpdateLocalFragments如下:
該算法根據(jù)本文設(shè)計(jì)的更新本地分片的策略進(jìn)行實(shí)現(xiàn),將本地的分片更新到服務(wù)器從而實(shí)現(xiàn)數(shù)據(jù)的共享。
五、系統(tǒng)測(cè)試
系統(tǒng)測(cè)試主要通過測(cè)試用例對(duì)系統(tǒng)的各項(xiàng)功能進(jìn)行測(cè)試,[8]主要包括流媒體播放與P2P播放兩種模式的切換測(cè)試、P2P目錄服務(wù)器的P2P下載功能測(cè)試、用戶播放端分片信息更新的測(cè)試、用戶播放端之間的多線程P2P下載與上傳功能測(cè)試、P2P目錄服務(wù)器種子節(jié)點(diǎn)選源均衡策略測(cè)試、P2P傳輸異常測(cè)試。這里僅給出三個(gè)主要功能測(cè)試用例及測(cè)試結(jié)果。
測(cè)試環(huán)境如圖7所示:
(1)服務(wù)器1臺(tái),該服務(wù)器上部署一個(gè)流媒體課件服務(wù)器、一個(gè)課件點(diǎn)播web服務(wù)器(網(wǎng)絡(luò)大學(xué)學(xué)習(xí)平臺(tái))、一個(gè)P2P目錄服務(wù)器。
(2)用戶播放終端計(jì)算機(jī)5臺(tái),具有瀏覽器軟件和P2P客戶端軟件。
主要功能的測(cè)試樣例及測(cè)試結(jié)果:
1.流媒體播放與P2P播放兩種模式的切換測(cè)試
2.P2P客戶端之間單線程和多線程傳輸功能測(cè)試
3.P2P目錄服務(wù)器種子節(jié)點(diǎn)選源均衡策略測(cè)試
以上結(jié)果是在實(shí)際環(huán)境下測(cè)試的實(shí)際結(jié)果,實(shí)際測(cè)試表明所完成的設(shè)計(jì)符合實(shí)際設(shè)計(jì)需求,功能正確。
六、分析與討論
本文根據(jù)實(shí)際需求,在原有流媒體視頻點(diǎn)播架構(gòu)的基礎(chǔ)上,增加P2P視頻播放功能,所實(shí)現(xiàn)的系統(tǒng)設(shè)計(jì)和功能滿足了兩種播放模式的兼容和自動(dòng)感知切換,充分利用了兩種播放模式各自的優(yōu)點(diǎn),系統(tǒng)設(shè)計(jì)考慮了各種異常處理方案,使得系統(tǒng)本身具有較好的健壯性,系統(tǒng)的機(jī)制和策略具有實(shí)際價(jià)值,能夠應(yīng)用于不同領(lǐng)域中的數(shù)據(jù)分發(fā)和共享。
參考文獻(xiàn):
[1]沈時(shí)軍,李三立.基于P2P的視頻點(diǎn)播系統(tǒng)綜述[J].計(jì)算機(jī)學(xué)報(bào),2010,(04):613-624.
[2]王書芹,姜秀柱,田芳,等.基于P2P的流媒體點(diǎn)播系統(tǒng)中客戶端緩存的研究[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(9):219-221.
[3]方煒,吳明暉,應(yīng)晶,等.基于P2P的流媒體應(yīng)用及其關(guān)鍵算法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2005,22(5):35-37.
[4]黃良飛.基于DirectShow技術(shù)的網(wǎng)絡(luò)視頻播放器設(shè)計(jì)[D].浙江大學(xué)碩士學(xué)位論文,2007.
[5]呂偉梅,鄭慶華,黃華,等.移動(dòng)流媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2008,35(9):126-128.
[6]趙進(jìn),葉梧,馮穗力.基于RTP/RTCP的流媒體服務(wù)器技術(shù)研究[J].中國有線電視,2004,(01).
[7]Mengkun Yang,Zongming Fei.A segmentation-based fine-grained peer sharing technique for delivering large media files in content distribution networks[J].IEEE transactions on multimedia,2006,8,(4):821-829.
[8]Aditya Ganjam,Sanjay G Rao,Kunwadee Sripanidkulchai.On-demand waypoints for live P2P video broadcasting[J].Peer-to-Peer Networking and Applications,2010,3(4):277—293.endprint
4.P2P系統(tǒng)異常處理。在P2P機(jī)制中,視頻播放器數(shù)據(jù)來自于本地多線程從區(qū)域內(nèi)其他播放終端下載的P2P分片,[5]在下載過程中,由于網(wǎng)絡(luò)狀況的不穩(wěn)定,或者由于視頻資源提供端的突發(fā)情況,可能會(huì)導(dǎo)致P2P分片無法成功下載,為了保證系統(tǒng)的健壯性,異常處理機(jī)制必不可少。異常處理策略:主要異常分為種子節(jié)點(diǎn)分片不存在、網(wǎng)絡(luò)異常中斷、種子節(jié)點(diǎn)異常關(guān)閉、種子節(jié)點(diǎn)線程過多拒絕服務(wù)異常,[6]處理策略為在種子節(jié)點(diǎn)列表中聯(lián)系其他節(jié)點(diǎn),若仍然不能成功獲取分片數(shù)據(jù),則從區(qū)域目錄服務(wù)器直接獲取分片資源。
四、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
系統(tǒng)軟件主要由區(qū)域服務(wù)器和播放終端兩個(gè)主要部分構(gòu)成。
1.播放客戶端軟件設(shè)計(jì)與實(shí)現(xiàn)。播放客戶端在播放之前首先需要向區(qū)域P2P目錄服務(wù)器獲得播放文件的種子信息,然后啟動(dòng)多線程進(jìn)行播放終端之間的P2P分片資源共享。播放客戶端與區(qū)域P2P目錄服務(wù)器之間的交互如圖3所示。[1]
播放終端之間通過P2P方式進(jìn)行視頻分片的分布式共享與傳輸,從而保證播放器本地?cái)?shù)據(jù)的快速獲取,取代流媒體點(diǎn)播獲取播放數(shù)據(jù)的模式,兩個(gè)播放終端之間的分片傳輸如圖4所示。
播放終端之間進(jìn)行P2P視頻分片傳輸時(shí)可能產(chǎn)生不同的異常,這里對(duì)分片提供者產(chǎn)生的異常和網(wǎng)絡(luò)通信異常分別進(jìn)行了不同的處理。具體如圖5所示。
2.區(qū)域P2P目錄服務(wù)器端軟件設(shè)計(jì)與實(shí)現(xiàn)。P2P目錄服務(wù)器的軟件主要為種子文件生成及選源策略、P2P播放客戶端的心跳監(jiān)控與處理、P2P播放客戶端分片種子信息更新等模塊。
種子生成與選源策略模塊主要負(fù)責(zé)處理P2P播放客戶端發(fā)送來的視頻資源請(qǐng)求。客戶端制定文件名與文件地址,服務(wù)器根據(jù)客戶端需求的視頻文件,在數(shù)據(jù)庫的ClientFragmentTable表中選出種子客戶端,生成一個(gè)xml類型文件的種子列表,發(fā)送給請(qǐng)求方客戶端。
按照選源策略,種子節(jié)點(diǎn)選擇算法(SourceSelect算法)的具體描述如下:
在選源算法中,一般需要選出的種子數(shù)量為6個(gè),所以實(shí)現(xiàn)中的n等于6。選出一個(gè)種子,需要遍歷整個(gè)含有分段的種子集合一次,選出6個(gè)種子,生成種子列表的情況下,算法的復(fù)雜度就為O(6N)。在達(dá)到均衡機(jī)制的要求下,該算法是合理有效的。
P2P目錄服務(wù)器需要對(duì)播放終端的上線及學(xué)習(xí)過程進(jìn)行記錄存檔,同時(shí)通過心跳功能獲取當(dāng)前節(jié)點(diǎn)的通信性能,為種子節(jié)點(diǎn)選擇做好準(zhǔn)備。
心跳功能的記錄結(jié)構(gòu)如表2所示,IP地址用于判定所在的網(wǎng)段,UploadNum記錄當(dāng)前播放終端啟動(dòng)的線程數(shù),本系統(tǒng)規(guī)定線程數(shù)為4個(gè),線程數(shù)作為種子節(jié)點(diǎn)選源的一個(gè)因素之一。
P2P目錄服務(wù)器提供每個(gè)視頻文件的種子文檔信息,以便用戶播放端能夠進(jìn)行終端網(wǎng)絡(luò)的P2P終端分片共享,由于視頻分片的分布是動(dòng)態(tài)的,因此每個(gè)播放終端將自己所擁有的視頻分片向目錄服務(wù)器進(jìn)行匯報(bào),為種子文檔的產(chǎn)生做好準(zhǔn)備。分片更新工作流程如圖6所示。
分片更新算法UpdateLocalFragments如下:
該算法根據(jù)本文設(shè)計(jì)的更新本地分片的策略進(jìn)行實(shí)現(xiàn),將本地的分片更新到服務(wù)器從而實(shí)現(xiàn)數(shù)據(jù)的共享。
五、系統(tǒng)測(cè)試
系統(tǒng)測(cè)試主要通過測(cè)試用例對(duì)系統(tǒng)的各項(xiàng)功能進(jìn)行測(cè)試,[8]主要包括流媒體播放與P2P播放兩種模式的切換測(cè)試、P2P目錄服務(wù)器的P2P下載功能測(cè)試、用戶播放端分片信息更新的測(cè)試、用戶播放端之間的多線程P2P下載與上傳功能測(cè)試、P2P目錄服務(wù)器種子節(jié)點(diǎn)選源均衡策略測(cè)試、P2P傳輸異常測(cè)試。這里僅給出三個(gè)主要功能測(cè)試用例及測(cè)試結(jié)果。
測(cè)試環(huán)境如圖7所示:
(1)服務(wù)器1臺(tái),該服務(wù)器上部署一個(gè)流媒體課件服務(wù)器、一個(gè)課件點(diǎn)播web服務(wù)器(網(wǎng)絡(luò)大學(xué)學(xué)習(xí)平臺(tái))、一個(gè)P2P目錄服務(wù)器。
(2)用戶播放終端計(jì)算機(jī)5臺(tái),具有瀏覽器軟件和P2P客戶端軟件。
主要功能的測(cè)試樣例及測(cè)試結(jié)果:
1.流媒體播放與P2P播放兩種模式的切換測(cè)試
2.P2P客戶端之間單線程和多線程傳輸功能測(cè)試
3.P2P目錄服務(wù)器種子節(jié)點(diǎn)選源均衡策略測(cè)試
以上結(jié)果是在實(shí)際環(huán)境下測(cè)試的實(shí)際結(jié)果,實(shí)際測(cè)試表明所完成的設(shè)計(jì)符合實(shí)際設(shè)計(jì)需求,功能正確。
六、分析與討論
本文根據(jù)實(shí)際需求,在原有流媒體視頻點(diǎn)播架構(gòu)的基礎(chǔ)上,增加P2P視頻播放功能,所實(shí)現(xiàn)的系統(tǒng)設(shè)計(jì)和功能滿足了兩種播放模式的兼容和自動(dòng)感知切換,充分利用了兩種播放模式各自的優(yōu)點(diǎn),系統(tǒng)設(shè)計(jì)考慮了各種異常處理方案,使得系統(tǒng)本身具有較好的健壯性,系統(tǒng)的機(jī)制和策略具有實(shí)際價(jià)值,能夠應(yīng)用于不同領(lǐng)域中的數(shù)據(jù)分發(fā)和共享。
參考文獻(xiàn):
[1]沈時(shí)軍,李三立.基于P2P的視頻點(diǎn)播系統(tǒng)綜述[J].計(jì)算機(jī)學(xué)報(bào),2010,(04):613-624.
[2]王書芹,姜秀柱,田芳,等.基于P2P的流媒體點(diǎn)播系統(tǒng)中客戶端緩存的研究[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(9):219-221.
[3]方煒,吳明暉,應(yīng)晶,等.基于P2P的流媒體應(yīng)用及其關(guān)鍵算法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2005,22(5):35-37.
[4]黃良飛.基于DirectShow技術(shù)的網(wǎng)絡(luò)視頻播放器設(shè)計(jì)[D].浙江大學(xué)碩士學(xué)位論文,2007.
[5]呂偉梅,鄭慶華,黃華,等.移動(dòng)流媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2008,35(9):126-128.
[6]趙進(jìn),葉梧,馮穗力.基于RTP/RTCP的流媒體服務(wù)器技術(shù)研究[J].中國有線電視,2004,(01).
[7]Mengkun Yang,Zongming Fei.A segmentation-based fine-grained peer sharing technique for delivering large media files in content distribution networks[J].IEEE transactions on multimedia,2006,8,(4):821-829.
[8]Aditya Ganjam,Sanjay G Rao,Kunwadee Sripanidkulchai.On-demand waypoints for live P2P video broadcasting[J].Peer-to-Peer Networking and Applications,2010,3(4):277—293.endprint