JAVA視頻會議系統(tǒng)的設(shè)計與實現(xiàn)(課程設(shè)計報告)_第1頁
JAVA視頻會議系統(tǒng)的設(shè)計與實現(xiàn)(課程設(shè)計報告)_第2頁
JAVA視頻會議系統(tǒng)的設(shè)計與實現(xiàn)(課程設(shè)計報告)_第3頁
JAVA視頻會議系統(tǒng)的設(shè)計與實現(xiàn)(課程設(shè)計報告)_第4頁
JAVA視頻會議系統(tǒng)的設(shè)計與實現(xiàn)(課程設(shè)計報告)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄目 錄i第一章 概述11.1 本課題的研究背景11.2 本課題的研究意義11.3 本報告的目的、內(nèi)容及作者的主要貢獻21.3.1 本報告的目的21.3.2 本報告的內(nèi)容21.3.3 作者主要貢獻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 本課題要達到的設(shè)計目標(biāo)3第二章 系統(tǒng)分析42.1可行性分析42.1.1 技術(shù)可行性42.1.2 操作可行性42.2 采用的關(guān)鍵技術(shù)介紹42.2.1 java多媒體技術(shù)42.2.2 java 網(wǎng)絡(luò)編程技術(shù)5

2、2.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)維護設(shè)計10第四章 系統(tǒng)詳細設(shè)計114.1 文本聊天模塊的詳細設(shè)計114.2 視頻通信模塊的詳細設(shè)計124.2.1 網(wǎng)絡(luò)視頻會議系統(tǒng)結(jié)構(gòu)的詳細設(shè)計124.2.2 視音頻傳輸?shù)脑敿氃O(shè)計134.2.2 多播的詳細設(shè)計144.3 系統(tǒng)界面的詳細設(shè)計14第五章 系統(tǒng)實現(xiàn)155.1 系統(tǒng)開發(fā)環(huán)境155.2 系統(tǒng)實現(xiàn)155.

3、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)改進建議或設(shè)想197.3 課程設(shè)計心得體會19參考文獻21第一章 概述1.1 本課題的研究背景隨著人們對視頻和音頻信息的需求愈來愈強烈,追求遠距離的視音頻的同步交互成為新的時尚。近些年來,依托計算機技術(shù)、通信技術(shù)和網(wǎng)絡(luò)條件的發(fā)展,集音頻、視頻、圖像、文字、數(shù)據(jù)為一體的多媒體信息,使越

4、來越多的人開始通過互聯(lián)網(wǎng)享受到網(wǎng)上生活、遠程醫(yī)療、遠程通訊的樂趣,縮短了時區(qū)和地域的距離。遠程通信的各種優(yōu)勢給人們帶來的方便也促使人們對這一領(lǐng)域進行更加深入的探索?;诓煌脚_以及不同開發(fā)工具的網(wǎng)絡(luò)視頻會議系統(tǒng)層出不窮。視頻會議系統(tǒng)在我國開始發(fā)展的初期,政府部門的應(yīng)用就占據(jù)了重要位置,覆蓋中央到直轄市和各省會城市的國家公眾視頻會議骨干網(wǎng)已經(jīng)完工。自1994年9月投入使用以來,國務(wù)院等機關(guān)先后利用該網(wǎng)召開了三百多次全國范圍的可視通訊會議。整個系統(tǒng)運行情況良好,得到了國家領(lǐng)導(dǎo)人和各部委領(lǐng)導(dǎo)的高度贊揚。近年來隨著電子政務(wù)工程的逐步推進,政府部門更加關(guān)注視頻會議系統(tǒng)建設(shè)。在經(jīng)濟發(fā)達地區(qū)(例如浙江、山東

5、、廣東),視頻會議網(wǎng)已覆蓋到地市級城市,有的甚至覆蓋到縣一級。除各級政府之外,其它諸如檢察院、法院、公安和和水利等職能部門也是視頻會議系統(tǒng)的重要用戶。視頻會議系統(tǒng)還更廣泛的應(yīng)用于現(xiàn)代企業(yè)中。信息技術(shù)的迅猛發(fā)展,改變了各行各業(yè)的傳統(tǒng)工作模式。信息的無限量擴大,交通工具的便捷,互聯(lián)網(wǎng)技術(shù)的充分應(yīng)用等導(dǎo)致了行業(yè)間競爭的全球化,這就要求現(xiàn)代部門、企業(yè)要具備更加靈敏的神經(jīng),更扁平化的管理,更快速的反應(yīng)和決策,更貼切的市場宣傳和服務(wù)。所有這一切是由于信息技術(shù)的發(fā)展帶來的,同樣也要求有先進的信息技術(shù)來提高部門、企業(yè)的競爭力。視頻會議系統(tǒng)的可以跨越空間距離、靈活多樣的面對面的交互,適應(yīng)現(xiàn)代社會的方便、快捷、高

6、效、快節(jié)奏,它為用戶帶來的經(jīng)濟效益,使視頻會議系統(tǒng)的使用正在向各行各業(yè)滲透,給這一市場注入了新的活力。1.2 本課題的研究意義從實用方面:視頻會議系統(tǒng)是指通過現(xiàn)有的各種電氣通訊傳輸媒體,將人物的靜態(tài)/動態(tài)圖像、語音、文字、圖片等多種信息分送到各個用戶的計算機上,使得在地理上分散的用戶可以共聚一處,通過圖形、聲音等多種方式交流信息,增加雙方對內(nèi)容的理解能力。視頻會議系統(tǒng)對于減少差旅費用等機構(gòu)開支;提高機構(gòu)運作效率;提高機構(gòu)形象有利于加強對外交往;有利于政策方針的迅速準(zhǔn)確傳達;有利于廣泛收集意見;有利于加強內(nèi)部交流;員工培訓(xùn)等方面帶來巨大的直接和間接效益。由于視頻會議系統(tǒng)的這些優(yōu)點,使得視頻會議系

7、統(tǒng)備受關(guān)注。并且已經(jīng)有越來越多的人利用這種方式進行交流溝通,不僅方便而且拉近了人與人之間的距離?,F(xiàn)在的一些軟件像qq以及msn等軟件為人們的視頻聊天提供了許多方便。從學(xué)習(xí)知識方面:通過做這樣一個課題,對學(xué)習(xí)無疑是十分有益的。尤其在學(xué)習(xí)了java編程之后更有欲望對其進行深層次的學(xué)習(xí),并且可以結(jié)合各方面的知識進行多方面的學(xué)習(xí),積累更多知識。1.3 本報告的目的、內(nèi)容及作者的主要貢獻1.3.1 本報告的目的本報告對基于java的點對點視頻會議系統(tǒng)做出詳細地需求分析,并對其設(shè)計與實現(xiàn)過程進行詳細的論述。目的在于闡明本視頻會議系統(tǒng)如何能夠?qū)崿F(xiàn)多人在線舉行會議。1.3.2 本報告的內(nèi)容本報告內(nèi)容上從視頻會

8、議的開發(fā)背景開始論述,研究并確定了開發(fā)環(huán)境,并對該視頻會議系統(tǒng)的需求做出了詳細的分析,根據(jù)其需求及開發(fā)工具的功能特性確立課題的設(shè)計方案及開發(fā)策略。并對課題的概要設(shè)計、詳細設(shè)計以及代碼實現(xiàn)過程和后期的測試過程,須改進的部分都進行了詳細的說明。1.3.3 作者主要貢獻本報告中,作者的主要貢獻:對該視頻會議系統(tǒng)進行可行性分析、需求分析、功能模塊設(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)、匯報、交流;視頻會議與電話系統(tǒng)渾然一體:可方便接入會議電話系統(tǒng),通過電話、手機也可加入會議等。2. 系統(tǒng)

10、組網(wǎng)多樣化,有網(wǎng)絡(luò)就能開會。3. 圖像清晰化:視頻會議需要更優(yōu)異、更清晰、更成熟的圖像編解碼技術(shù)。4. 使用、維護簡捷化:易于使用,可自行組織、控制會議;進行遠程管理、遠程維護、升級,降低維護成本;更新設(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)資料,這才可以對該課題進行需求分析。1.5.2 系統(tǒng)設(shè)計問題 在該視頻會議

11、系統(tǒng)的設(shè)計上遇到了很多問題:如何準(zhǔn)確的定位網(wǎng)絡(luò)上一臺或多臺主機,如何找到主機后如何可靠高效的進行數(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è)計問題本課題采用eclipse開發(fā)平臺,裝載ve插件后,用其進行圖形界面的設(shè)計和實現(xiàn)。并且在試用

12、所下載的視頻會議系統(tǒng)后,有很大心得,根據(jù)其界面的合理性,模仿設(shè)計本課題中界面。1.6 本課題要達到的設(shè)計目標(biāo)本課題致力于實現(xiàn)實現(xiàn)點對點的視頻傳輸并完成基本功能(如動態(tài)視頻傳輸、文本傳輸?shù)龋?,提供多人同時在線舉行會議。包含以下內(nèi)容:1.動態(tài)視頻傳輸:視頻雙方可以看到對方的動態(tài)圖像。2.聲音傳輸:在視頻或非視頻狀態(tài)下可以聽到對方的聲音,進行語音交流。3.文本傳輸:可以通過文本輸入進行交流。第二章 系統(tǒng)分析本課題為實現(xiàn)多人在線同時舉行會議的功能,對該視頻會議系統(tǒng)做了詳細的系統(tǒng)分析。包括系統(tǒng)的可行性分析、對開發(fā)用到的關(guān)鍵技術(shù)的介紹以及系統(tǒng)的需求分析。2.1可行性分析2.1.1 技術(shù)可行性網(wǎng)絡(luò)視頻會議是

13、順應(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)音頻、視頻,所以還要涉及到j(luò)ava的多媒體技術(shù)的相關(guān)知識,即jmf (java media framework)。利用java的這個組件,我們可以方便的處理多媒體文件,并基于rtp協(xié)議進行實時傳輸。2.1.2 操作可行性系統(tǒng)運行于windows環(huán)境,其用戶操作界面友好,便于操作,適合視頻會議流程。系統(tǒng)的基本操作

14、如下:1啟動服務(wù)器;2用戶連接到服務(wù)器;3進行視頻連接;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(軌道控制器)、sendstream(發(fā)送數(shù)據(jù)流)、receivestream(接收數(shù)據(jù)流)、inetad

15、dress(ip地址)和sessionaddress(會話地址)等類使得編寫網(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ù)包提供可靠的傳送機制,可不提供流量控制或擁塞控制,它依靠rtcp提供這些服務(wù)。2.2.2 java 網(wǎng)絡(luò)編

16、程技術(shù)網(wǎng)絡(luò)編程的目的就是指直接或間接地通過網(wǎng)絡(luò)協(xié)議與其他計算機進行通訊。網(wǎng)絡(luò)編程中有兩個主要的問題,一個是如何準(zhǔn)確的定位網(wǎng)絡(luò)上一臺或多臺主機,另一個就是找到主機后如何可靠高效的進行數(shù)據(jù)傳輸。在tcp/ip協(xié)議中ip層主要負責(zé)網(wǎng)絡(luò)主機的定位,數(shù)據(jù)傳輸?shù)穆酚桑蒳p地址可以唯一地確定internet上的一臺主機。而tcp層則提供面向應(yīng)用的可靠的或非可靠的數(shù)據(jù)傳輸機制,這是網(wǎng)絡(luò)編程的主要對象,一般不需要關(guān)心ip層是如何處理數(shù)據(jù)的。目前較為流行的網(wǎng)絡(luò)編程模型是客戶機/服務(wù)器(c/s)結(jié)構(gòu)。即通信雙方一方作為服務(wù)器等待客戶提出請求并予以響應(yīng)??蛻魟t在需要服務(wù)時向服務(wù)器提出申請。服務(wù)器一般作為守護進程始終

17、運行,監(jiān)聽網(wǎng)絡(luò)端口,一旦有客戶請求,就會啟動一個服務(wù)進程來響應(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 protocol,udp),就成為一種必然。socket是網(wǎng)絡(luò)上運行的兩個程序間雙向通訊的一端,

18、它既可以接受請求,也可以發(fā)送請求,利用它可以較為方便的編寫網(wǎng)絡(luò)上數(shù)據(jù)的傳遞。在java中,有專門的socket類來處理用戶的請求和響應(yīng)。利用socket類的方法,就可以實現(xiàn)兩臺計算機之間的通訊。在java中socket可以理解為客戶端或者服務(wù)器端的一個特殊的對象,這個對象有兩個關(guān)鍵的方法,一個是getinputstream方法,另一個是getoutputstream方法。getinputstream方法可以得到一個輸入流,客戶端的socket對象上的getinputstream方法得到的輸入流其實就是從服務(wù)器端發(fā)回的數(shù)據(jù)流。getoutputstream方法得到一個輸出流,客戶端socket對

19、象上的getoutputstream方法返回的輸出流就是將要發(fā)送到服務(wù)器端的數(shù)據(jù)流,(其實是一個緩沖區(qū),暫時存儲將要發(fā)送過去的數(shù)據(jù))。多播通信是一類特殊的ip地址(d類ip地址)這些ip地址并不和任何主機關(guān)聯(lián),而是專門為多播通信保留下來的,地址范圍224.0.0.1-239.255.255.255這間,其中224.0.0.1-224.0.0.255是留作為多播路由信息使用的。此外,所有其它d類ip地址都可以隨便進行通信。2.3 系統(tǒng)需求分析由于政府部門和企事業(yè)單位對視頻會議系統(tǒng)有強烈需求,并且人們對視頻和音頻信息的需求愈來愈強烈,所以有必要開發(fā)一個網(wǎng)絡(luò)視頻會議系統(tǒng)。并且近些年來,依托計算機技術(shù)

20、、通信技術(shù)和網(wǎng)絡(luò)條件的發(fā)展,集音頻、視頻、圖像、文字、數(shù)據(jù)為一體的多媒體信息,使越來越多的人開始通過互聯(lián)網(wǎng)享受到網(wǎng)上生活的樂趣,縮短了時區(qū)和地域的距離。遠程通信的各種優(yōu)勢給人們帶來的方便也促使人們對這一領(lǐng)域進行更加深入的探索?,F(xiàn)代社會中信息的無限量擴大,交通工具的便捷,互聯(lián)網(wǎng)技術(shù)的充分應(yīng)用等導(dǎo)致了行業(yè)間競爭的全球化,這就要求現(xiàn)代部門、企業(yè)要具備更加靈敏的神經(jīng),更扁平化的管理,更快速的反應(yīng)和決策,更貼切的市場宣傳和服務(wù)。所有這一切是由于信息技術(shù)的發(fā)展帶來的,同樣也要求有先進的信息技術(shù)來提高部門、企業(yè)的競爭力。視頻會議系統(tǒng)的可以跨越空間距離、靈活多樣的面對面的交互,適應(yīng)現(xiàn)代社會的方便、快捷、高效、

21、快節(jié)奏,它為用戶帶來的經(jīng)濟效益,使視頻會議系統(tǒng)的使用正在向各行各業(yè)滲透。視頻會議系統(tǒng)是支持人們遠距離進行實時信息交流、開展協(xié)同工作的應(yīng)用系統(tǒng)。視頻會議系統(tǒng)實時傳輸視頻與音頻信息,使協(xié)作成員可以遠距離進行直觀、真實的視音頻交流。另一方面,利用多媒體技術(shù)的支持,視頻會議系統(tǒng)可以幫助使用者對工作中各種信息進行處理,如共享數(shù)據(jù)、共享應(yīng)用程序等,從而構(gòu)造出一個多人共享的工作空間。所以,開發(fā)一個網(wǎng)絡(luò)視頻會議系統(tǒng)是很有必要的。第三章 系統(tǒng)概要設(shè)計3.1 系統(tǒng)總體設(shè)計3.1.1 運行環(huán)境操作系統(tǒng):windows 2000/xp/2003 等安裝jdk安裝jmf安裝eclipse安裝攝像頭3.1.2 系統(tǒng)流程

22、服務(wù)器端流程如圖3.1所示: 處理會議過程開 始開啟服務(wù)器開啟失敗等待用戶連接 關(guān)閉服務(wù)器結(jié) 束連接成功圖3.1 服務(wù)器端流程圖 客戶端流程如圖3.2 所示:結(jié) 束開 始登 錄登錄失敗視頻連接連接失敗 舉行會議 進入界面視頻 聊天 退 出共享連接成功登錄成功圖3.2 客戶端流程圖3.1.3 系統(tǒng)結(jié)構(gòu)通過學(xué)習(xí)和研究,我們通過多播技術(shù)實現(xiàn)了多點對多點的視頻會議系統(tǒng)。整個系統(tǒng)包括這樣幾個模塊:文本聊天模塊:該功能是網(wǎng)絡(luò)視頻會議的最基本的功能。通過該模塊實現(xiàn)了會議成員的聊天通信。首先,每個會議職員通過與服務(wù)器連接加入到會議組,同時通過給自己取昵稱將自己的昵稱發(fā)送給服務(wù)器,讓會議組的每個成員了解自己的身

23、份。會議成員在聊天的時候不是將文本發(fā)送給某個人,而是發(fā)送給整個會議組。視頻通信模塊:該功能利用jmf軟件開發(fā)包,基于rtp協(xié)議實時發(fā)送和接受視頻流。并且利用jmf多媒體組件構(gòu)造播放器,進行實時播放。在實現(xiàn)了點對點的基本視頻傳輸?shù)幕A(chǔ)上,我們應(yīng)用了多播技術(shù)。當(dāng)某個會議成員開始進行視頻連接以后,他能通過視頻會議系統(tǒng)看到所有其他已經(jīng)建立視頻連接會議成員。3.2 系統(tǒng)接口的概要設(shè)計3.2.1 服務(wù)器端設(shè)計系統(tǒng)的服務(wù)器端的設(shè)計只需顯示在線的用戶,簡單設(shè)計圖示如下: 圖3.3 系統(tǒng)服務(wù)器端設(shè)計3.2.2 客戶端設(shè)計系統(tǒng)客戶端的設(shè)計如下:1. 顯示在線列表;2. 顯示界面中用戶視頻;3. 用戶聊天文本框;4

24、. 視頻連接及退出按鈕。簡單設(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)維護設(shè)計 為了保證系統(tǒng)的穩(wěn)定運行,本系統(tǒng)在設(shè)計時考慮到了系統(tǒng)的安全性、可靠性、兼容性、可擴展性等因素。了很多驗證條件,盡量保證信息的合法性與正確性,

25、是系統(tǒng)能夠穩(wěn)定運行。此外本系統(tǒng)的設(shè)計還保證了系統(tǒng)功能的可擴展性。 安全性:在視頻會議系統(tǒng)前端安置加密機或者直接使用加密網(wǎng)卡可以提高在傳輸過程中的安全性。加密設(shè)備可直接提供加密能力,從而實現(xiàn)用戶的身份驗證以及未經(jīng)授權(quán)的數(shù)據(jù)訪問和惡意侵犯。 可靠性:該系統(tǒng)設(shè)計的合理性保證了可靠穩(wěn)定的運行,支持當(dāng)前大多數(shù)硬件平臺,核心線程優(yōu)先保護、數(shù)據(jù)流容錯的設(shè)計思路使系統(tǒng)可更加穩(wěn)定的運轉(zhuǎn)。 兼容性:該系統(tǒng)擁有開放的集成接口,可以非常靈活的與用戶集成,并滿足用戶的需要,實現(xiàn)其功能。 可擴展性:該系統(tǒng)可進行再擴展,在此基礎(chǔ)上擴展為一點對多點,多點對多點的視頻會議系統(tǒng)。第四章 系統(tǒng)詳細設(shè)計本系統(tǒng)的詳細設(shè)計根據(jù)概要設(shè)計中

26、所劃分的各個功能模塊進行詳細的闡述:4.1 文本聊天模塊的詳細設(shè)計本系統(tǒng)要運用java網(wǎng)絡(luò)編程中socket層次,即傳統(tǒng)網(wǎng)絡(luò)編程常采用的方式,通過client/server(客戶端/服務(wù)器端)機構(gòu)的應(yīng)用程序之間建立socket套接字連接,然后在連接之上進行數(shù)據(jù)通信。通過socketchannel建立基于udp的無阻塞連接。創(chuàng)建一個無阻塞服務(wù)器,讓每個客戶端與之相連。某個客戶端將文本消息發(fā)送給無阻塞的服務(wù)器,服務(wù)器在將這條文本消息組播給各個與之相連的客戶端。數(shù)據(jù)在internet中是以有限大小的包形式傳輸?shù)?,這些包稱為數(shù)據(jù)報(datagram).但是,由于數(shù)據(jù)報長度有限,通常必須將數(shù)據(jù)分解為多個

27、包,在目的地再重新組合。有可能一包或多個包在傳輸中丟失或遭到破壞。由于網(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)答數(shù)據(jù)處理請求阻塞到收到請求bind() 圖4.1 數(shù)據(jù)報套接字流程圖服務(wù)器:serversocketchannel = servers

28、ocketchannel.open();/打開連接通道serversocketchannel.socket().bind(new inetsocketaddress(12345);/綁定ip與端口號getconnection();/接收連接請求客戶端:socketchannel = socketchannel.open();打開連接通道socketchannel.connect(new inetsocketaddress(inetaddress.getbyname(serveraddress),12345);/連接到服務(wù)器receivemessage = new receivingthread

29、();/構(gòu)造接收信息線程receivemessage.start();/運行線程socketchannel.write(writebuffer);/往通道里寫入消息socketchannel.read(readbuffer);/讀取通道中消息4.2 視頻通信模塊的詳細設(shè)計4.2.1 網(wǎng)絡(luò)視頻會議系統(tǒng)結(jié)構(gòu)的詳細設(shè)計網(wǎng)絡(luò)視頻會議系統(tǒng)其根本目的是會議。會議的基本特征就是,參與會議的每個成員都可以了解到其他成員的狀況,每個成員必須到場,然后進行交流,并且每個成員都應(yīng)該看到所有的交流內(nèi)容。在這個根本目的完成的基礎(chǔ)上,才可以使網(wǎng)絡(luò)視頻會議的特點得以發(fā)揮。所以,我們的視頻會議系統(tǒng)采用了多播的方法,使得會議的

30、每個成員都可以得到會議的所有信息。通過對視頻會議基本特點的分析,系統(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ù)脑敿氃O(shè)計使用jmf api的rtp協(xié)議實現(xiàn)網(wǎng)絡(luò)多媒體程序,可以分為兩個部分,一部分是通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的主機端程序,另一部分是接收數(shù)據(jù)的客戶端程序。在jmf api中定義了幾個與rtp有關(guān)的包,即javax.media.rtp、javax.media.rtp.enent、javax.media.rtp.rtcp登包,通過這些包

31、提供的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ù)源進行定位,medialocator對象內(nèi)仔儲了數(shù)據(jù)源的位置信息。jmf管理器(manager)根據(jù)媒體定位器提供的信息創(chuàng)建數(shù)據(jù)源。這個數(shù)據(jù)源和文件、攝像頭等物理數(shù)據(jù)源不同,是一個抽象的概念,是多種不同類型數(shù)據(jù)源的抽象。這樣,jmf可以隱藏底層

32、細節(jié),使編程者在編程過程中不再考慮數(shù)據(jù)的具體來源和位置,只需考慮數(shù)據(jù)的格式、速率等信息就行了。數(shù)據(jù)源生成后 ,可以直接交給播放器(player),設(shè)定格式后就可以在本機播放了。但若要將數(shù)據(jù)流存儲成其他格式的文件或者通過 rtp協(xié)議在網(wǎng)絡(luò)上傳輸 ,則需要對其進行再處理。再處理工作由處理器(processor)完成 ,處理后的數(shù)據(jù)源可以存儲,也可以在網(wǎng)絡(luò)上傳輸。通過 rtp進行傳輸前 ,需要建立會話管理器(sessionmanager),建立 rtp會話后再開始發(fā)送流,發(fā)送時會打開兩個端口,一個用于傳輸 rtp數(shù)據(jù)流;另一個用來傳輸 rtcp包。多媒體數(shù)據(jù)流的接收過程是發(fā)送的逆過程。由rtp信道獲

33、得的數(shù)據(jù)流作為接收端的數(shù)據(jù)源,對數(shù)據(jù)源處理后便可以實現(xiàn)數(shù)據(jù)流的回放、存儲,甚至再發(fā)送。詳細設(shè)計傳輸過程:dsvideo = createdatasource(vf);/創(chuàng)建視頻數(shù)據(jù)源dsaudio = createdatasource(af);/創(chuàng)建音頻數(shù)據(jù)源devices = capturedevicemanager.getdevicelist(format);/得到類型為format的設(shè)備的清單,存放在表devices中ds = manager.createdatasource(ml);/通過媒體定位器創(chuàng)建數(shù)據(jù)源rtptransmit rtptransmit = new rtptransm

34、it(processor,ipaddr,port);/構(gòu)造rtp會話result = createprocessor();/ 產(chǎn)生一個處理器result = createtransmitter();產(chǎn)生rtp會話,將處理器輸出的數(shù)據(jù)傳給指定的ip地址的指定的端口號processor.start();/ 讓處理器開始傳輸4.2.2 多播的詳細設(shè)計多播基本思想是一個源ip主機只進行一次發(fā)送,多個接收者(目標(biāo) ip主機)可以接收到相同數(shù)據(jù)的一個拷貝。但是多個接收者必須都注冊加入同一多播組。ip多播服務(wù)是一種開放的服務(wù)模型,任何主機可以隨時加入或退出某個多播組。利用這種思想,可以實現(xiàn)會議中的多點對多點

35、的視頻傳輸,已達到組織會議的目的。多播系統(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è)置組播地址socket = new multicastsocket(port); /創(chuàng)建multicastsocket類并將端口與之關(guān)聯(lián)socket.joingroup(group); /加入此組播組4.3 系統(tǒng)界面的詳細設(shè)計本系統(tǒng)在進行界面設(shè)計的時候考慮了系統(tǒng)的功能,對各功能模塊進行詳細合理的布局:1. 把一些功能加到界面中的菜單中,有連接服務(wù)器

36、,連接視頻,斷開連接,退出等子菜單項。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)境:eclipsejmf版本:jmf 2.1.1jdk版本:jdk 5.0eclipse版本:eclipse 3.25.2 系統(tǒng)實現(xiàn)5.2.1 服務(wù)器端套接字建立數(shù)據(jù)通訊

37、是雙向的,客戶端通過套接字請求數(shù)據(jù)通訊后,服務(wù)器端需要有一個響應(yīng)客戶端請求通訊的服務(wù)程序,該服務(wù)器程序應(yīng)用serversocket類完成與客戶端的通訊。serversocket類用來監(jiān)聽和響應(yīng)客戶端的連接請求,并接受客戶端發(fā)送的數(shù)據(jù)信息。serversocket類在服務(wù)器端等待其他機器同它的連接,一旦客戶端程序建立一個套接字連接,serversocket類就會通過accept()方法返回一個對應(yīng)的服務(wù)器端套接字對象,以便進行直接通訊。從兩臺計算機連接成功起,服務(wù)器端與客戶端就得到了一個真正的“套接字-套接字”連接,此時利用socket類中的getinputstream()及getoutputs

38、tream()方法從每端的套接字產(chǎn)生對應(yīng)的inputstream和outputstream對象,并將套接字數(shù)據(jù)流封裝到緩沖區(qū)內(nèi)以便進行兩臺機器之間的數(shù)據(jù)通訊。serversocketchannel = serversocketchannel.open();/打開連接通道serversocketchannel.socket().bind(new inetsocketaddress(12345);/綁定ip與端口號getconnection();/接收連接請求charset = charset.forname(utf-8);/開啟服務(wù)器套接字通道serversocketchannel = serv

39、ersocketchannel.open();serversocketchannel.socket().bind(newinetsocketaddress(12345); serversocketchannel.configureblocking(false);/設(shè)置阻塞模式為非阻塞模式等待一個連接5.2.2 客戶端套接字建立客戶端使用socket類的方法建立(類似于服務(wù)器端),客戶端向套接字對象中的數(shù)據(jù)流輸出和獲取數(shù)據(jù)??蛻舳顺绦蛟噲D與服務(wù)器之間在socket層次上建立一個連接,通過套接字輸入流讀取方法從套接字數(shù)據(jù)流中獲取服務(wù)器信息,以及寫入數(shù)據(jù)到套接字輸出流中向服務(wù)器發(fā)送信息,并且等待服務(wù)

40、器的答復(fù)。如果連接成功,則該客戶端程序通過套接字與服務(wù)器可以進行正常的數(shù)據(jù)交換。socketchannel = socketchannel.open();打開連接通道socketchannel.connect(new inetsocketaddress(inetaddress.getbyname(serveraddress),12345);/連接到服務(wù)器receivemessage = new receivingthread();/構(gòu)造接收信息線程receivemessage.start();/運行線程socketchannel.write(writebuffer);/往通道里寫入消息sock

41、etchannel.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. 開始會話傳輸。5. 通過監(jiān)聽controllerevent事件控制會話的過程。6. 停止會話,刪除會話管理器。定義以下內(nèi)容:/ 媒體定位 ip 端口 處理

42、器 會話管理器 輸出數(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(processor processor,string ipaddress, string pb)/為媒體定位器產(chǎn)生一個處理器private string create

43、processor()/ 為處理器的每一個媒體磁道產(chǎn)生一個rtp會話private string createtransmitter() / 讓處理器開始傳輸public synchronized string start()/ 停止傳輸 public void stop() /組播線程類class createjoinmuiltcastthread extends thread /處理器的狀態(tài)監(jiān)聽器類class statelistener implements controllerlistener 5.2.4 視音頻接收接收網(wǎng)絡(luò)實時媒體數(shù)據(jù)流是通過java.media包中定義的各種rtp事件

44、監(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)接收到newreceivestreamevent事件后,通過事件獲取接收媒體數(shù)據(jù)流(receivestream),然后通過接收媒體數(shù)據(jù)流獲取rtp數(shù)據(jù)源(data

45、source)。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; / 是否接收到數(shù)據(jù)的標(biāo)志object datasync = new object(); / 同步對象具體實現(xiàn)函數(shù)如下:/接收數(shù)據(jù)實現(xiàn)函數(shù)public

46、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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論