版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p> 目 錄I</p><p><b> 第一章 概述1</b></p><p> 1.1 本課題的研究背景1</p><p> 1.2 本課題的研究意義1</p><p>
2、1.3 本報(bào)告的目的、內(nèi)容及作者的主要貢獻(xiàn)2</p><p> 1.3.1 本報(bào)告的目的2</p><p> 1.3.2 本報(bào)告的內(nèi)容2</p><p> 1.3.3 作者主要貢獻(xiàn)2</p><p> 1.4 國內(nèi)外相近研究課題的特點(diǎn)及發(fā)展趨勢2</p><p> 1.5 現(xiàn)行研究存在的問題及解決辦
3、法3</p><p> 1.5.1 需求分析問題3</p><p> 1.5.2 系統(tǒng)設(shè)計(jì)問題3</p><p> 1.5.4 代碼實(shí)現(xiàn)問題3</p><p> 1.5.5 界面設(shè)計(jì)問題3</p><p> 1.6 本課題要達(dá)到的設(shè)計(jì)目標(biāo)3</p><p> 第二章 系
4、統(tǒng)分析4</p><p> 2.1可行性分析4</p><p> 2.1.1 技術(shù)可行性4</p><p> 2.1.2 操作可行性4</p><p> 2.2 采用的關(guān)鍵技術(shù)介紹4</p><p> 2.2.1 JAVA多媒體技術(shù)4</p><p> 2.2.2
5、JAVA 網(wǎng)絡(luò)編程技術(shù)5</p><p> 2.3 系統(tǒng)需求分析6</p><p> 第三章 系統(tǒng)概要設(shè)計(jì)7</p><p> 3.1 系統(tǒng)總體設(shè)計(jì)7</p><p> 3.1.1 運(yùn)行環(huán)境7</p><p> 3.1.2 系統(tǒng)流程7</p><p> 3.1.3 系統(tǒng)結(jié)
6、構(gòu)8</p><p> 3.2 系統(tǒng)接口的概要設(shè)計(jì)9</p><p> 3.2.1 服務(wù)器端設(shè)計(jì)9</p><p> 3.2.2 客戶端設(shè)計(jì)9</p><p> 3.3 系統(tǒng)出錯(cuò)處理設(shè)計(jì)10</p><p> 3.3.1 出錯(cuò)信息及處理方法10</p><p> 3.3.
7、2系統(tǒng)維護(hù)設(shè)計(jì)10</p><p> 第四章 系統(tǒng)詳細(xì)設(shè)計(jì)11</p><p> 4.1 文本聊天模塊的詳細(xì)設(shè)計(jì)11</p><p> 4.2 視頻通信模塊的詳細(xì)設(shè)計(jì)12</p><p> 4.2.1 網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)結(jié)構(gòu)的詳細(xì)設(shè)計(jì)12</p><p> 4.2.2 視音頻傳輸?shù)脑敿?xì)設(shè)計(jì)13<
8、;/p><p> 4.2.2 多播的詳細(xì)設(shè)計(jì)14</p><p> 4.3 系統(tǒng)界面的詳細(xì)設(shè)計(jì)14</p><p> 第五章 系統(tǒng)實(shí)現(xiàn)15</p><p> 5.1 系統(tǒng)開發(fā)環(huán)境15</p><p> 5.2 系統(tǒng)實(shí)現(xiàn)15</p><p> 5.2.1 服務(wù)器端套接字建立15
9、</p><p> 5.2.2 客戶端套接字建立15</p><p> 5.2.3 視音頻發(fā)送16</p><p> 5.2.4 視音頻接收17</p><p> 第六章 性能測試與分析18</p><p> 6.1 測試實(shí)例(測試集)的研究與選擇18</p><p> 6
10、.2 性能分析18</p><p> 第七章 課程設(shè)計(jì)總結(jié)19</p><p> 7.1 系統(tǒng)總結(jié)19</p><p> 7.1.1 系統(tǒng)特點(diǎn)介紹19</p><p> 7.1.2 系統(tǒng)存在的問題19</p><p> 7.2 系統(tǒng)改進(jìn)建議或設(shè)想19</p><p> 7
11、.3 課程設(shè)計(jì)心得體會(huì)19</p><p><b> 參考文獻(xiàn)21</b></p><p><b> 第一章 概述</b></p><p> 1.1 本課題的研究背景</p><p> 隨著人們對(duì)視頻和音頻信息的需求愈來愈強(qiáng)烈,追求遠(yuǎn)距離的視音頻的同步交互成為新的時(shí)尚。近些年來,依托計(jì)算
12、機(jī)技術(shù)、通信技術(shù)和網(wǎng)絡(luò)條件的發(fā)展,集音頻、視頻、圖像、文字、數(shù)據(jù)為一體的多媒體信息,使越來越多的人開始通過互聯(lián)網(wǎng)享受到網(wǎng)上生活、遠(yuǎn)程醫(yī)療、遠(yuǎn)程通訊的樂趣,縮短了時(shí)區(qū)和地域的距離。遠(yuǎn)程通信的各種優(yōu)勢給人們帶來的方便也促使人們對(duì)這一領(lǐng)域進(jìn)行更加深入的探索?;诓煌脚_(tái)以及不同開發(fā)工具的網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)層出不窮。</p><p> 視頻會(huì)議系統(tǒng)在我國開始發(fā)展的初期,政府部門的應(yīng)用就占據(jù)了重要位置,覆蓋中央到直轄市和各
13、省會(huì)城市的國家公眾視頻會(huì)議骨干網(wǎng)已經(jīng)完工。自1994年9月投入使用以來,國務(wù)院等機(jī)關(guān)先后利用該網(wǎng)召開了三百多次全國范圍的可視通訊會(huì)議。整個(gè)系統(tǒng)運(yùn)行情況良好,得到了國家領(lǐng)導(dǎo)人和各部委領(lǐng)導(dǎo)的高度贊揚(yáng)。近年來隨著電子政務(wù)工程的逐步推進(jìn),政府部門更加關(guān)注視頻會(huì)議系統(tǒng)建設(shè)。在經(jīng)濟(jì)發(fā)達(dá)地區(qū)(例如浙江、山東、廣東),視頻會(huì)議網(wǎng)已覆蓋到地市級(jí)城市,有的甚至覆蓋到縣一級(jí)。除各級(jí)政府之外,其它諸如檢察院、法院、公安和和水利等職能部門也是視頻會(huì)議系統(tǒng)的重要用
14、戶。</p><p> 視頻會(huì)議系統(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è)的競爭力。視頻會(huì)議系統(tǒng)的可以跨越空
15、間距離、靈活多樣的面對(duì)面的交互,適應(yīng)現(xiàn)代社會(huì)的方便、快捷、高效、快節(jié)奏,它為用戶帶來的經(jīng)濟(jì)效益,使視頻會(huì)議系統(tǒng)的使用正在向各行各業(yè)滲透,給這一市場注入了新的活力。</p><p> 1.2 本課題的研究意義</p><p><b> 從實(shí)用方面:</b></p><p> 視頻會(huì)議系統(tǒng)是指通過現(xiàn)有的各種電氣通訊傳輸媒體,將人物的靜態(tài)/動(dòng)態(tài)
16、圖像、語音、文字、圖片等多種信息分送到各個(gè)用戶的計(jì)算機(jī)上,使得在地理上分散的用戶可以共聚一處,通過圖形、聲音等多種方式交流信息,增加雙方對(duì)內(nèi)容的理解能力。視頻會(huì)議系統(tǒng)對(duì)于減少差旅費(fèi)用等機(jī)構(gòu)開支;提高機(jī)構(gòu)運(yùn)作效率;提高機(jī)構(gòu)形象有利于加強(qiáng)對(duì)外交往;有利于政策方針的迅速準(zhǔn)確傳達(dá);有利于廣泛收集意見;有利于加強(qiáng)內(nèi)部交流;員工培訓(xùn)等方面帶來巨大的直接和間接效益。由于視頻會(huì)議系統(tǒng)的這些優(yōu)點(diǎn),使得視頻會(huì)議系統(tǒng)備受關(guān)注。并且已經(jīng)有越來越多的人利用這種方
17、式進(jìn)行交流溝通,不僅方便而且拉近了人與人之間的距離。現(xiàn)在的一些軟件像QQ以及MSN等軟件為人們的視頻聊天提供了許多方便。</p><p><b> 從學(xué)習(xí)知識(shí)方面:</b></p><p> 通過做這樣一個(gè)課題,對(duì)學(xué)習(xí)無疑是十分有益的。尤其在學(xué)習(xí)了JAVA編程之后更有欲望對(duì)其進(jìn)行深層次的學(xué)習(xí),并且可以結(jié)合各方面的知識(shí)進(jìn)行多方面的學(xué)習(xí),積累更多知識(shí)。</p&g
18、t;<p> 1.3 本報(bào)告的目的、內(nèi)容及作者的主要貢獻(xiàn)</p><p> 1.3.1 本報(bào)告的目的</p><p> 本報(bào)告對(duì)基于JAVA的點(diǎn)對(duì)點(diǎn)視頻會(huì)議系統(tǒng)做出詳細(xì)地需求分析,并對(duì)其設(shè)計(jì)與實(shí)現(xiàn)過程進(jìn)行詳細(xì)的論述。目的在于闡明本視頻會(huì)議系統(tǒng)如何能夠?qū)崿F(xiàn)多人在線舉行會(huì)議。</p><p> 1.3.2 本報(bào)告的內(nèi)容</p><
19、;p> 本報(bào)告內(nèi)容上從視頻會(huì)議的開發(fā)背景開始論述,研究并確定了開發(fā)環(huán)境,并對(duì)該視頻會(huì)議系統(tǒng)的需求做出了詳細(xì)的分析,根據(jù)其需求及開發(fā)工具的功能特性確立課題的設(shè)計(jì)方案及開發(fā)策略。并對(duì)課題的概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以及代碼實(shí)現(xiàn)過程和后期的測試過程,須改進(jìn)的部分都進(jìn)行了詳細(xì)的說明。</p><p> 1.3.3 作者主要貢獻(xiàn)</p><p> 本報(bào)告中,作者的主要貢獻(xiàn):對(duì)該視頻會(huì)議系統(tǒng)進(jìn)行可
20、行性分析、需求分析、功能模塊設(shè)計(jì)、各個(gè)功能的代碼實(shí)現(xiàn)、良好用戶操作界面的設(shè)計(jì)與實(shí)現(xiàn)、對(duì)各功能實(shí)現(xiàn)結(jié)果的測試等。</p><p> 1.4 國內(nèi)外相近研究課題的特點(diǎn)及發(fā)展趨勢</p><p> 視頻會(huì)議是近幾年才發(fā)展起來的多媒體通信技術(shù)。視頻會(huì)議可實(shí)時(shí)傳送聲音、圖象;使每位與會(huì)者都有身臨其境的感覺。此外,它還提供文件傳真、靜止圖文傳送、白板等一系列輔助服務(wù)項(xiàng)目。視頻會(huì)議最初是"
21、點(diǎn)對(duì)點(diǎn)"的會(huì)議傳輸(point to point),現(xiàn)已發(fā)展到"一點(diǎn)對(duì)多點(diǎn)"(point to multi points)及"多點(diǎn)到多點(diǎn)"(multi points to multi points)階段。</p><p> 視頻會(huì)議系統(tǒng)的關(guān)鍵技術(shù) :1)多媒體信息處理技術(shù)2)寬帶網(wǎng)絡(luò)技術(shù)3)分布式處理技術(shù)視頻會(huì)議實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn)、多點(diǎn)之間的實(shí)時(shí)同步交互通信
22、。</p><p> 視頻會(huì)議的發(fā)展趨勢:</p><p> 系統(tǒng)功能多元化具有圖文同傳功能:除視音頻外,可以方便地傳送和顯示電腦文檔用于培訓(xùn)、匯報(bào)、交流;視頻會(huì)議與電話系統(tǒng)渾然一體:可方便接入會(huì)議電話系統(tǒng),通過電話、手機(jī)也可加入會(huì)議等。</p><p> 系統(tǒng)組網(wǎng)多樣化,有網(wǎng)絡(luò)就能開會(huì)。</p><p> 圖像清晰化:視頻會(huì)議需要更
23、優(yōu)異、更清晰、更成熟的圖像編解碼技術(shù)。</p><p> 使用、維護(hù)簡捷化:易于使用,可自行組織、控制會(huì)議;進(jìn)行遠(yuǎn)程管理、遠(yuǎn)程維護(hù)、升級(jí),降低維護(hù)成本;更新設(shè)計(jì),大幅提高系統(tǒng)穩(wěn)定性。</p><p> 1.5 現(xiàn)行研究存在的問題及解決辦法</p><p> 1.5.1 需求分析問題</p><p> 開始對(duì)課題所研究的問題不是很明確,
24、如其應(yīng)用范圍,具體功能等。通過老師的講解及指導(dǎo)和查相關(guān)資料得以解決。</p><p> 由于幾乎沒有使用過視頻會(huì)議,對(duì)其的了解也不太深刻,老師給講解了一些內(nèi)容,在網(wǎng)上下載了一個(gè)視頻會(huì)議系統(tǒng)的軟件試用了一下,并查閱了許多相關(guān)資料,這才可以對(duì)該課題進(jìn)行需求分析。</p><p> 1.5.2 系統(tǒng)設(shè)計(jì)問題</p><p> 在該視頻會(huì)議系統(tǒng)的設(shè)計(jì)上遇到了很多問題:
25、如何準(zhǔn)確的定位網(wǎng)絡(luò)上一臺(tái)或多臺(tái)主機(jī),如何找到主機(jī)后如何可靠高效的進(jìn)行數(shù)據(jù)傳輸;建立網(wǎng)絡(luò)之間會(huì)話;圖像的采集、壓縮及編碼;網(wǎng)絡(luò)視頻的傳輸;系統(tǒng)的界面設(shè)計(jì)等問題。</p><p> 1.5.4 代碼實(shí)現(xiàn)問題</p><p> 在具體的功能實(shí)現(xiàn)上,編碼遇到了極大的困難。因?yàn)樵撜n題需要用到很多以前從未接觸到的知識(shí),如需要用JMF,RTP協(xié)議傳輸視頻,JAVA socket編程,如何采集圖像等知
26、識(shí)。在用JAVA語言編碼過程中,因編程規(guī)范及其他各種語法問題出現(xiàn)了很多錯(cuò)誤,通過老師指導(dǎo)和查閱資料得以解決。</p><p> 1.5.5 界面設(shè)計(jì)問題</p><p> 本課題采用eclipse開發(fā)平臺(tái),裝載ve插件后,用其進(jìn)行圖形界面的設(shè)計(jì)和實(shí)現(xiàn)。并且在試用所下載的視頻會(huì)議系統(tǒng)后,有很大心得,根據(jù)其界面的合理性,模仿設(shè)計(jì)本課題中界面。</p><p> 1
27、.6 本課題要達(dá)到的設(shè)計(jì)目標(biāo)</p><p> 本課題致力于實(shí)現(xiàn)實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的視頻傳輸并完成基本功能(如動(dòng)態(tài)視頻傳輸、文本傳輸?shù)龋?,提供多人同時(shí)在線舉行會(huì)議。包含以下內(nèi)容:</p><p> 1.動(dòng)態(tài)視頻傳輸:視頻雙方可以看到對(duì)方的動(dòng)態(tài)圖像。</p><p> 2.聲音傳輸:在視頻或非視頻狀態(tài)下可以聽到對(duì)方的聲音,進(jìn)行語音交流。</p><p
28、> 3.文本傳輸:可以通過文本輸入進(jìn)行交流。</p><p><b> 第二章 系統(tǒng)分析</b></p><p> 本課題為實(shí)現(xiàn)多人在線同時(shí)舉行會(huì)議的功能,對(duì)該視頻會(huì)議系統(tǒng)做了詳細(xì)的系統(tǒng)分析。包括系統(tǒng)的可行性分析、對(duì)開發(fā)用到的關(guān)鍵技術(shù)的介紹以及系統(tǒng)的需求分析。</p><p><b> 2.1可行性分析</b&
29、gt;</p><p> 2.1.1 技術(shù)可行性</p><p> 網(wǎng)絡(luò)視頻會(huì)議是順應(yīng)市場的需求而設(shè)計(jì)的。采用JAVA 編程語言,用eclipse開發(fā)平臺(tái)實(shí)現(xiàn)。用到多媒體技術(shù)(JAVA 多媒體框架JMF),視頻和音頻用TRP協(xié)議傳輸,用到Socket編程技術(shù),多播技術(shù)。網(wǎng)絡(luò)視頻會(huì)議首先是基于網(wǎng)絡(luò)傳輸?shù)模敲淳捅厝灰劳杏贘AVA網(wǎng)絡(luò)編程的相關(guān)知識(shí)。在這基礎(chǔ)上,由于相關(guān)音頻、視頻,所以還
30、要涉及到JAVA的多媒體技術(shù)的相關(guān)知識(shí),即JMF (Java Media Framework)。利用JAVA的這個(gè)組件,我們可以方便的處理多媒體文件,并基于RTP協(xié)議進(jìn)行實(shí)時(shí)傳輸。</p><p> 2.1.2 操作可行性</p><p> 系統(tǒng)運(yùn)行于Windows環(huán)境,其用戶操作界面友好,便于操作,適合視頻會(huì)議流程。</p><p> 系統(tǒng)的基本操作如下:&
31、lt;/p><p><b> 1.啟動(dòng)服務(wù)器;</b></p><p> 2.用戶連接到服務(wù)器;</p><p><b> 3.進(jìn)行視頻連接;</b></p><p><b> 4.舉行會(huì)議;</b></p><p> 5.會(huì)議完畢,退出系統(tǒng)。&l
32、t;/p><p> 2.2 采用的關(guān)鍵技術(shù)介紹</p><p> 2.2.1 JAVA多媒體技術(shù)</p><p> JAVA多媒體技術(shù)的核心是Java媒體框架 JMF(Java Media Framework)。JMF中包含了許多用于處理多媒體的API,它是一個(gè)很好的多媒體編程工具,同時(shí)也是一個(gè)相當(dāng)復(fù)雜的系統(tǒng)。JMF的主要應(yīng)用功能之一是多媒體數(shù)據(jù)流在網(wǎng)絡(luò)中的實(shí)時(shí)
33、傳輸,其RTP包中提供的RTP包中提供的RTPManager(RTP管理器)、TrackContol(軌道控制器)、SendStream(發(fā)送數(shù)據(jù)流)、ReceiveStream(接收數(shù)據(jù)流)、InetAddress(IP地址)和SessionAddress(會(huì)話地址)等類使得編寫網(wǎng)絡(luò)實(shí)時(shí)數(shù)據(jù)傳輸變得容易,基于RTP協(xié)議的RTP應(yīng)用程序框架為實(shí)現(xiàn)流媒體在網(wǎng)絡(luò)中實(shí)時(shí)傳輸提供了Java程序框架,應(yīng)用它可方便的實(shí)現(xiàn)多媒體數(shù)據(jù)流在網(wǎng)絡(luò)中的實(shí)時(shí)傳
34、輸。實(shí)時(shí)傳輸協(xié)議RTP是在Internet網(wǎng)上針對(duì)多媒體數(shù)據(jù)流的一種傳輸協(xié)議,RTP被定義為在一對(duì)一獲一對(duì)多的傳輸情況下工作的,其目的是提供時(shí)間信息和實(shí)現(xiàn)多媒體數(shù)據(jù)流的同步。RTP由RTP和RTCP(實(shí)時(shí)控制協(xié)議)兩個(gè)部分組成。RTP本身并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機(jī)制,可不提供流量控制或擁塞控制,它</p><p> 2.2.2 JAVA 網(wǎng)絡(luò)編程技術(shù)</p><p>
35、網(wǎng)絡(luò)編程的目的就是指直接或間接地通過網(wǎng)絡(luò)協(xié)議與其他計(jì)算機(jī)進(jìn)行通訊。網(wǎng)絡(luò)編程中有兩個(gè)主要的問題,一個(gè)是如何準(zhǔn)確的定位網(wǎng)絡(luò)上一臺(tái)或多臺(tái)主機(jī),另一個(gè)就是找到主機(jī)后如何可靠高效的進(jìn)行數(shù)據(jù)傳輸。在TCP/IP協(xié)議中IP層主要負(fù)責(zé)網(wǎng)絡(luò)主機(jī)的定位,數(shù)據(jù)傳輸?shù)穆酚桑蒊P地址可以唯一地確定Internet上的一臺(tái)主機(jī)。而TCP層則提供面向應(yīng)用的可靠的或非可靠的數(shù)據(jù)傳輸機(jī)制,這是網(wǎng)絡(luò)編程的主要對(duì)象,一般不需要關(guān)心IP層是如何處理數(shù)據(jù)的?! ∧壳拜^為流行
36、的網(wǎng)絡(luò)編程模型是客戶機(jī)/服務(wù)器(C/S)結(jié)構(gòu)。即通信雙方一方作為服務(wù)器等待客戶提出請(qǐng)求并予以響應(yīng)??蛻魟t在需要服務(wù)時(shí)向服務(wù)器提出申請(qǐng)。服務(wù)器一般作為守護(hù)進(jìn)程始終運(yùn)行,監(jiān)聽網(wǎng)絡(luò)端口,一旦有客戶請(qǐng)求,就會(huì)啟動(dòng)一個(gè)服務(wù)進(jìn)程來響應(yīng)該客戶,同時(shí)自己繼續(xù)監(jiān)聽服務(wù)端口,使后來的客戶也能及時(shí)得到服務(wù)。</p><p> 數(shù)據(jù)在Internet中是以有限大小的包形式傳輸?shù)模@些包稱為數(shù)據(jù)報(bào)(datagram).但是,由于數(shù)據(jù)報(bào)長
37、度有限,通常必須將數(shù)據(jù)分解為多個(gè)包,在目的地再重新組合。有可能一包或多個(gè)包在傳輸中丟失或遭到破壞。由于網(wǎng)絡(luò)視頻會(huì)議的實(shí)時(shí)性要求,不可能讓視頻傳輸?shù)拿恳回懚紲?zhǔn)確無誤。而TCP協(xié)議正是為數(shù)據(jù)可靠傳輸而設(shè)計(jì)的。那么選擇UDP協(xié)議,即用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,UDP),就成為一種必然。</p><p> Socket是網(wǎng)絡(luò)上運(yùn)行的兩個(gè)程序間雙向通訊的一端,它既可以接受請(qǐng)求,也可以發(fā)送
38、請(qǐng)求,利用它可以較為方便的編寫網(wǎng)絡(luò)上數(shù)據(jù)的傳遞。在Java中,有專門的Socket類來處理用戶的請(qǐng)求和響應(yīng)。利用Socket類的方法,就可以實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)之間的通訊。在Java中Socket可以理解為客戶端或者服務(wù)器端的一個(gè)特殊的對(duì)象,這個(gè)對(duì)象有兩個(gè)關(guān)鍵的方法,一個(gè)是getInputStream方法,另一個(gè)是getOutputStream方法。getInputStream方法可以得到一個(gè)輸入流,客戶端的Socket對(duì)象上的getInpu
39、tStream方法得到的輸入流其實(shí)就是從服務(wù)器端發(fā)回的數(shù)據(jù)流。GetOutputStream方法得到一個(gè)輸出流,客戶端Socket對(duì)象上的getOutputStream方法返回的輸出流就是將要發(fā)送到服務(wù)器端的數(shù)據(jù)流,(其實(shí)是一個(gè)緩沖區(qū),暫時(shí)存儲(chǔ)將要發(fā)送過去的數(shù)據(jù))。</p><p> 多播通信是一類特殊的IP地址(D類IP地址)這些IP地址并不和任何主機(jī)關(guān)聯(lián),而是專門為多播通信保留下來的,地址范圍224.0.0
40、.1-239.255.255.255這間,其中224.0.0.1-224.0.0.255是留作為多播路由信息使用的。此外,所有其它D類IP地址都可以隨便進(jìn)行通信。</p><p> 2.3 系統(tǒng)需求分析</p><p> 由于政府部門和企事業(yè)單位對(duì)視頻會(huì)議系統(tǒng)有強(qiáng)烈需求,并且人們對(duì)視頻和音頻信息的需求愈來愈強(qiáng)烈,所以有必要開發(fā)一個(gè)網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)。并且近些年來,依托計(jì)算機(jī)技術(shù)、通信技術(shù)
41、和網(wǎng)絡(luò)條件的發(fā)展,集音頻、視頻、圖像、文字、數(shù)據(jù)為一體的多媒體信息,使越來越多的人開始通過互聯(lián)網(wǎng)享受到網(wǎng)上生活的樂趣,縮短了時(shí)區(qū)和地域的距離。遠(yuǎn)程通信的各種優(yōu)勢給人們帶來的方便也促使人們對(duì)這一領(lǐng)域進(jìn)行更加深入的探索?,F(xiàn)代社會(huì)中信息的無限量擴(kuò)大,交通工具的便捷,互聯(lián)網(wǎng)技術(shù)的充分應(yīng)用等導(dǎo)致了行業(yè)間競爭的全球化,這就要求現(xiàn)代部門、企業(yè)要具備更加靈敏的神經(jīng),更扁平化的管理,更快速的反應(yīng)和決策,更貼切的市場宣傳和服務(wù)。所有這一切是由于信息技術(shù)的發(fā)
42、展帶來的,同樣也要求有先進(jìn)的信息技術(shù)來提高部門、企業(yè)的競爭力。視頻會(huì)議系統(tǒng)的可以跨越空間距離、靈活多樣的面對(duì)面的交互,適應(yīng)現(xiàn)代社會(huì)的方便、快捷、高效、快節(jié)奏,它為用戶帶來的經(jīng)濟(jì)效益,使視頻會(huì)議系統(tǒng)的使用正在向各行各業(yè)滲透。視頻會(huì)議系統(tǒng)是支持人們遠(yuǎn)距離進(jìn)行實(shí)時(shí)信息交流、開展協(xié)同工作的應(yīng)用系統(tǒng)。視頻會(huì)議系統(tǒng)實(shí)時(shí)傳輸視頻與音頻信息,使協(xié)作成員可以遠(yuǎn)距離進(jìn)行直觀、真實(shí)的視音頻交流。另一方面,利用多媒</p><p>
43、第三章 系統(tǒng)概要設(shè)計(jì)</p><p> 3.1 系統(tǒng)總體設(shè)計(jì)</p><p> 3.1.1 運(yùn)行環(huán)境</p><p> 操作系統(tǒng):Windows 2000/XP/2003 等</p><p><b> 安裝JDK</b></p><p><b> 安裝JMF</b>
44、</p><p><b> 安裝eclipse</b></p><p><b> 安裝攝像頭</b></p><p> 3.1.2 系統(tǒng)流程 </p><p> 服務(wù)器端流程如圖3.1所示:</p><p> 圖3.1 服務(wù)器端流程圖</p><
45、p> 客戶端流程如圖3.2 所示:</p><p> 圖3.2 客戶端流程圖</p><p> 3.1.3 系統(tǒng)結(jié)構(gòu)</p><p> 通過學(xué)習(xí)和研究,我們通過多播技術(shù)實(shí)現(xiàn)了多點(diǎn)對(duì)多點(diǎn)的視頻會(huì)議系統(tǒng)。整個(gè)系統(tǒng)包括這樣幾個(gè)模塊:</p><p> 文本聊天模塊:該功能是網(wǎng)絡(luò)視頻會(huì)議的最基本的功能。通過該模塊實(shí)現(xiàn)了會(huì)議成員的聊天通
46、信。首先,每個(gè)會(huì)議職員通過與服務(wù)器連接加入到會(huì)議組,同時(shí)通過給自己取昵稱將自己的昵稱發(fā)送給服務(wù)器,讓會(huì)議組的每個(gè)成員了解自己的身份。會(huì)議成員在聊天的時(shí)候不是將文本發(fā)送給某個(gè)人,而是發(fā)送給整個(gè)會(huì)議組。</p><p> 視頻通信模塊:該功能利用JMF軟件開發(fā)包,基于RTP協(xié)議實(shí)時(shí)發(fā)送和接受視頻流。并且利用JMF多媒體組件構(gòu)造播放器,進(jìn)行實(shí)時(shí)播放。在實(shí)現(xiàn)了點(diǎn)對(duì)點(diǎn)的基本視頻傳輸?shù)幕A(chǔ)上,我們應(yīng)用了多播技術(shù)。當(dāng)某個(gè)會(huì)議
47、成員開始進(jìn)行視頻連接以后,他能通過視頻會(huì)議系統(tǒng)看到所有其他已經(jīng)建立視頻連接會(huì)議成員。</p><p> 3.2 系統(tǒng)接口的概要設(shè)計(jì)</p><p> 3.2.1 服務(wù)器端設(shè)計(jì)</p><p> 系統(tǒng)的服務(wù)器端的設(shè)計(jì)只需顯示在線的用戶,簡單設(shè)計(jì)圖示如下:</p><p> 圖3.3 系統(tǒng)服務(wù)器端設(shè)計(jì)</p><p&g
48、t; 3.2.2 客戶端設(shè)計(jì)</p><p> 系統(tǒng)客戶端的設(shè)計(jì)如下:</p><p><b> 顯示在線列表;</b></p><p> 顯示界面中用戶視頻;</p><p><b> 用戶聊天文本框;</b></p><p> 視頻連接及退出按鈕。</p
49、><p><b> 簡單設(shè)計(jì)圖示如下:</b></p><p> 圖3.4 系統(tǒng)客戶端設(shè)計(jì)</p><p> 3.3 系統(tǒng)出錯(cuò)處理設(shè)計(jì)</p><p> 3.3.1 出錯(cuò)信息及處理方法</p><p> 系統(tǒng)輸出信息的形式、含意及處理方法。見表3.1。</p><p>
50、; 表3.1 出錯(cuò)信息及處理方法</p><p> 3.3.2 系統(tǒng)維護(hù)設(shè)計(jì) </p><p> 為了保證系統(tǒng)的穩(wěn)定運(yùn)行,本系統(tǒng)在設(shè)計(jì)時(shí)考慮到了系統(tǒng)的安全性、可靠性、兼容性、可擴(kuò)展性等因素。了很多驗(yàn)證條件,盡量保證信息的合法性與正確性,是系統(tǒng)能夠穩(wěn)定運(yùn)行。此外本系統(tǒng)的設(shè)計(jì)還保證了系統(tǒng)功能的可擴(kuò)展性。</p><p> 安全性:在視頻會(huì)議系統(tǒng)前端安置加密機(jī)或者
51、直接使用加密網(wǎng)卡可以提高在傳輸過程中的安全性。加密設(shè)備可直接提供加密能力,從而實(shí)現(xiàn)用戶的身份驗(yàn)證以及未經(jīng)授權(quán)的數(shù)據(jù)訪問和惡意侵犯。</p><p> 可靠性:該系統(tǒng)設(shè)計(jì)的合理性保證了可靠穩(wěn)定的運(yùn)行,支持當(dāng)前大多數(shù)硬件平臺(tái),核心線程優(yōu)先保護(hù)、數(shù)據(jù)流容錯(cuò)的設(shè)計(jì)思路使系統(tǒng)可更加穩(wěn)定的運(yùn)轉(zhuǎn)。</p><p> 兼容性:該系統(tǒng)擁有開放的集成接口,可以非常靈活的與用戶集成,并滿足用戶的需要,實(shí)現(xiàn)其
52、功能。</p><p> 可擴(kuò)展性:該系統(tǒng)可進(jìn)行再擴(kuò)展,在此基礎(chǔ)上擴(kuò)展為一點(diǎn)對(duì)多點(diǎn),多點(diǎn)對(duì)多點(diǎn)的視頻會(huì)議系統(tǒng)。</p><p> 第四章 系統(tǒng)詳細(xì)設(shè)計(jì)</p><p> 本系統(tǒng)的詳細(xì)設(shè)計(jì)根據(jù)概要設(shè)計(jì)中所劃分的各個(gè)功能模塊進(jìn)行詳細(xì)的闡述:</p><p> 4.1 文本聊天模塊的詳細(xì)設(shè)計(jì)</p><p> 本系
53、統(tǒng)要運(yùn)用Java網(wǎng)絡(luò)編程中Socket層次,即傳統(tǒng)網(wǎng)絡(luò)編程常采用的方式,通過Client/Server(客戶端/服務(wù)器端)機(jī)構(gòu)的應(yīng)用程序之間建立Socket套接字連接,然后在連接之上進(jìn)行數(shù)據(jù)通信。</p><p> 通過SocketChannel建立基于UDP的無阻塞連接。創(chuàng)建一個(gè)無阻塞服務(wù)器,讓每個(gè)客戶端與之相連。某個(gè)客戶端將文本消息發(fā)送給無阻塞的服務(wù)器,服務(wù)器在將這條文本消息組播給各個(gè)與之相連的客戶端。&l
54、t;/p><p> 數(shù)據(jù)在Internet中是以有限大小的包形式傳輸?shù)?,這些包稱為數(shù)據(jù)報(bào)(datagram).但是,由于數(shù)據(jù)報(bào)長度有限,通常必須將數(shù)據(jù)分解為多個(gè)包,在目的地再重新組合。有可能一包或多個(gè)包在傳輸中丟失或遭到破壞。由于網(wǎng)絡(luò)視頻會(huì)議的實(shí)時(shí)性要求,不可能讓視頻傳輸?shù)拿恳回懚紲?zhǔn)確無誤。而TCP協(xié)議正是為數(shù)據(jù)可靠傳輸而設(shè)計(jì)的。那么選擇UDP協(xié)議,即用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,U
55、DP),就成為一種必然。</p><p> 基于UDP的Socket編程流程圖如下:</p><p> 圖4.1 數(shù)據(jù)報(bào)套接字流程圖</p><p><b> 服務(wù)器:</b></p><p> serverSocketChannel = ServerSocketChannel.open();//打開連接通道&l
56、t;/p><p> serverSocketChannel.socket().bind(new InetSocketAddress(12345));//綁定IP與端口號(hào)</p><p> getConnection();//接收連接請(qǐng)求</p><p><b> 客戶端:</b></p><p> socketCha
57、nnel = SocketChannel.open();打開連接通道</p><p> socketChannel.connect(new InetSocketAddress(InetAddress.getByName</p><p> (serverAddress),12345));//連接到服務(wù)器</p><p> receiveMessage = new
58、 ReceivingThread();//構(gòu)造接收信息線程</p><p> receiveMessage.start();//運(yùn)行線程</p><p> socketChannel.write(writeBuffer);//往通道里寫入消息</p><p> socketChannel.read(readBuffer);//讀取通道中消息</p>
59、<p> 4.2 視頻通信模塊的詳細(xì)設(shè)計(jì)</p><p> 4.2.1 網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)結(jié)構(gòu)的詳細(xì)設(shè)計(jì)</p><p> 網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)其根本目的是會(huì)議。會(huì)議的基本特征就是,參與會(huì)議的每個(gè)成員都可以了解到其他成員的狀況,每個(gè)成員必須到場,然后進(jìn)行交流,并且每個(gè)成員都應(yīng)該看到所有的交流內(nèi)容。在這個(gè)根本目的完成的基礎(chǔ)上,才可以使網(wǎng)絡(luò)視頻會(huì)議的特點(diǎn)得以發(fā)揮。所以,我們的視頻
60、會(huì)議系統(tǒng)采用了多播的方法,使得會(huì)議的每個(gè)成員都可以得到會(huì)議的所有信息。</p><p> 通過對(duì)視頻會(huì)議基本特點(diǎn)的分析,系統(tǒng)結(jié)構(gòu)圖如下圖所示:</p><p> 圖4.2 網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)結(jié)構(gòu)圖</p><p> 4.2.2 視音頻傳輸?shù)脑敿?xì)設(shè)計(jì)</p><p> 使用JMF API的RTP協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)多媒體程序,可以分為兩個(gè)部分,一
61、部分是通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的主機(jī)端程序,另一部分是接收數(shù)據(jù)的客戶端程序。</p><p> 在JMF API中定義了幾個(gè)與RTP有關(guān)的包,即javax.media.rtp、javax.media.rtp.enent、javax.media.rtp.rtcp登包,通過這些包提供的API,可以實(shí)現(xiàn)RTP數(shù)據(jù)流的傳輸、接受和回放?;贘MF多媒體數(shù)據(jù)流RTP傳輸、接受和回放過程圖如下:</p><p&
62、gt; 圖4.3 基于JMF多媒體數(shù)據(jù)流RTP傳輸、接受和回放過程</p><p> 數(shù)據(jù)可以來自于多媒體文件,如視頻文件,也可以來自于音/視頻采集設(shè)備,如聲卡、攝像頭等。這些數(shù)據(jù)源的位置不同,格式不同,JMF通過一個(gè)稱為媒體定位器(Media—Locator)的類對(duì)相應(yīng)的數(shù)據(jù)源進(jìn)行定位,MediaLocator對(duì)象內(nèi)仔儲(chǔ)了數(shù)據(jù)源的位置信息。JMF管理器(Manager)根據(jù)媒體定位器提供的信息創(chuàng)建數(shù)據(jù)源。這
63、個(gè)數(shù)據(jù)源和文件、攝像頭等物理數(shù)據(jù)源不同,是一個(gè)抽象的概念,是多種不同類型數(shù)據(jù)源的抽象。這樣,JMF可以隱藏底層細(xì)節(jié),使編程者在編程過程中不再考慮數(shù)據(jù)的具體來源和位置,只需考慮數(shù)據(jù)的格式、速率等信息就行了。</p><p> 數(shù)據(jù)源生成后 ,可以直接交給播放器(Player),設(shè)定格式后就可以在本機(jī)播放了。但若要將數(shù)據(jù)流存儲(chǔ)成其他格式的文件或者通過 RTP協(xié)議在網(wǎng)絡(luò)上傳輸 ,則需要對(duì)其進(jìn)行再處理。再處理工作由處理
64、器(Processor)完成 ,處理后的數(shù)據(jù)源可以存儲(chǔ),也可以在網(wǎng)絡(luò)上傳輸。通過 RTP進(jìn)行傳輸前 ,需要建立會(huì)話管理器(SessionManager),建立 RTP會(huì)話后再開始發(fā)送流,發(fā)送時(shí)會(huì)打開兩個(gè)端口,一個(gè)用于傳輸 RTP數(shù)據(jù)流;另一個(gè)用來傳輸 RTCP包。</p><p> 多媒體數(shù)據(jù)流的接收過程是發(fā)送的逆過程。由RTP信道獲得的數(shù)據(jù)流作為接收端的數(shù)據(jù)源,對(duì)數(shù)據(jù)源處理后便可以實(shí)現(xiàn)數(shù)據(jù)流的回放、存儲(chǔ),甚至
65、再發(fā)送。</p><p><b> 詳細(xì)設(shè)計(jì)傳輸過程:</b></p><p> dsVideo = createDataSource(vf);//創(chuàng)建視頻數(shù)據(jù)源</p><p> dsAudio = createDataSource(af);//創(chuàng)建音頻數(shù)據(jù)源</p><p> devices = Captur
66、eDeviceManager.getDeviceList(format);//得到類型為format的設(shè)備的清單,存放在表devices中</p><p> ds = Manager.createDataSource(ml);//通過媒體定位器創(chuàng)建數(shù)據(jù)源</p><p> RTPTransmit rtpTransmit = new RTPTransmit(processor,ipAdd
67、r,port);//構(gòu)造RTP會(huì)話</p><p> result = createProcessor();// 產(chǎn)生一個(gè)處理器</p><p> result = createTransmitter();產(chǎn)生RTP會(huì)話,將處理器輸出的數(shù)據(jù)傳給指定的IP地址的指定的端口號(hào)</p><p> processor.start();// 讓處理器開始傳輸</p
68、><p> 4.2.2 多播的詳細(xì)設(shè)計(jì)</p><p> 多播基本思想是一個(gè)源IP主機(jī)只進(jìn)行一次發(fā)送,多個(gè)接收者(目標(biāo) IP主機(jī))可以接收到相同數(shù)據(jù)的一個(gè)拷貝。但是多個(gè)接收者必須都注冊(cè)加入同一多播組。IP多播服務(wù)是一種開放的服務(wù)模型,任何主機(jī)可以隨時(shí)加入或退出某個(gè)多播組。</p><p> 利用這種思想,可以實(shí)現(xiàn)會(huì)議中的多點(diǎn)對(duì)多點(diǎn)的視頻傳輸,已達(dá)到組織會(huì)議的目的。
69、多播系統(tǒng)結(jié)構(gòu)圖:</p><p> 圖4.4 多播系統(tǒng)結(jié)構(gòu)圖</p><p><b> 多播實(shí)現(xiàn)過程:</b></p><p> group = InetAddress.getByName(MuiltAddr); //設(shè)置組播地址</p><p> socket = new MulticastSocket(por
70、t); //創(chuàng)建MulticastSocket類并將端口與之關(guān)聯(lián)</p><p> socket.joinGroup(group); //加入此組播組</p><p> 4.3 系統(tǒng)界面的詳細(xì)設(shè)計(jì)</p><p> 本系統(tǒng)在進(jìn)行界面設(shè)計(jì)的時(shí)候考慮了系統(tǒng)的功能,對(duì)各功能模塊進(jìn)行詳細(xì)合理的布局:</p><p> 1. 把一些功能加到界
71、面中的菜單中,有連接服務(wù)器,連接視頻,斷開連接,退出等子菜單項(xiàng)。</p><p> 2. 在界面中添加在線用戶列表框,用以顯示在線的用戶。</p><p> 3. 在界面中用一個(gè)大的Panel 裝載舉行會(huì)議時(shí)的各個(gè)用戶的視頻框。</p><p> 4. 在界面中添加實(shí)現(xiàn)簡單聊天室功能的聊天文本框。</p><p> 5. 在界
72、面底端有一些功能按鈕,如連接視頻,發(fā)送信息等。</p><p><b> 第五章 系統(tǒng)實(shí)現(xiàn)</b></p><p> 5.1 系統(tǒng)開發(fā)環(huán)境</p><p> 系統(tǒng):Microsoft Windows XP Professional Service Pack 2</p><p><b> 開發(fā)語言:JAV
73、A</b></p><p> 編程環(huán)境:Eclipse</p><p> JMF版本:JMF 2.1.1</p><p> JDK版本:JDK 5.0</p><p> Eclipse版本:Eclipse 3.2</p><p><b> 5.2 系統(tǒng)實(shí)現(xiàn)</b></p
74、><p> 5.2.1 服務(wù)器端套接字建立</p><p> 數(shù)據(jù)通訊是雙向的,客戶端通過套接字請(qǐng)求數(shù)據(jù)通訊后,服務(wù)器端需要有一個(gè)響應(yīng)客戶端請(qǐng)求通訊的服務(wù)程序,該服務(wù)器程序應(yīng)用ServerSocket類完成與客戶端的通訊。</p><p> ServerSocket類用來監(jiān)聽和響應(yīng)客戶端的連接請(qǐng)求,并接受客戶端發(fā)送的數(shù)據(jù)信息。ServerSocket類在服務(wù)器端等
75、待其他機(jī)器同它的連接,一旦客戶端程序建立一個(gè)套接字連接,ServerSocket類就會(huì)通過accept()方法返回一個(gè)對(duì)應(yīng)的服務(wù)器端套接字對(duì)象,以便進(jìn)行直接通訊。從兩臺(tái)計(jì)算機(jī)連接成功起,服務(wù)器端與客戶端就得到了一個(gè)真正的“套接字-套接字”連接,此時(shí)利用Socket類中的getInputStream()及getOutputStream()方法從每端的套接字產(chǎn)生對(duì)應(yīng)的InputStream和OutputStream對(duì)象,并將套接字?jǐn)?shù)據(jù)流封裝
76、到緩沖區(qū)內(nèi)以便進(jìn)行兩臺(tái)機(jī)器之間的數(shù)據(jù)通訊。</p><p> serverSocketChannel = ServerSocketChannel.open();//打開連接通道</p><p> serverSocketChannel.socket().bind(new InetSocketAddress(12345));</p><p> //綁定IP與端口
77、號(hào)</p><p> getConnection();//接收連接請(qǐng)求</p><p> charSet = Charset.forName("UTF-8");//開啟服務(wù)器套接字通道</p><p> serverSocketChannel = ServerSocketChannel.open();</p><p>
78、; serverSocketChannel.socket().bind(newInetSocketAddress(12345)); serverSocketChannel.configureBlocking(false);</p><p> //設(shè)置阻塞模式為非阻塞模式等待一個(gè)連接</p><p> 5.2.2 客戶端套接字建立</p><p>
79、客戶端使用Socket類的方法建立(類似于服務(wù)器端),客戶端向套接字對(duì)象中的數(shù)據(jù)流輸出和獲取數(shù)據(jù)。客戶端程序試圖與服務(wù)器之間在Socket層次上建立一個(gè)連接,通過套接字輸入流讀取方法從套接字?jǐn)?shù)據(jù)流中獲取服務(wù)器信息,以及寫入數(shù)據(jù)到套接字輸出流中向服務(wù)器發(fā)送信息,并且等待服務(wù)器的答復(fù)。如果連接成功,則該客戶端程序通過套接字與服務(wù)器可以進(jìn)行正常的數(shù)據(jù)交換。</p><p> socketChannel = Socke
80、tChannel.open();打開連接通道</p><p> socketChannel.connect(new InetSocketAddress(InetAddress.getByName</p><p> (serverAddress),12345));//連接到服務(wù)器</p><p> receiveMessage = new ReceivingTh
81、read();//構(gòu)造接收信息線程</p><p> receiveMessage.start();//運(yùn)行線程</p><p> socketChannel.write(writeBuffer);//往通道里寫入消息</p><p> socketChannel.read(readBuffer);//讀取通道中消息</p><p>
82、 5.2.3 視音頻發(fā)送</p><p> 視音頻數(shù)據(jù)以RTP實(shí)時(shí)流的形式發(fā)送出去,通過會(huì)話管理器(Session Manager)傳輸RTP數(shù)據(jù)的步驟為:</p><p> 產(chǎn)生一個(gè)JMF處理器(Processor),為每一種RTP格式設(shè)置相應(yīng)的軌跡格式。</p><p> 從處理器獲取輸出數(shù)據(jù)源。</p><p> 會(huì)話管理器產(chǎn)生
83、一個(gè)發(fā)送數(shù)據(jù)流,即以數(shù)據(jù)源和序號(hào)作為參數(shù)調(diào)用會(huì)話管理器的createSendStream()方法。</p><p><b> 開始會(huì)話傳輸。</b></p><p> 通過監(jiān)聽ControllerEvent事件控制會(huì)話的過程。</p><p> 停止會(huì)話,刪除會(huì)話管理器。</p><p><b> 定義
84、以下內(nèi)容:</b></p><p> // 媒體定位 IP 端口 處理器 會(huì)話管理器 輸出數(shù)據(jù)源</p><p> private MediaLocator Locator;</p><p> private String IpAddress;</p><p> private int portBase;</p
85、><p> private Processor processor=null;</p><p> private RTPManger rtpMgrs[];</p><p> private DataSource dataOutput=null;</p><p><b> 具體實(shí)現(xiàn)函數(shù)如下:</b></p>
86、<p><b> //發(fā)送數(shù)據(jù)函數(shù)</b></p><p> public RTPTransmit(Processor processor,String ipAddress, String pb){}</p><p> //為媒體定位器產(chǎn)生一個(gè)處理器</p><p> private String createProces
87、sor(){}</p><p> // 為處理器的每一個(gè)媒體磁道產(chǎn)生一個(gè)RTP會(huì)話</p><p> private String createTransmitter() {}</p><p> // 讓處理器開始傳輸</p><p> public synchronized String start(){}</p>&
88、lt;p><b> // 停止傳輸</b></p><p> public void stop(){}</p><p><b> //組播線程類</b></p><p> class CreateJoinMuiltcastThread extends Thread {}</p><p>
89、; //處理器的狀態(tài)監(jiān)聽器類</p><p> class StateListener implements ControllerListener {}</p><p> 5.2.4 視音頻接收</p><p> 接收網(wǎng)絡(luò)實(shí)時(shí)媒體數(shù)據(jù)流是通過java.media包中定義的各種RTP事件監(jiān)聽器和RTP事件處理類來處理和控制的,使用java.media包中的Pl
90、ayer類可以實(shí)時(shí)播放網(wǎng)絡(luò)多媒體數(shù)據(jù)流,java.media包中的處理媒體流接收和播放完成了整個(gè)接收RTP數(shù)據(jù)的過程。接收部分程序?yàn)槊恳环N新接收到的媒體數(shù)據(jù)流產(chǎn)生一個(gè)播放器,一邊接收媒體流數(shù)據(jù),一邊將媒體數(shù)據(jù)播放出來,其實(shí)現(xiàn)分為以下幾個(gè)步驟:</p><p> 1. 實(shí)現(xiàn)ReceiveStreamListener監(jiān)聽接口,監(jiān)聽NewReceiveStreamEvent事件。</p><p&g
91、t; 2. 當(dāng)接收到NewReceiveStreamEvent事件后,通過事件獲取接收媒體數(shù)據(jù)流(ReceiveStream),然后通過接收媒體數(shù)據(jù)流獲取RTP數(shù)據(jù)源(DataSource)。</p><p> 3. 將數(shù)據(jù)源傳給Manager.createPlayer()產(chǎn)生一個(gè)播放器。</p><p> 4. 給播放器添加監(jiān)聽器,等到播放器實(shí)現(xiàn)后,即可顯示播放數(shù)據(jù)。</p&
92、gt;<p><b> 定義以下內(nèi)容:</b></p><p> String sessions[] = null; // RTP會(huì)話字符串?dāng)?shù)組</p><p> RTPManager mgrs[] = null; // RTP管理器數(shù)組</p><p> Vector play
93、erPanels = null; // 管理播放器窗口的向量</p><p> boolean dataReceived = false; // 是否接收到數(shù)據(jù)的標(biāo)志</p><p> Object dataSync = new Object(); // 同步對(duì)象</p><p><b> 具體實(shí)現(xiàn)函數(shù)如下:
94、</b></p><p> //接收數(shù)據(jù)實(shí)現(xiàn)函數(shù)</p><p> public Receive(String sessions[]) {}</p><p> //初始化RTP會(huì)話,準(zhǔn)備接收數(shù)據(jù)</p><p> protected boolean initialize(){}</p><p>&l
95、t;b> //關(guān)閉播放窗口</b></p><p> protected void close(){}</p><p> //判斷數(shù)據(jù)是否接收完成</p><p> public boolean isDone() {}</p><p> // 通過播放器查找播放窗口</p><p> Pl
96、ayerPanel find(Player p) {}</p><p> // 通過接收數(shù)據(jù)流查找播放窗口</p><p> PlayerPanel find(ReceiveStream strm) {}</p><p> //實(shí)現(xiàn)ReceiveStreamListener監(jiān)聽接口</p><p> public synchroniz
97、ed void update( ReceiveStreamEvent evt) {}</p><p> 第六章 性能測試與分析</p><p> 6.1 測試實(shí)例(測試集)的研究與選擇</p><p> 測試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。好的測試方案是盡可能發(fā)現(xiàn)尚未發(fā)現(xiàn)的錯(cuò)誤的測試方案。</p><p> 本節(jié)分別介紹各個(gè)功
98、能的測試用例及其預(yù)期結(jié)果。</p><p><b> 測試服務(wù)器的開啟:</b></p><p> 在搭建好運(yùn)行環(huán)境后,運(yùn)行,服務(wù)器正常連接。(如有問題時(shí),系統(tǒng)拋出異常,提示開啟失敗對(duì)話框)</p><p> 測試用戶連接服務(wù)器:</p><p> 在開啟服務(wù)器之后,用戶進(jìn)行連接,由于開始是在寢室連接,速度比較慢
99、,所以連接超時(shí),拋出異常。后又在其他地方連接成功。</p><p><b> 測試舉行會(huì)議部分:</b></p><p> 進(jìn)行視頻連接,連接成功,在視頻會(huì)議過程中,視音頻的傳輸都成功。后又請(qǐng)同學(xué)用黑盒法進(jìn)行了測試,曾出現(xiàn)問題,連接中拋出異常,不能正常連接,也有的是視音頻傳輸過程中出現(xiàn)了問題,但大多都是因?yàn)槿藶橐蛩兀〝z像頭或耳機(jī)等出現(xiàn)問題)。</p>
100、<p><b> 測試聊天室部分:</b></p><p> 在連接到服務(wù)器后,列表中顯示所有上線的用戶,在文本框中發(fā)送數(shù)據(jù),發(fā)現(xiàn)所有的用戶都能收到,證明沒有問題。</p><p><b> 6.2 性能分析</b></p><p> 1. 系統(tǒng)安全性能分析</p><p>
101、本系統(tǒng)具有很強(qiáng)安全性,能夠穩(wěn)定運(yùn)行。在視頻會(huì)議系統(tǒng)前端安置加密機(jī)或者直接使用加密網(wǎng)卡可以提高在傳輸過程中的安全性。加密設(shè)備可直接提供加密能力,從而實(shí)現(xiàn)用戶的身份驗(yàn)證以及未經(jīng)授權(quán)的數(shù)據(jù)訪問和惡意侵犯。</p><p> 2. 系統(tǒng)穩(wěn)定性能分析</p><p> 該系統(tǒng)設(shè)計(jì)的合理性保證了可靠穩(wěn)定的運(yùn)行,支持當(dāng)前大多數(shù)硬件平臺(tái),核心線程優(yōu)先保護(hù)、數(shù)據(jù)流容錯(cuò)的設(shè)計(jì)思路使系統(tǒng)可更加穩(wěn)定的運(yùn)轉(zhuǎn)。在
102、經(jīng)過大量、多類型復(fù)雜組合反復(fù)多次測試后,系統(tǒng)始終運(yùn)行穩(wěn)定,說明系統(tǒng)的穩(wěn)定性具有一定可信度。</p><p> 第七章 課程設(shè)計(jì)總結(jié)</p><p> 本系統(tǒng)已經(jīng)完成了預(yù)期目標(biāo),并且在預(yù)期目標(biāo)基礎(chǔ)上有了一定的突破。從系統(tǒng)最初的可行性分析、需求分析、設(shè)計(jì),到最后實(shí)現(xiàn)的過程中,經(jīng)過多次反復(fù)的修改,功能逐漸完善,已經(jīng)基本達(dá)到了實(shí)用,方便,人性化等預(yù)期目標(biāo),且能實(shí)現(xiàn)多人在線同時(shí)舉行會(huì)議。<
103、/p><p><b> 7.1 系統(tǒng)總結(jié)</b></p><p> 7.1.1 系統(tǒng)特點(diǎn)介紹</p><p> 1. 較完善的安全性和穩(wěn)定性</p><p> 本系統(tǒng)基于JAVA語言編寫,有強(qiáng)大的錯(cuò)誤及異常處理功能。支持當(dāng)前大多數(shù)硬件平臺(tái),核心線程優(yōu)先保護(hù)、數(shù)據(jù)流容錯(cuò)的設(shè)計(jì)思路使系統(tǒng)可更加穩(wěn)定的運(yùn)轉(zhuǎn)。在視頻會(huì)議系統(tǒng)前
104、端安置加密機(jī)或者直接使用加密網(wǎng)卡可以提高在傳輸過程中的安全性。加密設(shè)備可直接提供加密能力,從而實(shí)現(xiàn)用戶的身份驗(yàn)證以及未經(jīng)授權(quán)的數(shù)據(jù)訪問和惡意侵犯。</p><p><b> 2.人性化設(shè)計(jì)</b></p><p> 在考慮了多方面因素,查閱相關(guān)資料和試用其他視頻會(huì)議系統(tǒng)后,總結(jié)并設(shè)計(jì)了人性化的界面,方便的菜單選項(xiàng)和按鈕,便捷的視頻及聊天功能,且還可以看到在線參加會(huì)
105、議的人員,易于用戶使用。</p><p> 7.1.2 系統(tǒng)存在的問題</p><p> 本系統(tǒng)是點(diǎn)對(duì)點(diǎn)的視頻會(huì)議系統(tǒng),目前可完全實(shí)現(xiàn)多人在線同時(shí)舉行會(huì)議的功能。測試中是在小范圍的局域網(wǎng)內(nèi)進(jìn)行的,可能在實(shí)際廣域網(wǎng)中測試不會(huì)太順利。</p><p> 7.2 系統(tǒng)改進(jìn)建議或設(shè)想</p><p> 在系統(tǒng)改進(jìn)時(shí),可向一點(diǎn)對(duì)多點(diǎn)和多點(diǎn)對(duì)多點(diǎn)
106、方面改進(jìn)。并參考現(xiàn)在流行的一些視頻會(huì)議系統(tǒng)進(jìn)行改進(jìn),且做出文件傳輸部分。</p><p> 7.3 課程設(shè)計(jì)心得體會(huì)</p><p> 通過這次課程設(shè)計(jì),不僅學(xué)到了很多專業(yè)知識(shí),而且提高了動(dòng)手能力和解決實(shí)際問題的能力,受益匪淺。 </p><p> 此系統(tǒng)已經(jīng)實(shí)現(xiàn)了點(diǎn)對(duì)點(diǎn)視頻連接,以及一些輔助功能,并且經(jīng)過對(duì)功能的測試,反映良好。由于使用JAVA作為開發(fā)
107、工具,所以在跨平臺(tái)方面的優(yōu)點(diǎn)也非常突出。在本次課程設(shè)計(jì)中學(xué)習(xí)了多媒體技術(shù),鞏固了JAVA Socket編程,更有信心進(jìn)行深層次的學(xué)習(xí),并且可以結(jié)合各方面的知識(shí)進(jìn)行多方面的學(xué)習(xí),積累更多知識(shí)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]H.M.Deitel P.J.Deitel,Java 《程序設(shè)計(jì)教程》 清華大學(xué)出版社,2004<
108、/p><p> [2]彭波 孫一林 《Java多媒體技術(shù)》 清華大學(xué)出版社,2004</p><p> [3]劉成德 李 祥 《基IPMulticast/JMF的多媒體網(wǎng)絡(luò)會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》</p><p> [4]Elliotte Rusty Harold 《Java網(wǎng)絡(luò)編程》 中國電力出版社,2005</p><p> [5
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于JAVA視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于Java媒體框架的視頻會(huì)議系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于java的視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-碩士論文
- 基于java的視頻會(huì)議系統(tǒng)(程序+論文)
- 基于Java的IP視頻會(huì)議系統(tǒng)的開發(fā)與實(shí)現(xiàn).pdf
- 基于java技術(shù)bs結(jié)構(gòu)的視頻會(huì)議系統(tǒng)設(shè)計(jì)文檔
- 基于SIP的視頻會(huì)議系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于JAVA的網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)的研究與實(shí)現(xiàn).pdf
- 基于java的遠(yuǎn)程視頻會(huì)議系統(tǒng)(系統(tǒng)+論文)
- 基于BigBlueButton的視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于WebRTC的視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 多人網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 公安視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于組件技術(shù)的視頻會(huì)議系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于Web的視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 視頻會(huì)議系統(tǒng)終端的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于java的視頻會(huì)議系統(tǒng)——畢業(yè)論文
- 基于組播視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 視頻會(huì)議系統(tǒng)的網(wǎng)管系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論