p2p在線高清視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
p2p在線高清視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
p2p在線高清視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
p2p在線高清視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
p2p在線高清視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

p2p在線高清視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

隨著科學(xué)技術(shù)的日新月異,手機(jī)已經(jīng)發(fā)生了無數(shù)的變化。由于手機(jī)視頻技術(shù)在手機(jī)平臺(tái)上的應(yīng)用速度較慢,手機(jī)處理能力受到限制,手機(jī)視頻視頻的視頻質(zhì)量仍然無法像pc平臺(tái)那樣實(shí)現(xiàn)高分辨率。目前手機(jī)視頻播放主要還是基于J2ME技術(shù)、Symbian平臺(tái)、Android平臺(tái)等來實(shí)現(xiàn)。最近幾年,P2P(Peer-to-Peer)又成為因特網(wǎng)上的一個(gè)熱點(diǎn),P2P是因特網(wǎng)的一種應(yīng)用模式,其意思是指網(wǎng)絡(luò)上的任何設(shè)備(包括大型機(jī)、PC機(jī)、PDA、手機(jī)、機(jī)頂盒等等)都可以平等地直接進(jìn)行連接并進(jìn)行協(xié)作,相比當(dāng)前因特網(wǎng)上的主流應(yīng)用模式C/S或者B/S而言,P2P具有自己鮮明的特點(diǎn)和優(yōu)勢(shì)。P2P流媒體播放技術(shù)在PC端已經(jīng)得到了廣泛的應(yīng)用,而在手機(jī)客戶端,由于受制于2.5G網(wǎng)絡(luò)帶寬的限制,這仍然是一片空白。在3G網(wǎng)絡(luò)日趨成熟,無線帶寬逐步提高的今天,基于P2P技術(shù)的應(yīng)用程序部署在手機(jī)客戶端已經(jīng)不再是天方夜譚。借助Android操作系統(tǒng)以及3G網(wǎng)絡(luò)的支持,開發(fā)一個(gè)P2P在線高清視頻點(diǎn)播系統(tǒng)具有廣闊的應(yīng)用前景。1android環(huán)境Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)的名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。Android是一個(gè)分層的環(huán)境,構(gòu)建在Linux內(nèi)核的基礎(chǔ)上,它包括豐富的功能。Android包括一個(gè)構(gòu)建在WebKit基礎(chǔ)上的可嵌入瀏覽器,Android提供多種連接選項(xiàng),包括WiFi、藍(lán)牙和通過蜂窩連接的無線數(shù)據(jù)傳輸(如GPRS、EDGE和3G)。Android運(yùn)行在Linux內(nèi)核上。Android應(yīng)用程序是用Java編程語言編寫的,它們?cè)谝粋€(gè)虛擬機(jī)(VM)中運(yùn)行。每個(gè)Android應(yīng)用程序都在DalvikVM的一個(gè)實(shí)例中運(yùn)行,這個(gè)實(shí)例駐留在一個(gè)由Linux內(nèi)核管理的進(jìn)程中,如圖1所示。2p2p技術(shù)特點(diǎn)近幾年,P2P(Peer-to-Peer)成為因特網(wǎng)上的一個(gè)熱點(diǎn)。P2P是因特網(wǎng)的一種應(yīng)用模式,其意思是指網(wǎng)絡(luò)上的任何設(shè)備(包括大型機(jī)、PC機(jī)、PDA、手機(jī)、機(jī)頂盒等等)都可以平等地直接進(jìn)行連接并進(jìn)行協(xié)作。P2P節(jié)點(diǎn)不依賴中心節(jié)點(diǎn)而是依靠網(wǎng)絡(luò)邊緣節(jié)點(diǎn),實(shí)現(xiàn)自組織與對(duì)等協(xié)作的資源發(fā)現(xiàn)和共享,因此擁有自組織、可擴(kuò)展性、魯棒性、容錯(cuò)性以及負(fù)載均衡等優(yōu)點(diǎn)。P2P技術(shù)被廣泛應(yīng)用于文件共享、網(wǎng)絡(luò)視頻、網(wǎng)絡(luò)電話等領(lǐng)域,以分布式資源共享和并行傳輸?shù)奶攸c(diǎn),為用戶提供了更多的資源、更高的可用帶寬以及更好的服務(wù)質(zhì)量。目前P2P流媒體關(guān)鍵技術(shù)主要包括文件定位技術(shù)、節(jié)點(diǎn)的選擇、容錯(cuò)機(jī)制、安全機(jī)制等。3流觀看技術(shù)模塊該系統(tǒng)意在實(shí)現(xiàn)手機(jī)終端上進(jìn)行高清視頻的在線點(diǎn)播,主要任務(wù)包括實(shí)現(xiàn)P2P網(wǎng)絡(luò)服務(wù)的架設(shè)、實(shí)現(xiàn)P2P服務(wù)器的架設(shè)、實(shí)現(xiàn)視頻源服務(wù)器的架設(shè)、實(shí)現(xiàn)P2P種子服務(wù)器的架設(shè)、實(shí)現(xiàn)Android平臺(tái)的JXTA技術(shù)、實(shí)現(xiàn)Android平臺(tái)的視頻流播放技術(shù)、實(shí)現(xiàn)Android平臺(tái)的視頻播放與控制技術(shù)。(1)系統(tǒng)的功能如下:1)初始化P2P網(wǎng)絡(luò),自動(dòng)搜索P2P集合點(diǎn)。2)讀取集合點(diǎn)節(jié)點(diǎn)列表。3)讀取播放列表。4)通過播放列表種子服務(wù)器搜索片源種子。5)在集合點(diǎn)中搜索片源種子。6)連接片源種子節(jié)點(diǎn),請(qǐng)求傳輸。7)種子節(jié)點(diǎn)接到請(qǐng)求,進(jìn)行握手,握手完成后開始傳輸數(shù)據(jù)。8)數(shù)據(jù)緩沖完成后開始播放影片。(2)系統(tǒng)的功能模塊如圖2所示。(3)開發(fā)環(huán)境1)操作系統(tǒng):MicrosoftWindowsXPProfessional。2)程序語言:Android,Java。3)開發(fā)包:JDK1.6,AndroidSDK1.5,JXTA。4)IDE:Eclipse3.5.1,ADTplugin。4系統(tǒng)總體流程該系統(tǒng)主要通過JXTA協(xié)議,構(gòu)建一個(gè)P2P網(wǎng)絡(luò),在網(wǎng)絡(luò)中設(shè)置有若干個(gè)PC機(jī)節(jié)點(diǎn)和手機(jī)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)中都有共享文件,任意節(jié)點(diǎn)可通過P2P網(wǎng)絡(luò)集合點(diǎn)訪問其他節(jié)點(diǎn)的共享資源。系統(tǒng)啟動(dòng)時(shí)首先進(jìn)行初始化,初始化過程會(huì)檢查緩存情況、啟動(dòng)JXTA網(wǎng)絡(luò)連接,啟動(dòng)之后將搜索JXTA網(wǎng)絡(luò)集合點(diǎn)RDV,讀取集合點(diǎn)上的Peer列表。待初始化完畢之后,系統(tǒng)等待用戶的視頻點(diǎn)播請(qǐng)求,點(diǎn)播之后系統(tǒng)向集合點(diǎn)請(qǐng)求資源,集合點(diǎn)將相應(yīng)的節(jié)點(diǎn)列表反饋給請(qǐng)求節(jié)點(diǎn),接到反饋的節(jié)點(diǎn)列表之后,系統(tǒng)向相應(yīng)的節(jié)點(diǎn)發(fā)送文件傳輸請(qǐng)求,經(jīng)握手后即開始傳輸數(shù)據(jù),傳輸過程將檢查緩存情況,待緩存完畢之后即可開始播放視頻,系統(tǒng)的主要流程如圖3所示。該系統(tǒng)的P2P網(wǎng)絡(luò)主要由3個(gè)部分組成,分別是Android平臺(tái)節(jié)點(diǎn)、PC平臺(tái)節(jié)點(diǎn)和Peer集合點(diǎn),其中Peer集合點(diǎn)負(fù)責(zé)收集和發(fā)送節(jié)點(diǎn)列表信息,起到一個(gè)系統(tǒng)調(diào)度的作用,各節(jié)點(diǎn)可以通過集合點(diǎn)獲取存在的節(jié)點(diǎn)列表,通過該列表,即可對(duì)該對(duì)等網(wǎng)絡(luò)中的任意節(jié)點(diǎn)進(jìn)行訪問,接收和發(fā)送數(shù)據(jù),該系統(tǒng)的整體結(jié)構(gòu)示意圖如圖4所示。5功能菜單設(shè)計(jì)播放器由播放功能單元和功能菜單組成,播放器可以實(shí)現(xiàn)視頻播放功能,功能菜單作為播放功能的輔助選項(xiàng)可以讓用戶選擇播放文件、查看系統(tǒng)狀態(tài)、進(jìn)行系統(tǒng)設(shè)置、進(jìn)行P2P聊天等功能。系統(tǒng)主界面如圖5所示,頂端為標(biāo)題欄,緊接著視頻播放窗口和播放器控制按鈕,最下方為Menu功能菜單。5.1actity接口播放器的主控界面如圖6所示,該播放器主要通過調(diào)用AndroidAPI中的MediaPlayer類來實(shí)現(xiàn),首先要在Activity里創(chuàng)建SurfaceView,這個(gè)View與控制SurfaceView的SurfaceHolder對(duì)象,搭配MediaPlayer的SetDisplay()方法來制定要將圖像顯示于指定的SurfaceView之上。要在Activity里面配置SurfaceView,必須讓Activity實(shí)現(xiàn)SurfaceHolder.Callback接口,在Activity當(dāng)中覆蓋surfaceChanged()與surfaceDestroyed()方法。主程序構(gòu)建了MediaPlayer()對(duì)象,通過MediaPlayer.setDisplay(SurfaceHolder)方法,讓MediaPlayer播放影片時(shí),將圖像顯示在指定的SurfaceView中,播放器主要方法的相關(guān)代碼如下:5.2生成主題函數(shù)Menu功能菜單如圖5所示,實(shí)現(xiàn)Menu功能菜單主要通過手機(jī)接口的MenuShotcut,也就是所謂的MenuKey。程序除了默認(rèn)覆蓋的OnCreat之外,還需要另外新建兩個(gè)類函數(shù):onCreatoptionsMenu()與onOptionsItemSelected(),前者為創(chuàng)建Menu菜單的項(xiàng)目,后者是處理菜單被選擇運(yùn)行后的時(shí)間處理。以下是onCreatoptionsMenu()與onOptionsItemSelected()的源代碼:5.3方便用戶選擇用戶表信息該系統(tǒng)的播放列表界面如圖7所示,該界面展現(xiàn)了當(dāng)前讀取的XML文件中的播放列表信息,方便用戶進(jìn)行選擇。該播放列表主要通過AlertDialog.Builder方法類來實(shí)現(xiàn),通過加載讀取的XML文件,就可以把信息顯示于屏上。播放列表的AlertDialog.Builder調(diào)用方法,相關(guān)代碼如下:5.4基于adpertsing的請(qǐng)求支持該程序主要用于對(duì)網(wǎng)絡(luò)上的Peer節(jié)點(diǎn)進(jìn)行搜索,維護(hù)一個(gè)節(jié)點(diǎn)列表。該搜索程序通過JXTA對(duì)等機(jī)發(fā)現(xiàn)協(xié)議(PDP)進(jìn)行節(jié)點(diǎn)搜索,PeerDiscoveryProtocol(PDP)定義了發(fā)現(xiàn)其他Peer和資源的協(xié)議,該協(xié)議包括兩個(gè)方面,一方面用于請(qǐng)求獲得其他Peer的Advertisement;另一方面用于相應(yīng)其他Peer的這種請(qǐng)求。Peers給所有已知的Peer和RendezvousPeer發(fā)送一個(gè)DiscoveryQueryMessage,RendezvousPeer對(duì)discovery請(qǐng)求進(jìn)行處理,并返回一個(gè)DiscoveryResponseMessage,其中包含它緩存中的advertisement。另外,它還把這個(gè)請(qǐng)求廣播給所有知道的Peer,收到請(qǐng)求的Peer搜索本地緩存尋找匹配的advertisement,如果找到,就直接給最初的請(qǐng)求方發(fā)送一個(gè)DiscoveryResponseMessage。該程序運(yùn)行在一個(gè)線程(Thread)中,在該線程中,執(zhí)行一個(gè)循環(huán),每隔60*1000毫秒獲取一次節(jié)點(diǎn)列表。節(jié)點(diǎn)搜索線程代碼如下:5.5pipewelling東南角文件發(fā)送的實(shí)現(xiàn)是利用P2PSocket編寫的程序,可以在任意Peer之間對(duì)等地傳輸文件。該程序通過JXTA管道綁定協(xié)議,由Pipe向遠(yuǎn)程Peer發(fā)送文件,文件將以流的形式傳遞,通過PipeMsgEvent實(shí)現(xiàn)PipeMsgListener,每次當(dāng)有消息傳送到管道的時(shí)候,事件將被捕獲。通過doFileListRequest處理共享文件列表的請(qǐng)求,向?qū)Ψ桨l(fā)送包含共享文件名的列表的消息。在一個(gè)線程中執(zhí)行一個(gè)循環(huán),同過JXTA網(wǎng)絡(luò)進(jìn)行文件資源廣播,如果得到回應(yīng)就進(jìn)行資源請(qǐng)求確認(rèn),確認(rèn)完成之后調(diào)用this.socketService.sendFile()函數(shù)發(fā)送當(dāng)前文件資源,文件發(fā)送循環(huán)程序的相關(guān)代碼如下:5.6基于約束的pla網(wǎng)絡(luò)節(jié)點(diǎn)列表收集主要完成啟動(dòng)并初始化JXTA網(wǎng)絡(luò),形成一個(gè)網(wǎng)絡(luò)集合點(diǎn)RendezvousPeer,集合點(diǎn)服務(wù)的主要功能是允許Peer向網(wǎng)絡(luò)上的其他Peer傳播消息。該集合點(diǎn)可以監(jiān)聽到所有相鄰網(wǎng)絡(luò)請(qǐng)求連接的Peer節(jié)點(diǎn),包括PC機(jī)模擬節(jié)點(diǎn)和Android手機(jī)節(jié)點(diǎn),通過一個(gè)節(jié)點(diǎn)列表對(duì)當(dāng)前節(jié)點(diǎn)的信息進(jìn)行維護(hù),接收節(jié)點(diǎn)的連接與退出請(qǐng)求。該結(jié)合點(diǎn)類的設(shè)計(jì)主要是通過集合點(diǎn)協(xié)議RVP(RendezvousProtocol),簡(jiǎn)單Peer運(yùn)用該協(xié)議同集合點(diǎn)相連接,由集合點(diǎn)代表自己向其他Peer傳播消息。RVP的實(shí)現(xiàn)扮演雙重角色,為傳播消息提供了統(tǒng)一的API,該功能不依賴Peer是否配置成集合點(diǎn)。節(jié)點(diǎn)收集類PeerDroid_RDV的相關(guān)代碼如下:6androidi視頻技術(shù)的實(shí)現(xiàn)雖然在PC機(jī)上JXTA可以完美運(yùn)行,但要把JXTA平臺(tái)完全移植到Android上并不是一件容易的事情。PeerDroid框架將JXTA中專門用于移動(dòng)開發(fā)的JXME平臺(tái)完美的移植到了Android平臺(tái)。本系統(tǒng)借助PeerDroid搭建一個(gè)JXTA網(wǎng)絡(luò),一個(gè)虛擬PC機(jī)節(jié)點(diǎn),一個(gè)Android節(jié)點(diǎn),實(shí)現(xiàn)了Android和PC節(jié)點(diǎn)之間互傳文件。通過AndroidAPI實(shí)現(xiàn)了視頻的播放與控制。最后,將Android視頻播放器與PeerDroid進(jìn)行整合,通過點(diǎn)播請(qǐng)求傳輸文件,然后播放視頻。借助3G網(wǎng)絡(luò),Android未來的市場(chǎng)占有率將望超過Symbian平臺(tái)。文件接收的實(shí)現(xiàn)通過J

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論