p2p在線高清視頻點播系統(tǒng)的設計與實現(xiàn)_第1頁
p2p在線高清視頻點播系統(tǒng)的設計與實現(xiàn)_第2頁
p2p在線高清視頻點播系統(tǒng)的設計與實現(xiàn)_第3頁
p2p在線高清視頻點播系統(tǒng)的設計與實現(xiàn)_第4頁
p2p在線高清視頻點播系統(tǒng)的設計與實現(xiàn)_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

p2p在線高清視頻點播系統(tǒng)的設計與實現(xiàn)

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

溫馨提示

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

評論

0/150

提交評論