




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機(jī)科學(xué)與工程學(xué)院網(wǎng)絡(luò)工程專業(yè)2004級專業(yè)方向課程設(shè)計報告目 錄目 錄I第一章 概述11.1 本課題的研究背景11.2 本課題的研究意義11.3 本報告的目的、內(nèi)容及作者的主要貢獻(xiàn)21.3.1 本報告的目的21.3.2 本報告的內(nèi)容21.3.3 作者主要貢獻(xiàn)21.4 國內(nèi)外相近研究課題的特點及發(fā)展趨勢21.5 現(xiàn)行研究存在的問題及解決辦法31.5.1 需求分析問題31.5.2 系統(tǒng)設(shè)計問題31.5.4 代碼實現(xiàn)問題31.5.5 界面設(shè)計問題31.6 本課題要達(dá)到的設(shè)計目標(biāo)3第二章 系統(tǒng)分析42.1可行性分析42.1.1 技術(shù)可行性42.1.2 操作可行性42.2 采用的關(guān)鍵技術(shù)介紹42.2
2、.1 JAVA多媒體技術(shù)42.2.2 JAVA 網(wǎng)絡(luò)編程技術(shù)52.3 系統(tǒng)需求分析6第三章 系統(tǒng)概要設(shè)計73.1 系統(tǒng)總體設(shè)計73.1.1 運行環(huán)境73.1.2 系統(tǒng)流程73.1.3 系統(tǒng)結(jié)構(gòu)83.2 系統(tǒng)接口的概要設(shè)計93.2.1 服務(wù)器端設(shè)計93.2.2 客戶端設(shè)計93.3 系統(tǒng)出錯處理設(shè)計103.3.1 出錯信息及處理方法103.3.2系統(tǒng)維護(hù)設(shè)計10第四章 系統(tǒng)詳細(xì)設(shè)計114.1 文本聊天模塊的詳細(xì)設(shè)計114.2 視頻通信模塊的詳細(xì)設(shè)計124.2.1 網(wǎng)絡(luò)視頻會議系統(tǒng)結(jié)構(gòu)的詳細(xì)設(shè)計124.2.2 視音頻傳輸?shù)脑敿?xì)設(shè)計134.2.2 多播的詳細(xì)設(shè)計144.3 系統(tǒng)界面的詳細(xì)設(shè)計14第五章
3、 系統(tǒng)實現(xiàn)155.1 系統(tǒng)開發(fā)環(huán)境155.2 系統(tǒng)實現(xiàn)155.2.1 服務(wù)器端套接字建立155.2.2 客戶端套接字建立155.2.3 視音頻發(fā)送165.2.4 視音頻接收17第六章 性能測試與分析186.1 測試實例(測試集)的研究與選擇186.2 性能分析18第七章 課程設(shè)計總結(jié)197.1 系統(tǒng)總結(jié)197.1.1 系統(tǒng)特點介紹197.1.2 系統(tǒng)存在的問題197.2 系統(tǒng)改進(jìn)建議或設(shè)想197.3 課程設(shè)計心得體會19參考文獻(xiàn)2121第一章 概述1.1 本課題的研究背景隨著人們對視頻和音頻信息的需求愈來愈強(qiáng)烈,追求遠(yuǎn)距離的視音頻的同步交互成為新的時尚。近些年來,依托計算機(jī)技術(shù)、通信技術(shù)和網(wǎng)絡(luò)
4、條件的發(fā)展,集音頻、視頻、圖像、文字、數(shù)據(jù)為一體的多媒體信息,使越來越多的人開始通過互聯(lián)網(wǎng)享受到網(wǎng)上生活、遠(yuǎn)程醫(yī)療、遠(yuǎn)程通訊的樂趣,縮短了時區(qū)和地域的距離。遠(yuǎn)程通信的各種優(yōu)勢給人們帶來的方便也促使人們對這一領(lǐng)域進(jìn)行更加深入的探索。基于不同平臺以及不同開發(fā)工具的網(wǎng)絡(luò)視頻會議系統(tǒng)層出不窮。視頻會議系統(tǒng)在我國開始發(fā)展的初期,政府部門的應(yīng)用就占據(jù)了重要位置,覆蓋中央到直轄市和各省會城市的國家公眾視頻會議骨干網(wǎng)已經(jīng)完工。自1994年9月投入使用以來,國務(wù)院等機(jī)關(guān)先后利用該網(wǎng)召開了三百多次全國范圍的可視通訊會議。整個系統(tǒng)運行情況良好,得到了國家領(lǐng)導(dǎo)人和各部委領(lǐng)導(dǎo)的高度贊揚。近年來隨著電子政務(wù)工程的逐步推進(jìn)
5、,政府部門更加關(guān)注視頻會議系統(tǒng)建設(shè)。在經(jīng)濟(jì)發(fā)達(dá)地區(qū)(例如浙江、山東、廣東),視頻會議網(wǎng)已覆蓋到地市級城市,有的甚至覆蓋到縣一級。除各級政府之外,其它諸如檢察院、法院、公安和和水利等職能部門也是視頻會議系統(tǒng)的重要用戶。視頻會議系統(tǒng)還更廣泛的應(yīng)用于現(xiàn)代企業(yè)中。信息技術(shù)的迅猛發(fā)展,改變了各行各業(yè)的傳統(tǒng)工作模式。信息的無限量擴(kuò)大,交通工具的便捷,互聯(lián)網(wǎng)技術(shù)的充分應(yīng)用等導(dǎo)致了行業(yè)間競爭的全球化,這就要求現(xiàn)代部門、企業(yè)要具備更加靈敏的神經(jīng),更扁平化的管理,更快速的反應(yīng)和決策,更貼切的市場宣傳和服務(wù)。所有這一切是由于信息技術(shù)的發(fā)展帶來的,同樣也要求有先進(jìn)的信息技術(shù)來提高部門、企業(yè)的競爭力。視頻會議系統(tǒng)的可以
6、跨越空間距離、靈活多樣的面對面的交互,適應(yīng)現(xiàn)代社會的方便、快捷、高效、快節(jié)奏,它為用戶帶來的經(jīng)濟(jì)效益,使視頻會議系統(tǒng)的使用正在向各行各業(yè)滲透,給這一市場注入了新的活力。1.2 本課題的研究意義從實用方面:視頻會議系統(tǒng)是指通過現(xiàn)有的各種電氣通訊傳輸媒體,將人物的靜態(tài)/動態(tài)圖像、語音、文字、圖片等多種信息分送到各個用戶的計算機(jī)上,使得在地理上分散的用戶可以共聚一處,通過圖形、聲音等多種方式交流信息,增加雙方對內(nèi)容的理解能力。視頻會議系統(tǒng)對于減少差旅費用等機(jī)構(gòu)開支;提高機(jī)構(gòu)運作效率;提高機(jī)構(gòu)形象有利于加強(qiáng)對外交往;有利于政策方針的迅速準(zhǔn)確傳達(dá);有利于廣泛收集意見;有利于加強(qiáng)內(nèi)部交流;員工培訓(xùn)等方面帶
7、來巨大的直接和間接效益。由于視頻會議系統(tǒng)的這些優(yōu)點,使得視頻會議系統(tǒng)備受關(guān)注。并且已經(jīng)有越來越多的人利用這種方式進(jìn)行交流溝通,不僅方便而且拉近了人與人之間的距離?,F(xiàn)在的一些軟件像QQ以及MSN等軟件為人們的視頻聊天提供了許多方便。從學(xué)習(xí)知識方面:通過做這樣一個課題,對學(xué)習(xí)無疑是十分有益的。尤其在學(xué)習(xí)了JAVA編程之后更有欲望對其進(jìn)行深層次的學(xué)習(xí),并且可以結(jié)合各方面的知識進(jìn)行多方面的學(xué)習(xí),積累更多知識。1.3 本報告的目的、內(nèi)容及作者的主要貢獻(xiàn)1.3.1 本報告的目的本報告對基于JAVA的點對點視頻會議系統(tǒng)做出詳細(xì)地需求分析,并對其設(shè)計與實現(xiàn)過程進(jìn)行詳細(xì)的論述。目的在于闡明本視頻會議系統(tǒng)如何能夠
8、實現(xiàn)多人在線舉行會議。1.3.2 本報告的內(nèi)容本報告內(nèi)容上從視頻會議的開發(fā)背景開始論述,研究并確定了開發(fā)環(huán)境,并對該視頻會議系統(tǒng)的需求做出了詳細(xì)的分析,根據(jù)其需求及開發(fā)工具的功能特性確立課題的設(shè)計方案及開發(fā)策略。并對課題的概要設(shè)計、詳細(xì)設(shè)計以及代碼實現(xiàn)過程和后期的測試過程,須改進(jìn)的部分都進(jìn)行了詳細(xì)的說明。1.3.3 作者主要貢獻(xiàn)本報告中,作者的主要貢獻(xiàn):對該視頻會議系統(tǒng)進(jìn)行可行性分析、需求分析、功能模塊設(shè)計、各個功能的代碼實現(xiàn)、良好用戶操作界面的設(shè)計與實現(xiàn)、對各功能實現(xiàn)結(jié)果的測試等。1.4 國內(nèi)外相近研究課題的特點及發(fā)展趨勢視頻會議是近幾年才發(fā)展起來的多媒體通信技術(shù)。視頻會議可實時傳送聲音、圖
9、象;使每位與會者都有身臨其境的感覺。此外,它還提供文件傳真、靜止圖文傳送、白板等一系列輔助服務(wù)項目。視頻會議最初是點對點的會議傳輸(point to point),現(xiàn)已發(fā)展到一點對多點(point to multi points)及多點到多點(multi points to multi points)階段。 視頻會議系統(tǒng)的關(guān)鍵技術(shù) :1)多媒體信息處理技術(shù)2)寬帶網(wǎng)絡(luò)技術(shù)3)分布式處理技術(shù)視頻會議實現(xiàn)點對點、一點對多點、多點之間的實時同步交互通信。 視頻會議的發(fā)展趨勢:1. 系統(tǒng)功能多元化具有圖文同傳功能:除視音頻外,可以方便地傳送和顯示電腦文檔用于培訓(xùn)、匯報、交流;視頻會議與TEL系統(tǒng)渾然一
10、體:可方便接入會議TEL系統(tǒng),通過TEL、手機(jī)也可加入會議等。2. 系統(tǒng)組網(wǎng)多樣化,有網(wǎng)絡(luò)就能開會。3. 圖像清晰化:視頻會議需要更優(yōu)異、更清晰、更成熟的圖像編解碼技術(shù)。4. 使用、維護(hù)簡捷化:易于使用,可自行組織、控制會議;進(jìn)行遠(yuǎn)程管理、遠(yuǎn)程維護(hù)、升級,降低維護(hù)成本;更新設(shè)計,大幅提高系統(tǒng)穩(wěn)定性。1.5 現(xiàn)行研究存在的問題及解決辦法1.5.1 需求分析問題開始對課題所研究的問題不是很明確,如其應(yīng)用范圍,具體功能等。通過老師的講解及指導(dǎo)和查相關(guān)資料得以解決。 由于幾乎沒有使用過視頻會議,對其的了解也不太深刻,老師給講解了一些內(nèi)容,在網(wǎng)上下載了一個視頻會議系統(tǒng)的軟件試用了一下,并查閱了許多相關(guān)資
11、料,這才可以對該課題進(jìn)行需求分析。1.5.2 系統(tǒng)設(shè)計問題 在該視頻會議系統(tǒng)的設(shè)計上遇到了很多問題:如何準(zhǔn)確的定位網(wǎng)絡(luò)上一臺或多臺主機(jī),如何找到主機(jī)后如何可靠高效的進(jìn)行數(shù)據(jù)傳輸;建立網(wǎng)絡(luò)之間會話;圖像的采集、壓縮及編碼;網(wǎng)絡(luò)視頻的傳輸;系統(tǒng)的界面設(shè)計等問題。1.5.4 代碼實現(xiàn)問題 在具體的功能實現(xiàn)上,編碼遇到了極大的困難。因為該課題需要用到很多以前從未接觸到的知識,如需要用JMF,RTP協(xié)議傳輸視頻,JAVA socket編程,如何采集圖像等知識。在用JAVA語言編碼過程中,因編程規(guī)范及其他各種語法問題出現(xiàn)了很多錯誤,通過老師指導(dǎo)和查閱資料得以解決。1.5.5 界面設(shè)計問題本課題采用ecli
12、pse開發(fā)平臺,裝載ve插件后,用其進(jìn)行圖形界面的設(shè)計和實現(xiàn)。并且在試用所下載的視頻會議系統(tǒng)后,有很大心得,根據(jù)其界面的合理性,模仿設(shè)計本課題中界面。1.6 本課題要達(dá)到的設(shè)計目標(biāo)本課題致力于實現(xiàn)實現(xiàn)點對點的視頻傳輸并完成基本功能(如動態(tài)視頻傳輸、文本傳輸?shù)?,提供多人同時在線舉行會議。包含以下內(nèi)容:1.動態(tài)視頻傳輸:視頻雙方可以看到對方的動態(tài)圖像。2.聲音傳輸:在視頻或非視頻狀態(tài)下可以聽到對方的聲音,進(jìn)行語音交流。3.文本傳輸:可以通過文本輸入進(jìn)行交流。第二章 系統(tǒng)分析本課題為實現(xiàn)多人在線同時舉行會議的功能,對該視頻會議系統(tǒng)做了詳細(xì)的系統(tǒng)分析。包括系統(tǒng)的可行性分析、對開發(fā)用到的關(guān)鍵技術(shù)的介紹
13、以及系統(tǒng)的需求分析。2.1可行性分析2.1.1 技術(shù)可行性網(wǎng)絡(luò)視頻會議是順應(yīng)市場的需求而設(shè)計的。采用JAVA 編程語言,用eclipse開發(fā)平臺實現(xiàn)。用到多媒體技術(shù)(JAVA 多媒體框架JMF),視頻和音頻用TRP協(xié)議傳輸,用到Socket編程技術(shù),多播技術(shù)。網(wǎng)絡(luò)視頻會議首先是基于網(wǎng)絡(luò)傳輸?shù)?那么就必然要依托于JAVA網(wǎng)絡(luò)編程的相關(guān)知識。在這基礎(chǔ)上,由于相關(guān)音頻、視頻,所以還要涉及到JAVA的多媒體技術(shù)的相關(guān)知識,即JMF (Java Media Framework)。利用JAVA的這個組件,我們可以方便的處理多媒體文件,并基于RTP協(xié)議進(jìn)行實時傳輸。2.1.2 操作可行性系統(tǒng)運行于Windo
14、ws環(huán)境,其用戶操作界面友好,便于操作,適合視頻會議流程。系統(tǒng)的基本操作如下:1啟動服務(wù)器;2用戶連接到服務(wù)器;3進(jìn)行視頻連接;4舉行會議;5會議完畢,退出系統(tǒng)。2.2 采用的關(guān)鍵技術(shù)介紹2.2.1 JAVA多媒體技術(shù)JAVA多媒體技術(shù)的核心是Java媒體框架 JMF(Java Media Framework)。JMF中包含了許多用于處理多媒體的API,它是一個很好的多媒體編程工具,同時也是一個相當(dāng)復(fù)雜的系統(tǒng)。JMF的主要應(yīng)用功能之一是多媒體數(shù)據(jù)流在網(wǎng)絡(luò)中的實時傳輸,其RTP包中提供的RTP包中提供的RTPManager(RTP管理器)、TrackContol(軌道控制器)、SendStrea
15、m(發(fā)送數(shù)據(jù)流)、ReceiveStream(接收數(shù)據(jù)流)、InetAddress(IPAdress)和SessionAddress(會話Adress)等類使得編寫網(wǎng)絡(luò)實時數(shù)據(jù)傳輸變得容易,基于RTP協(xié)議的RTP應(yīng)用程序框架為實現(xiàn)流媒體在網(wǎng)絡(luò)中實時傳輸提供了Java程序框架,應(yīng)用它可方便的實現(xiàn)多媒體數(shù)據(jù)流在網(wǎng)絡(luò)中的實時傳輸。實時傳輸協(xié)議RTP是在Internet網(wǎng)上針對多媒體數(shù)據(jù)流的一種傳輸協(xié)議,RTP被定義為在一對一獲一對多的傳輸情況下工作的,其目的是提供時間信息和實現(xiàn)多媒體數(shù)據(jù)流的同步。RTP由RTP和RTCP(實時控制協(xié)議)兩個部分組成。RTP本身并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機(jī)
16、制,可不提供流量控制或擁塞控制,它依靠RTCP提供這些服務(wù)。2.2.2 JAVA 網(wǎng)絡(luò)編程技術(shù)網(wǎng)絡(luò)編程的目的就是指直接或間接地通過網(wǎng)絡(luò)協(xié)議與其他計算機(jī)進(jìn)行通訊。網(wǎng)絡(luò)編程中有兩個主要的問題,一個是如何準(zhǔn)確的定位網(wǎng)絡(luò)上一臺或多臺主機(jī),另一個就是找到主機(jī)后如何可靠高效的進(jìn)行數(shù)據(jù)傳輸。在TCP/IP協(xié)議中IP層主要負(fù)責(zé)網(wǎng)絡(luò)主機(jī)的定位,數(shù)據(jù)傳輸?shù)穆酚?由IPAdress可以唯一地確定Internet上的一臺主機(jī)。而TCP層則提供面向應(yīng)用的可靠的或非可靠的數(shù)據(jù)傳輸機(jī)制,這是網(wǎng)絡(luò)編程的主要對象,一般不需要關(guān)心IP層是如何處理數(shù)據(jù)的。目前較為流行的網(wǎng)絡(luò)編程模型是客戶機(jī)/服務(wù)器(C/S)結(jié)構(gòu)。即通信雙方一方作為
17、服務(wù)器等待客戶提出請求并予以響應(yīng)。客戶則在需要服務(wù)時向服務(wù)器提出申請。服務(wù)器一般作為守護(hù)進(jìn)程始終運行,監(jiān)聽網(wǎng)絡(luò)端口,一旦有客戶請求,就會啟動一個服務(wù)進(jìn)程來響應(yīng)該客戶,同時自己繼續(xù)監(jiān)聽服務(wù)端口,使后來的客戶也能及時得到服務(wù)。數(shù)據(jù)在Internet中是以有限大小的包形式傳輸?shù)?這些包稱為數(shù)據(jù)報(datagram).但是,由于數(shù)據(jù)報長度有限,通常必須將數(shù)據(jù)分解為多個包,在目的地再重新組合。有可能一包或多個包在傳輸中丟失或遭到破壞。由于網(wǎng)絡(luò)視頻會議的實時性要求,不可能讓視頻傳輸?shù)拿恳回懚紲?zhǔn)確無誤。而TCP協(xié)議正是為數(shù)據(jù)可靠傳輸而設(shè)計的。那么選擇UDP協(xié)議,即用戶數(shù)據(jù)報協(xié)議(User Datagram
18、Protocol,UDP),就成為一種必然。Socket是網(wǎng)絡(luò)上運行的兩個程序間雙向通訊的一端,它既可以接受請求,也可以發(fā)送請求,利用它可以較為方便的編寫網(wǎng)絡(luò)上數(shù)據(jù)的傳遞。在Java中,有專門的Socket類來處理用戶的請求和響應(yīng)。利用Socket類的方法,就可以實現(xiàn)兩臺計算機(jī)之間的通訊。在Java中Socket可以理解為客戶端或者服務(wù)器端的一個特殊的對象,這個對象有兩個關(guān)鍵的方法,一個是getInputStream方法,另一個是getOutputStream方法。getInputStream方法可以得到一個輸入流,客戶端的Socket對象上的getInputStream方法得到的輸入流其實就
19、是從服務(wù)器端發(fā)回的數(shù)據(jù)流。GetOutputStream方法得到一個輸出流,客戶端Socket對象上的getOutputStream方法返回的輸出流就是將要發(fā)送到服務(wù)器端的數(shù)據(jù)流,(其實是一個緩沖區(qū),暫時存儲將要發(fā)送過去的數(shù)據(jù))。多播通信是一類特殊的IPAdress(D類IPAdress)這些IPAdress并不和任何主機(jī)關(guān)聯(lián),而是專門為多播通信保留下來的,Adress范圍224.0.0.1-239.255.255.255這間,其中224.0.0.1-224.0.0.255是留作為多播路由信息使用的。此外,所有其它D類IPAdress都可以隨便進(jìn)行通信。2.3 系統(tǒng)需求分析由于政府部門和企事業(yè)
20、單位對視頻會議系統(tǒng)有強(qiáng)烈需求,并且人們對視頻和音頻信息的需求愈來愈強(qiáng)烈,所以有必要開發(fā)一個網(wǎng)絡(luò)視頻會議系統(tǒng)。并且近些年來,依托計算機(jī)技術(shù)、通信技術(shù)和網(wǎng)絡(luò)條件的發(fā)展,集音頻、視頻、圖像、文字、數(shù)據(jù)為一體的多媒體信息,使越來越多的人開始通過互聯(lián)網(wǎng)享受到網(wǎng)上生活的樂趣,縮短了時區(qū)和地域的距離。遠(yuǎn)程通信的各種優(yōu)勢給人們帶來的方便也促使人們對這一領(lǐng)域進(jìn)行更加深入的探索。現(xiàn)代社會中信息的無限量擴(kuò)大,交通工具的便捷,互聯(lián)網(wǎng)技術(shù)的充分應(yīng)用等導(dǎo)致了行業(yè)間競爭的全球化,這就要求現(xiàn)代部門、企業(yè)要具備更加靈敏的神經(jīng),更扁平化的管理,更快速的反應(yīng)和決策,更貼切的市場宣傳和服務(wù)。所有這一切是由于信息技術(shù)的發(fā)展帶來的,同樣
21、也要求有先進(jìn)的信息技術(shù)來提高部門、企業(yè)的競爭力。視頻會議系統(tǒng)的可以跨越空間距離、靈活多樣的面對面的交互,適應(yīng)現(xiàn)代社會的方便、快捷、高效、快節(jié)奏,它為用戶帶來的經(jīng)濟(jì)效益,使視頻會議系統(tǒng)的使用正在向各行各業(yè)滲透。視頻會議系統(tǒng)是支持人們遠(yuǎn)距離進(jìn)行實時信息交流、開展協(xié)同工作的應(yīng)用系統(tǒng)。視頻會議系統(tǒng)實時傳輸視頻與音頻信息,使協(xié)作成員可以遠(yuǎn)距離進(jìn)行直觀、真實的視音頻交流。另一方面,利用多媒體技術(shù)的支持,視頻會議系統(tǒng)可以幫助使用者對工作中各種信息進(jìn)行處理,如共享數(shù)據(jù)、共享應(yīng)用程序等,從而構(gòu)造出一個多人共享的工作空間。所以,開發(fā)一個網(wǎng)絡(luò)視頻會議系統(tǒng)是很有必要的。第三章 系統(tǒng)概要設(shè)計3.1 系統(tǒng)總體設(shè)計3.1.
22、1 運行環(huán)境操作系統(tǒng):Windows 20XX/XP/20XX 等安裝JDK安裝JMF安裝eclipse安裝攝像頭3.1.2 系統(tǒng)流程 服務(wù)器端流程如圖3.1所示: 處理會議過程開 始開啟服務(wù)器開啟失敗等待用戶連接 關(guān)閉服務(wù)器結(jié) 束連接成功圖3.1 服務(wù)器端流程圖 客戶端流程如圖3.2 所示:結(jié) 束開 始登 錄登錄失敗視頻連接連接失敗 舉行會議 進(jìn)入界面視頻 聊天 退 出共享連接成功登錄成功圖3.2 客戶端流程圖3.1.3 系統(tǒng)結(jié)構(gòu)通過學(xué)習(xí)和研究,我們通過多播技術(shù)實現(xiàn)了多點對多點的視頻會議系統(tǒng)。整個系統(tǒng)包括這樣幾個模塊:文本聊天模塊:該功能是網(wǎng)絡(luò)視頻會議的最基本的功能。通過該模塊實現(xiàn)了會議成員
23、的聊天通信。首先,每個會議職員通過與服務(wù)器連接加入到會議組,同時通過給自己取昵稱將自己的昵稱發(fā)送給服務(wù)器,讓會議組的每個成員了解自己的身份。會議成員在聊天的時候不是將文本發(fā)送給某個人,而是發(fā)送給整個會議組。視頻通信模塊:該功能利用JMF軟件開發(fā)包,基于RTP協(xié)議實時發(fā)送和接受視頻流。并且利用JMF多媒體組件構(gòu)造播放器,進(jìn)行實時播放。在實現(xiàn)了點對點的基本視頻傳輸?shù)幕A(chǔ)上,我們應(yīng)用了多播技術(shù)。當(dāng)某個會議成員開始進(jìn)行視頻連接以后,他能通過視頻會議系統(tǒng)看到所有其他已經(jīng)建立視頻連接會議成員。3.2 系統(tǒng)接口的概要設(shè)計3.2.1 服務(wù)器端設(shè)計系統(tǒng)的服務(wù)器端的設(shè)計只需顯示在線的用戶,簡單設(shè)計圖示如下: 圖3
24、.3 系統(tǒng)服務(wù)器端設(shè)計3.2.2 客戶端設(shè)計系統(tǒng)客戶端的設(shè)計如下:1. 顯示在線列表;2. 顯示界面中用戶視頻;3. 用戶聊天文本框;4. 視頻連接及退出按鈕。簡單設(shè)計圖示如下: 圖3.4 系統(tǒng)客戶端設(shè)計3.3 系統(tǒng)出錯處理設(shè)計3.3.1 出錯信息及處理方法系統(tǒng)輸出信息的形式、含意及處理方法。見表3.1。表3.1 出錯信息及處理方法故障情況系統(tǒng)提示信息內(nèi)容與形式處理方法 開啟服務(wù)器失敗提示失敗信息“開啟服務(wù)器失敗,請重試”彈出對話框 重新開啟服務(wù)器登錄失敗提示失敗信息“登錄失敗,請重試”彈出對話框重新登錄連接視頻失敗提示失敗信息“視頻連接失敗”彈出對話框重新連接視頻3.3.2 系統(tǒng)維護(hù)設(shè)計 為
25、了保證系統(tǒng)的穩(wěn)定運行,本系統(tǒng)在設(shè)計時考慮到了系統(tǒng)的安全性、可靠性、兼容性、可擴(kuò)展性等因素。了很多驗證條件,盡量保證信息的合法性與正確性,是系統(tǒng)能夠穩(wěn)定運行。此外本系統(tǒng)的設(shè)計還保證了系統(tǒng)功能的可擴(kuò)展性。 安全性:在視頻會議系統(tǒng)前端安置加密機(jī)或者直接使用加密網(wǎng)卡可以提高在傳輸過程中的安全性。加密設(shè)備可直接提供加密能力,從而實現(xiàn)用戶的身份驗證以及未經(jīng)授權(quán)的數(shù)據(jù)訪問和惡意侵犯。 可靠性:該系統(tǒng)設(shè)計的合理性保證了可靠穩(wěn)定的運行,支持當(dāng)前大多數(shù)硬件平臺,核心線程優(yōu)先保護(hù)、數(shù)據(jù)流容錯的設(shè)計思路使系統(tǒng)可更加穩(wěn)定的運轉(zhuǎn)。 兼容性:該系統(tǒng)擁有開放的集成接口,可以非常靈活的與用戶集成,并滿足用戶的需要,實現(xiàn)其功能。
26、 可擴(kuò)展性:該系統(tǒng)可進(jìn)行再擴(kuò)展,在此基礎(chǔ)上擴(kuò)展為一點對多點,多點對多點的視頻會議系統(tǒng)。第四章 系統(tǒng)詳細(xì)設(shè)計本系統(tǒng)的詳細(xì)設(shè)計根據(jù)概要設(shè)計中所劃分的各個功能模塊進(jìn)行詳細(xì)的闡述:4.1 文本聊天模塊的詳細(xì)設(shè)計本系統(tǒng)要運用Java網(wǎng)絡(luò)編程中Socket層次,即傳統(tǒng)網(wǎng)絡(luò)編程常采用的方式,通過Client/Server(客戶端/服務(wù)器端)機(jī)構(gòu)的應(yīng)用程序之間建立Socket套接字連接,然后在連接之上進(jìn)行數(shù)據(jù)通信。通過SocketChannel建立基于UDP的無阻塞連接。創(chuàng)建一個無阻塞服務(wù)器,讓每個客戶端與之相連。某個客戶端將文本消息發(fā)送給無阻塞的服務(wù)器,服務(wù)器在將這條文本消息組播給各個與之相連的客戶端。數(shù)據(jù)
27、在Internet中是以有限大小的包形式傳輸?shù)?這些包稱為數(shù)據(jù)報(datagram).但是,由于數(shù)據(jù)報長度有限,通常必須將數(shù)據(jù)分解為多個包,在目的地再重新組合。有可能一包或多個包在傳輸中丟失或遭到破壞。由于網(wǎng)絡(luò)視頻會議的實時性要求,不可能讓視頻傳輸?shù)拿恳回懚紲?zhǔn)確無誤。而TCP協(xié)議正是為數(shù)據(jù)可靠傳輸而設(shè)計的。那么選擇UDP協(xié)議,即用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP),就成為一種必然?;赨DP的Socket編程流程圖如下:socket()sendto()recvfrom()close()socket()sendto()recvfrom()close()請求數(shù)據(jù)應(yīng)
28、答數(shù)據(jù)處理請求阻塞到收到請求bind() 圖4.1 數(shù)據(jù)報套接字流程圖服務(wù)器:serverSocketChannel = ServerSocketChannel.open();/打開連接通道serverSocketChannel.socket().bind(new InetSocketAddress(12345);/綁定IP與端口號getConnection();/接收連接請求客戶端:socketChannel = SocketChannel.open();打開連接通道socketChannel.connect(new InetSocketAddress(InetAddress.getByNa
29、me(serverAddress),12345);/連接到服務(wù)器receiveMessage = new ReceivingThread();/構(gòu)造接收信息線程receiveMessage.start();/運行線程socketChannel.write(writeBuffer);/往通道里寫入消息socketChannel.read(readBuffer);/讀取通道中消息4.2 視頻通信模塊的詳細(xì)設(shè)計4.2.1 網(wǎng)絡(luò)視頻會議系統(tǒng)結(jié)構(gòu)的詳細(xì)設(shè)計網(wǎng)絡(luò)視頻會議系統(tǒng)其根本目的是會議。會議的基本特征就是,參與會議的每個成員都可以了解到其他成員的狀況,每個成員必須到場,然后進(jìn)行交流,并且每個成員都應(yīng)該
30、看到所有的交流內(nèi)容。在這個根本目的完成的基礎(chǔ)上,才可以使網(wǎng)絡(luò)視頻會議的特點得以發(fā)揮。所以,我們的視頻會議系統(tǒng)采用了多播的方法,使得會議的每個成員都可以得到會議的所有信息。通過對視頻會議基本特點的分析,系統(tǒng)結(jié)構(gòu)圖如下圖所示:交互傳流媒體/接流媒體發(fā)送信息/接收信息交互播放器多媒體文件讀組裝播放網(wǎng)絡(luò)多播傳輸聊天信息讀顯示聊天信息網(wǎng)絡(luò)多播傳輸網(wǎng)絡(luò)視頻會議系統(tǒng)圖4.2 網(wǎng)絡(luò)視頻會議系統(tǒng)結(jié)構(gòu)圖4.2.2 視音頻傳輸?shù)脑敿?xì)設(shè)計使用JMF API的RTP協(xié)議實現(xiàn)網(wǎng)絡(luò)多媒體程序,可以分為兩個部分,一部分是通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的主機(jī)端程序,另一部分是接收數(shù)據(jù)的客戶端程序。在JMF API中定義了幾個與RTP有關(guān)的包
31、,即javax.media.rtp、javax.media.rtp.enent、javax.media.rtp.rtcp登包,通過這些包提供的API,可以實現(xiàn)RTP數(shù)據(jù)流的傳輸、接受和回放?;贘MF多媒體數(shù)據(jù)流RTP傳輸、接受和回放過程圖如下:圖4.3 基于JMF多媒體數(shù)據(jù)流RTP傳輸、接受和回放過程數(shù)據(jù)可以來自于多媒體文件,如視頻文件,也可以來自于音視頻采集設(shè)備,如聲卡、攝像頭等。這些數(shù)據(jù)源的位置不同,格式不同,JMF通過一個稱為媒體定位器(MediaLocator)的類對相應(yīng)的數(shù)據(jù)源進(jìn)行定位,MediaLocator對象內(nèi)仔儲了數(shù)據(jù)源的位置信息。JMF管理器(Manager)根據(jù)媒體定位
32、器提供的信息創(chuàng)建數(shù)據(jù)源。這個數(shù)據(jù)源和文件、攝像頭等物理數(shù)據(jù)源不同,是一個抽象的概念,是多種不同類型數(shù)據(jù)源的抽象。這樣,JMF可以隱藏底層細(xì)節(jié),使編程者在編程過程中不再考慮數(shù)據(jù)的具體來源和位置,只需考慮數(shù)據(jù)的格式、速率等信息就行了。數(shù)據(jù)源生成后 ,可以直接交給播放器(Player),設(shè)定格式后就可以在本機(jī)播放了。但若要將數(shù)據(jù)流存儲成其他格式的文件或者通過 RTP協(xié)議在網(wǎng)絡(luò)上傳輸 ,則需要對其進(jìn)行再處理。再處理工作由處理器(Processor)完成 ,處理后的數(shù)據(jù)源可以存儲,也可以在網(wǎng)絡(luò)上傳輸。通過 RTP進(jìn)行傳輸前 ,需要建立會話管理器(SessionManager),建立 RTP會話后再開始發(fā)
33、送流,發(fā)送時會打開兩個端口,一個用于傳輸 RTP數(shù)據(jù)流;另一個用來傳輸 RTCP包。多媒體數(shù)據(jù)流的接收過程是發(fā)送的逆過程。由RTP信道獲得的數(shù)據(jù)流作為接收端的數(shù)據(jù)源,對數(shù)據(jù)源處理后便可以實現(xiàn)數(shù)據(jù)流的回放、存儲,甚至再發(fā)送。詳細(xì)設(shè)計傳輸過程:dsVideo = createDataSource(vf);/創(chuàng)建視頻數(shù)據(jù)源dsAudio = createDataSource(af);/創(chuàng)建音頻數(shù)據(jù)源devices = CaptureDeviceManager.getDeviceList(format);/得到類型為format的設(shè)備的清單,存放在表devices中ds = Manager.creat
34、eDataSource(ml);/通過媒體定位器創(chuàng)建數(shù)據(jù)源RTPTransmit rtpTransmit = new RTPTransmit(processor,ipAddr,port);/構(gòu)造RTP會話result = createProcessor();/ 產(chǎn)生一個處理器result = createTransmitter();產(chǎn)生RTP會話,將處理器輸出的數(shù)據(jù)傳給指定的IPAdress的指定的端口號processor.start();/ 讓處理器開始傳輸4.2.2 多播的詳細(xì)設(shè)計多播基本思想是一個源IP主機(jī)只進(jìn)行一次發(fā)送,多個接收者(目標(biāo) IP主機(jī))可以接收到相同數(shù)據(jù)的一個拷貝。但是多個
35、接收者必須都注冊加入同一多播組。IP多播服務(wù)是一種開放的服務(wù)模型,任何主機(jī)可以隨時加入或退出某個多播組。利用這種思想,可以實現(xiàn)會議中的多點對多點的視頻傳輸,已達(dá)到組織會議的目的。多播系統(tǒng)結(jié)構(gòu)圖:發(fā)送端接收端網(wǎng)絡(luò)加入多播組監(jiān)聽按鈕并發(fā)送出數(shù)據(jù)監(jiān)聽數(shù)據(jù)的到來并接收顯示數(shù)據(jù)圖4.4 多播系統(tǒng)結(jié)構(gòu)圖多播實現(xiàn)過程:group = InetAddress.getByName(MuiltAddr); /設(shè)置組播Adresssocket = new MulticastSocket(port); /創(chuàng)建MulticastSocket類并將端口與之關(guān)聯(lián)socket.joinGroup(group); /加入此組播
36、組4.3 系統(tǒng)界面的詳細(xì)設(shè)計本系統(tǒng)在進(jìn)行界面設(shè)計的時候考慮了系統(tǒng)的功能,對各功能模塊進(jìn)行詳細(xì)合理的布局:1. 把一些功能加到界面中的菜單中,有連接服務(wù)器,連接視頻,斷開連接,退出等子菜單項。2. 在界面中添加在線用戶列表框,用以顯示在線的用戶。3. 在界面中用一個大的Panel 裝載舉行會議時的各個用戶的視頻框。4. 在界面中添加實現(xiàn)簡單聊天室功能的聊天文本框。5. 在界面底端有一些功能按鈕,如連接視頻,發(fā)送信息等。第五章 系統(tǒng)實現(xiàn)5.1 系統(tǒng)開發(fā)環(huán)境系統(tǒng):Microsoft Windows XP Professional Service Pack 2開發(fā)語言:JAVA編程環(huán)境:Eclipse
37、JMF版本:JMF 2.1.1JDK版本:JDK 5.0Eclipse版本:Eclipse 3.25.2 系統(tǒng)實現(xiàn)5.2.1 服務(wù)器端套接字建立數(shù)據(jù)通訊是雙向的,客戶端通過套接字請求數(shù)據(jù)通訊后,服務(wù)器端需要有一個響應(yīng)客戶端請求通訊的服務(wù)程序,該服務(wù)器程序應(yīng)用ServerSocket類完成與客戶端的通訊。ServerSocket類用來監(jiān)聽和響應(yīng)客戶端的連接請求,并接受客戶端發(fā)送的數(shù)據(jù)信息。ServerSocket類在服務(wù)器端等待其他機(jī)器同它的連接,一旦客戶端程序建立一個套接字連接,ServerSocket類就會通過accept()方法返回一個對應(yīng)的服務(wù)器端套接字對象,以便進(jìn)行直接通訊。從兩臺計算
38、機(jī)連接成功起,服務(wù)器端與客戶端就得到了一個真正的“套接字-套接字”連接,此時利用Socket類中的getInputStream()及getOutputStream()方法從每端的套接字產(chǎn)生對應(yīng)的InputStream和OutputStream對象,并將套接字?jǐn)?shù)據(jù)流封裝到緩沖區(qū)內(nèi)以便進(jìn)行兩臺機(jī)器之間的數(shù)據(jù)通訊。serverSocketChannel = ServerSocketChannel.open();/打開連接通道serverSocketChannel.socket().bind(new InetSocketAddress(12345);/綁定IP與端口號getConnection();/
39、接收連接請求charSet = Charset.forName(UTF-8);/開啟服務(wù)器套接字通道serverSocketChannel = ServerSocketChannel.open();serverSocketChannel.socket().bind(newInetSocketAddress(12345); serverSocketChannel.configureBlocking(false);/設(shè)置阻塞模式為非阻塞模式等待一個連接5.2.2 客戶端套接字建立客戶端使用Socket類的方法建立(類似于服務(wù)器端),客戶端向套接字對象中的數(shù)據(jù)流輸出和獲取數(shù)據(jù)。客戶端程序試圖與服務(wù)器
40、之間在Socket層次上建立一個連接,通過套接字輸入流讀取方法從套接字?jǐn)?shù)據(jù)流中獲取服務(wù)器信息,以及寫入數(shù)據(jù)到套接字輸出流中向服務(wù)器發(fā)送信息,并且等待服務(wù)器的答復(fù)。如果連接成功,則該客戶端程序通過套接字與服務(wù)器可以進(jìn)行正常的數(shù)據(jù)交換。socketChannel = SocketChannel.open();打開連接通道socketChannel.connect(new InetSocketAddress(InetAddress.getByName(serverAddress),12345);/連接到服務(wù)器receiveMessage = new ReceivingThread();/構(gòu)造接收信息
41、線程receiveMessage.start();/運行線程socketChannel.write(writeBuffer);/往通道里寫入消息socketChannel.read(readBuffer);/讀取通道中消息5.2.3 視音頻發(fā)送視音頻數(shù)據(jù)以RTP實時流的形式發(fā)送出去,通過會話管理器(Session Manager)傳輸RTP數(shù)據(jù)的步驟為:1. 產(chǎn)生一個JMF處理器(Processor),為每一種RTP格式設(shè)置相應(yīng)的軌跡格式。2. 從處理器獲取輸出數(shù)據(jù)源。3. 會話管理器產(chǎn)生一個發(fā)送數(shù)據(jù)流,即以數(shù)據(jù)源和序號作為參數(shù)調(diào)用會話管理器的createSendStream()方法。4. 開
42、始會話傳輸。5. 通過監(jiān)聽ControllerEvent事件控制會話的過程。6. 停止會話,刪除會話管理器。定義以下內(nèi)容:/ 媒體定位 IP 端口 處理器 會話管理器 輸出數(shù)據(jù)源private MediaLocator Locator;private String IpAddress;private int portBase;private Processor processor=null;private RTPManger rtpMgrs;private DataSource dataOutput=null;具體實現(xiàn)函數(shù)如下:/發(fā)送數(shù)據(jù)函數(shù)public RTPTransmit(Process
43、or processor,String ipAddress, String pb)/為媒體定位器產(chǎn)生一個處理器private String createProcessor()/ 為處理器的每一個媒體磁道產(chǎn)生一個RTP會話private String createTransmitter() / 讓處理器開始傳輸public synchronized String start()/ 停止傳輸 public void stop() /組播線程類class CreateJoinMuiltcastThread extends Thread /處理器的狀態(tài)監(jiān)聽器類class StateListener i
44、mplements ControllerListener 5.2.4 視音頻接收接收網(wǎng)絡(luò)實時媒體數(shù)據(jù)流是通過java.media包中定義的各種RTP事件監(jiān)聽器和RTP事件處理類來處理和控制的,使用java.media包中的Player類可以實時播放網(wǎng)絡(luò)多媒體數(shù)據(jù)流,java.media包中的處理媒體流接收和播放完成了整個接收RTP數(shù)據(jù)的過程。接收部分程序為每一種新接收到的媒體數(shù)據(jù)流產(chǎn)生一個播放器,一邊接收媒體流數(shù)據(jù),一邊將媒體數(shù)據(jù)播放出來,其實現(xiàn)分為以下幾個步驟:1. 實現(xiàn)ReceiveStreamListener監(jiān)聽接口,監(jiān)聽NewReceiveStreamEvent事件。2. 當(dāng)接收到Ne
45、wReceiveStreamEvent事件后,通過事件獲取接收媒體數(shù)據(jù)流(ReceiveStream),然后通過接收媒體數(shù)據(jù)流獲取RTP數(shù)據(jù)源(DataSource)。3. 將數(shù)據(jù)源傳給Manager.createPlayer()產(chǎn)生一個播放器。4. 給播放器添加監(jiān)聽器,等到播放器實現(xiàn)后,即可顯示播放數(shù)據(jù)。定義以下內(nèi)容:String sessions = null; / RTP會話字符串?dāng)?shù)組RTPManager mgrs = null; / RTP管理器數(shù)組Vector playerPanels = null; / 管理播放器窗口的向量boolean dataReceived = false;
46、 / 是否接收到數(shù)據(jù)的標(biāo)志Object dataSync = new Object(); / 同步對象具體實現(xiàn)函數(shù)如下:/接收數(shù)據(jù)實現(xiàn)函數(shù)public Receive(String sessions) /初始化RTP會話,準(zhǔn)備接收數(shù)據(jù)protected boolean initialize()/關(guān)閉播放窗口protected void close()/判斷數(shù)據(jù)是否接收完成 public boolean isDone() / 通過播放器查找播放窗口PlayerPanel find(Player p) / 通過接收數(shù)據(jù)流查找播放窗口PlayerPanel find(ReceiveStream strm) /實現(xiàn)ReceiveStreamListener監(jiān)聽接口public synchronized void update( ReceiveStreamEvent evt) 第六章 性能測試與分析6.1 測試實例(測試集)的研究與選擇測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。好的測試方案是盡可能發(fā)現(xiàn)尚未發(fā)現(xiàn)的錯誤的測試方案。本節(jié)分別介
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB1303-T 369-2024 旅游氣象信息發(fā)布與傳播規(guī)范
- 班組安全活動記錄每月兩次安全活動記錄
- 班前安全活動記錄表網(wǎng)上下載實例
- 廣東省深圳市2024-2025學(xué)年七年級下學(xué)期期末考試模擬2數(shù)學(xué)試卷(含詳解)
- 26屆高二政治下期半期考試試卷
- 工廠改革活動方案
- 居家學(xué)習(xí)征文活動方案
- 小學(xué)迎國慶班會活動方案
- 少先隊六一入隊活動方案
- 小班舞蹈課活動方案
- 2025年中考英語作文預(yù)測及滿分范文11篇
- 新課標(biāo)(水平三)體育與健康《籃球》大單元教學(xué)計劃及配套教案(18課時)
- 《生物安全培訓(xùn)》課件-2024鮮版
- 【2020-2021自招】江蘇蘇州實驗中學(xué)初升高自主招生數(shù)學(xué)模擬試卷【4套】【含解析】
- 監(jiān)理報審表(第六版)-江蘇省建設(shè)工程監(jiān)理現(xiàn)場用表
- BIM技術(shù)在施工項目管理中的應(yīng)用
- 圓通快遞借殼上市案例分析(課堂PPT)
- 25公斤級平焊法蘭及螺栓規(guī)格尺寸
- 配電網(wǎng)工程典型設(shè)計10kV電纜分冊
- 中文版EN-12546
- 云南省建筑消防設(shè)施施工安裝質(zhì)量檢測收費標(biāo)準(zhǔn)(試行)
評論
0/150
提交評論