基于Java的視頻會(huì)議系統(tǒng)-JAVA畢業(yè)設(shè)計(jì)論文_第1頁
基于Java的視頻會(huì)議系統(tǒng)-JAVA畢業(yè)設(shè)計(jì)論文_第2頁
基于Java的視頻會(huì)議系統(tǒng)-JAVA畢業(yè)設(shè)計(jì)論文_第3頁
基于Java的視頻會(huì)議系統(tǒng)-JAVA畢業(yè)設(shè)計(jì)論文_第4頁
基于Java的視頻會(huì)議系統(tǒng)-JAVA畢業(yè)設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)科學(xué)與工程學(xué)院網(wǎng)絡(luò)工程專業(yè)2004級(jí)專業(yè)方向課程設(shè)計(jì)報(bào)告目 錄目 錄I第一章 概述11.1 本課題的研究背景11.2 本課題的研究意義11.3 本報(bào)告的目的、內(nèi)容及作者的主要貢獻(xiàn)21.3.1 本報(bào)告的目的21.3.2 本報(bào)告的內(nèi)容21.3.3 作者主要貢獻(xiàn)21.4 國(guó)內(nèi)外相近研究課題的特點(diǎn)及發(fā)展趨勢(shì)21.5 現(xiàn)行研究存在的問題及解決辦法31.5.1 需求分析問題31.5.2 系統(tǒng)設(shè)計(jì)問題31.5.4 代碼實(shí)現(xiàn)問題31.5.5 界面設(shè)計(jì)問題31.6 本課題要達(dá)到的設(shè)計(jì)目標(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è)計(jì)73.1 系統(tǒng)總體設(shè)計(jì)73.1.1 運(yùn)行環(huán)境73.1.2 系統(tǒng)流程73.1.3 系統(tǒng)結(jié)構(gòu)83.2 系統(tǒng)接口的概要設(shè)計(jì)93.2.1 服務(wù)器端設(shè)計(jì)93.2.2 客戶端設(shè)計(jì)93.3 系統(tǒng)出錯(cuò)處理設(shè)計(jì)103.3.1 出錯(cuò)信息及處理方法103.3.2系統(tǒng)維護(hù)設(shè)計(jì)10第四章 系統(tǒng)詳細(xì)設(shè)計(jì)114.1 文本聊天模塊的詳細(xì)設(shè)計(jì)114.2 視頻通信模塊的詳細(xì)設(shè)計(jì)124.2.1 網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)結(jié)構(gòu)的詳細(xì)設(shè)計(jì)124.2.2 視音頻傳輸?shù)脑敿?xì)設(shè)計(jì)134.2.2 多播的詳細(xì)設(shè)計(jì)144.3 系統(tǒng)界面的詳細(xì)設(shè)計(jì)14第五章

3、 系統(tǒng)實(shí)現(xiàn)155.1 系統(tǒng)開發(fā)環(huán)境155.2 系統(tǒng)實(shí)現(xiàn)155.2.1 服務(wù)器端套接字建立155.2.2 客戶端套接字建立155.2.3 視音頻發(fā)送165.2.4 視音頻接收17第六章 性能測(cè)試與分析186.1 測(cè)試實(shí)例(測(cè)試集)的研究與選擇186.2 性能分析18第七章 課程設(shè)計(jì)總結(jié)197.1 系統(tǒng)總結(jié)197.1.1 系統(tǒng)特點(diǎn)介紹197.1.2 系統(tǒng)存在的問題197.2 系統(tǒng)改進(jìn)建議或設(shè)想197.3 課程設(shè)計(jì)心得體會(huì)19參考文獻(xiàn)2121第一章 概述1.1 本課題的研究背景隨著人們對(duì)視頻和音頻信息的需求愈來愈強(qiáng)烈,追求遠(yuǎn)距離的視音頻的同步交互成為新的時(shí)尚。近些年來,依托計(jì)算機(jī)技術(shù)、通信技術(shù)和網(wǎng)絡(luò)

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

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

6、跨越空間距離、靈活多樣的面對(duì)面的交互,適應(yīng)現(xiàn)代社會(huì)的方便、快捷、高效、快節(jié)奏,它為用戶帶來的經(jīng)濟(jì)效益,使視頻會(huì)議系統(tǒng)的使用正在向各行各業(yè)滲透,給這一市場(chǎng)注入了新的活力。1.2 本課題的研究意義從實(shí)用方面:視頻會(huì)議系統(tǒng)是指通過現(xiàn)有的各種電氣通訊傳輸媒體,將人物的靜態(tài)/動(dòng)態(tài)圖像、語音、文字、圖片等多種信息分送到各個(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)等方面帶

7、來巨大的直接和間接效益。由于視頻會(huì)議系統(tǒng)的這些優(yōu)點(diǎn),使得視頻會(huì)議系統(tǒng)備受關(guān)注。并且已經(jīng)有越來越多的人利用這種方式進(jìn)行交流溝通,不僅方便而且拉近了人與人之間的距離?,F(xiàn)在的一些軟件像QQ以及MSN等軟件為人們的視頻聊天提供了許多方便。從學(xué)習(xí)知識(shí)方面:通過做這樣一個(gè)課題,對(duì)學(xué)習(xí)無疑是十分有益的。尤其在學(xué)習(xí)了JAVA編程之后更有欲望對(duì)其進(jìn)行深層次的學(xué)習(xí),并且可以結(jié)合各方面的知識(shí)進(jìn)行多方面的學(xué)習(xí),積累更多知識(shí)。1.3 本報(bào)告的目的、內(nèi)容及作者的主要貢獻(xiàn)1.3.1 本報(bào)告的目的本報(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)如何能夠

8、實(shí)現(xiàn)多人在線舉行會(huì)議。1.3.2 本報(bào)告的內(nèi)容本報(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)過程和后期的測(cè)試過程,須改進(jìn)的部分都進(jìn)行了詳細(xì)的說明。1.3.3 作者主要貢獻(xiàn)本報(bào)告中,作者的主要貢獻(xiàn):對(duì)該視頻會(huì)議系統(tǒng)進(jìn)行可行性分析、需求分析、功能模塊設(shè)計(jì)、各個(gè)功能的代碼實(shí)現(xiàn)、良好用戶操作界面的設(shè)計(jì)與實(shí)現(xiàn)、對(duì)各功能實(shí)現(xiàn)結(jié)果的測(cè)試等。1.4 國(guó)內(nèi)外相近研究課題的特點(diǎn)及發(fā)展趨勢(shì)視頻會(huì)議是近幾年才發(fā)展起來的多媒體通信技術(shù)。視頻會(huì)議可實(shí)時(shí)傳送聲音、圖

9、象;使每位與會(huì)者都有身臨其境的感覺。此外,它還提供文件傳真、靜止圖文傳送、白板等一系列輔助服務(wù)項(xiàng)目。視頻會(huì)議最初是點(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)階段。 視頻會(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í)同步交互通信。 視頻會(huì)議的發(fā)展趨勢(shì):1. 系統(tǒng)功能多元化具有圖文同傳功能:除視音頻外,可以方便地傳送和顯示電腦文檔用于培訓(xùn)、匯報(bào)、交流;視頻會(huì)議與TEL系統(tǒng)渾然一

10、體:可方便接入會(huì)議TEL系統(tǒng),通過TEL、手機(jī)也可加入會(huì)議等。2. 系統(tǒng)組網(wǎng)多樣化,有網(wǎng)絡(luò)就能開會(huì)。3. 圖像清晰化:視頻會(huì)議需要更優(yōu)異、更清晰、更成熟的圖像編解碼技術(shù)。4. 使用、維護(hù)簡(jiǎn)捷化:易于使用,可自行組織、控制會(huì)議;進(jìn)行遠(yuǎn)程管理、遠(yuǎn)程維護(hù)、升級(jí),降低維護(hù)成本;更新設(shè)計(jì),大幅提高系統(tǒng)穩(wěn)定性。1.5 現(xiàn)行研究存在的問題及解決辦法1.5.1 需求分析問題開始對(duì)課題所研究的問題不是很明確,如其應(yīng)用范圍,具體功能等。通過老師的講解及指導(dǎo)和查相關(guān)資料得以解決。 由于幾乎沒有使用過視頻會(huì)議,對(duì)其的了解也不太深刻,老師給講解了一些內(nèi)容,在網(wǎng)上下載了一個(gè)視頻會(huì)議系統(tǒng)的軟件試用了一下,并查閱了許多相關(guān)資

11、料,這才可以對(duì)該課題進(jìn)行需求分析。1.5.2 系統(tǒng)設(shè)計(jì)問題 在該視頻會(huì)議系統(tǒng)的設(shè)計(jì)上遇到了很多問題:如何準(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ì)等問題。1.5.4 代碼實(shí)現(xiàn)問題 在具體的功能實(shí)現(xiàn)上,編碼遇到了極大的困難。因?yàn)樵撜n題需要用到很多以前從未接觸到的知識(shí),如需要用JMF,RTP協(xié)議傳輸視頻,JAVA socket編程,如何采集圖像等知識(shí)。在用JAVA語言編碼過程中,因編程規(guī)范及其他各種語法問題出現(xiàn)了很多錯(cuò)誤,通過老師指導(dǎo)和查閱資料得以解決。1.5.5 界面設(shè)計(jì)問題本課題采用ecli

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

13、以及系統(tǒng)的需求分析。2.1可行性分析2.1.1 技術(shù)可行性網(wǎng)絡(luò)視頻會(huì)議是順應(yīng)市場(chǎ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ù)?那么就必然要依托于JAVA網(wǎng)絡(luò)編程的相關(guān)知識(shí)。在這基礎(chǔ)上,由于相關(guān)音頻、視頻,所以還要涉及到JAVA的多媒體技術(shù)的相關(guān)知識(shí),即JMF (Java Media Framework)。利用JAVA的這個(gè)組件,我們可以方便的處理多媒體文件,并基于RTP協(xié)議進(jìn)行實(shí)時(shí)傳輸。2.1.2 操作可行性系統(tǒng)運(yùn)行于Windo

14、ws環(huán)境,其用戶操作界面友好,便于操作,適合視頻會(huì)議流程。系統(tǒng)的基本操作如下:1啟動(dòng)服務(wù)器;2用戶連接到服務(wù)器;3進(jìn)行視頻連接;4舉行會(huì)議;5會(huì)議完畢,退出系統(tǒng)。2.2 采用的關(guān)鍵技術(shù)介紹2.2.1 JAVA多媒體技術(shù)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í)傳輸,其RTP包中提供的RTP包中提供的RTPManager(RTP管理器)、TrackContol(軌道控制器)、SendStrea

15、m(發(fā)送數(shù)據(jù)流)、ReceiveStream(接收數(shù)據(jù)流)、InetAddress(IPAdress)和SessionAddress(會(huì)話Adress)等類使得編寫網(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í)傳輸。實(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ī)

16、制,可不提供流量控制或擁塞控制,它依靠RTCP提供這些服務(wù)。2.2.2 JAVA 網(wǎng)絡(luò)編程技術(shù)網(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ù)穆酚?由IPAdress可以唯一地確定Internet上的一臺(tái)主機(jī)。而TCP層則提供面向應(yīng)用的可靠的或非可靠的數(shù)據(jù)傳輸機(jī)制,這是網(wǎng)絡(luò)編程的主要對(duì)象,一般不需要關(guān)心IP層是如何處理數(shù)據(jù)的。目前較為流行的網(wǎng)絡(luò)編程模型是客戶機(jī)/服務(wù)器(C/S)結(jié)構(gòu)。即通信雙方一方作為

17、服務(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ù)。數(shù)據(jù)在Internet中是以有限大小的包形式傳輸?shù)?這些包稱為數(shù)據(jù)報(bào)(datagram).但是,由于數(shù)據(jù)報(bào)長(zhǎng)度有限,通常必須將數(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

18、Protocol,UDP),就成為一種必然。Socket是網(wǎng)絡(luò)上運(yùn)行的兩個(gè)程序間雙向通訊的一端,它既可以接受請(qǐng)求,也可以發(fā)送請(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ì)象上的getInputStream方法得到的輸入流其實(shí)就

19、是從服務(wù)器端發(fā)回的數(shù)據(jù)流。GetOutputStream方法得到一個(gè)輸出流,客戶端Socket對(duì)象上的getOutputStream方法返回的輸出流就是將要發(fā)送到服務(wù)器端的數(shù)據(jù)流,(其實(shí)是一個(gè)緩沖區(qū),暫時(shí)存儲(chǔ)將要發(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、單位對(duì)視頻會(huì)議系統(tǒng)有強(qiáng)烈需求,并且人們對(duì)視頻和音頻信息的需求愈來愈強(qiáng)烈,所以有必要開發(fā)一個(gè)網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)。并且近些年來,依托計(jì)算機(jī)技術(shù)、通信技術(shù)和網(wǎng)絡(luò)條件的發(fā)展,集音頻、視頻、圖像、文字、數(shù)據(jù)為一體的多媒體信息,使越來越多的人開始通過互聯(lián)網(wǎng)享受到網(wǎng)上生活的樂趣,縮短了時(shí)區(qū)和地域的距離。遠(yuǎn)程通信的各種優(yōu)勢(shì)給人們帶來的方便也促使人們對(duì)這一領(lǐng)域進(jìn)行更加深入的探索?,F(xiàn)代社會(huì)中信息的無限量擴(kuò)大,交通工具的便捷,互聯(lián)網(wǎng)技術(shù)的充分應(yīng)用等導(dǎo)致了行業(yè)間競(jìng)爭(zhēng)的全球化,這就要求現(xiàn)代部門、企業(yè)要具備更加靈敏的神經(jīng),更扁平化的管理,更快速的反應(yīng)和決策,更貼切的市場(chǎng)宣傳和服務(wù)。所有這一切是由于信息技術(shù)的發(fā)展帶來的,同樣

21、也要求有先進(jìn)的信息技術(shù)來提高部門、企業(yè)的競(jìng)爭(zhēng)力。視頻會(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í)的視音頻交流。另一方面,利用多媒體技術(shù)的支持,視頻會(huì)議系統(tǒng)可以幫助使用者對(duì)工作中各種信息進(jìn)行處理,如共享數(shù)據(jù)、共享應(yīng)用程序等,從而構(gòu)造出一個(gè)多人共享的工作空間。所以,開發(fā)一個(gè)網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)是很有必要的。第三章 系統(tǒng)概要設(shè)計(jì)3.1 系統(tǒng)總體設(shè)計(jì)3.1.

22、1 運(yùn)行環(huán)境操作系統(tǒng):Windows 20XX/XP/20XX 等安裝JDK安裝JMF安裝eclipse安裝攝像頭3.1.2 系統(tǒng)流程 服務(wù)器端流程如圖3.1所示: 處理會(huì)議過程開 始開啟服務(wù)器開啟失敗等待用戶連接 關(guān)閉服務(wù)器結(jié) 束連接成功圖3.1 服務(wù)器端流程圖 客戶端流程如圖3.2 所示:結(jié) 束開 始登 錄登錄失敗視頻連接連接失敗 舉行會(huì)議 進(jìn)入界面視頻 聊天 退 出共享連接成功登錄成功圖3.2 客戶端流程圖3.1.3 系統(tǒng)結(jié)構(gòu)通過學(xué)習(xí)和研究,我們通過多播技術(shù)實(shí)現(xiàn)了多點(diǎn)對(duì)多點(diǎn)的視頻會(huì)議系統(tǒng)。整個(gè)系統(tǒng)包括這樣幾個(gè)模塊:文本聊天模塊:該功能是網(wǎng)絡(luò)視頻會(huì)議的最基本的功能。通過該模塊實(shí)現(xiàn)了會(huì)議成員

23、的聊天通信。首先,每個(gè)會(huì)議職員通過與服務(wù)器連接加入到會(huì)議組,同時(shí)通過給自己取昵稱將自己的昵稱發(fā)送給服務(wù)器,讓會(huì)議組的每個(gè)成員了解自己的身份。會(huì)議成員在聊天的時(shí)候不是將文本發(fā)送給某個(gè)人,而是發(fā)送給整個(gè)會(huì)議組。視頻通信模塊:該功能利用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ì)議成員開始進(jìn)行視頻連接以后,他能通過視頻會(huì)議系統(tǒng)看到所有其他已經(jīng)建立視頻連接會(huì)議成員。3.2 系統(tǒng)接口的概要設(shè)計(jì)3.2.1 服務(wù)器端設(shè)計(jì)系統(tǒng)的服務(wù)器端的設(shè)計(jì)只需顯示在線的用戶,簡(jiǎn)單設(shè)計(jì)圖示如下: 圖3

24、.3 系統(tǒng)服務(wù)器端設(shè)計(jì)3.2.2 客戶端設(shè)計(jì)系統(tǒng)客戶端的設(shè)計(jì)如下:1. 顯示在線列表;2. 顯示界面中用戶視頻;3. 用戶聊天文本框;4. 視頻連接及退出按鈕。簡(jiǎn)單設(shè)計(jì)圖示如下: 圖3.4 系統(tǒng)客戶端設(shè)計(jì)3.3 系統(tǒng)出錯(cuò)處理設(shè)計(jì)3.3.1 出錯(cuò)信息及處理方法系統(tǒng)輸出信息的形式、含意及處理方法。見表3.1。表3.1 出錯(cuò)信息及處理方法故障情況系統(tǒng)提示信息內(nèi)容與形式處理方法 開啟服務(wù)器失敗提示失敗信息“開啟服務(wù)器失敗,請(qǐng)重試”彈出對(duì)話框 重新開啟服務(wù)器登錄失敗提示失敗信息“登錄失敗,請(qǐng)重試”彈出對(duì)話框重新登錄連接視頻失敗提示失敗信息“視頻連接失敗”彈出對(duì)話框重新連接視頻3.3.2 系統(tǒng)維護(hù)設(shè)計(jì) 為

25、了保證系統(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ò)展性。 安全性:在視頻會(huì)議系統(tǒng)前端安置加密機(jī)或者直接使用加密網(wǎng)卡可以提高在傳輸過程中的安全性。加密設(shè)備可直接提供加密能力,從而實(shí)現(xiàn)用戶的身份驗(yàn)證以及未經(jīng)授權(quán)的數(shù)據(jù)訪問和惡意侵犯。 可靠性:該系統(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)。 兼容性:該系統(tǒng)擁有開放的集成接口,可以非常靈活的與用戶集成,并滿足用戶的需要,實(shí)現(xiàn)其功能。

26、 可擴(kuò)展性:該系統(tǒng)可進(jìn)行再擴(kuò)展,在此基礎(chǔ)上擴(kuò)展為一點(diǎn)對(duì)多點(diǎn),多點(diǎn)對(duì)多點(diǎn)的視頻會(huì)議系統(tǒng)。第四章 系統(tǒng)詳細(xì)設(shè)計(jì)本系統(tǒng)的詳細(xì)設(shè)計(jì)根據(jù)概要設(shè)計(jì)中所劃分的各個(gè)功能模塊進(jìn)行詳細(xì)的闡述:4.1 文本聊天模塊的詳細(xì)設(shè)計(jì)本系統(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ù)通信。通過SocketChannel建立基于UDP的無阻塞連接。創(chuàng)建一個(gè)無阻塞服務(wù)器,讓每個(gè)客戶端與之相連。某個(gè)客戶端將文本消息發(fā)送給無阻塞的服務(wù)器,服務(wù)器在將這條文本消息組播給各個(gè)與之相連的客戶端。數(shù)據(jù)

27、在Internet中是以有限大小的包形式傳輸?shù)?這些包稱為數(shù)據(jù)報(bào)(datagram).但是,由于數(shù)據(jù)報(bào)長(zhǎng)度有限,通常必須將數(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),就成為一種必然。基于UDP的Socket編程流程圖如下:socket()sendto()recvfrom()close()socket()sendto()recvfrom()close()請(qǐng)求數(shù)據(jù)應(yīng)

28、答數(shù)據(jù)處理請(qǐng)求阻塞到收到請(qǐng)求bind() 圖4.1 數(shù)據(jù)報(bào)套接字流程圖服務(wù)器:serverSocketChannel = ServerSocketChannel.open();/打開連接通道serverSocketChannel.socket().bind(new InetSocketAddress(12345);/綁定IP與端口號(hào)getConnection();/接收連接請(qǐng)求客戶端:socketChannel = SocketChannel.open();打開連接通道socketChannel.connect(new InetSocketAddress(InetAddress.getByNa

29、me(serverAddress),12345);/連接到服務(wù)器receiveMessage = new ReceivingThread();/構(gòu)造接收信息線程receiveMessage.start();/運(yùn)行線程socketChannel.write(writeBuffer);/往通道里寫入消息socketChannel.read(readBuffer);/讀取通道中消息4.2 視頻通信模塊的詳細(xì)設(shè)計(jì)4.2.1 網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)結(jié)構(gòu)的詳細(xì)設(shè)計(jì)網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)其根本目的是會(huì)議。會(huì)議的基本特征就是,參與會(huì)議的每個(gè)成員都可以了解到其他成員的狀況,每個(gè)成員必須到場(chǎng),然后進(jìn)行交流,并且每個(gè)成員都應(yīng)該

30、看到所有的交流內(nèi)容。在這個(gè)根本目的完成的基礎(chǔ)上,才可以使網(wǎng)絡(luò)視頻會(huì)議的特點(diǎn)得以發(fā)揮。所以,我們的視頻會(huì)議系統(tǒng)采用了多播的方法,使得會(huì)議的每個(gè)成員都可以得到會(huì)議的所有信息。通過對(duì)視頻會(huì)議基本特點(diǎn)的分析,系統(tǒng)結(jié)構(gòu)圖如下圖所示:交互傳流媒體/接流媒體發(fā)送信息/接收信息交互播放器多媒體文件讀組裝播放網(wǎng)絡(luò)多播傳輸聊天信息讀顯示聊天信息網(wǎng)絡(luò)多播傳輸網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)圖4.2 網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)結(jié)構(gòu)圖4.2.2 視音頻傳輸?shù)脑敿?xì)設(shè)計(jì)使用JMF API的RTP協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)多媒體程序,可以分為兩個(gè)部分,一部分是通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的主機(jī)端程序,另一部分是接收數(shù)據(jù)的客戶端程序。在JMF API中定義了幾個(gè)與RTP有關(guān)的包

31、,即javax.media.rtp、javax.media.rtp.enent、javax.media.rtp.rtcp登包,通過這些包提供的API,可以實(shí)現(xiàn)RTP數(shù)據(jù)流的傳輸、接受和回放。基于JMF多媒體數(shù)據(jù)流RTP傳輸、接受和回放過程圖如下:圖4.3 基于JMF多媒體數(shù)據(jù)流RTP傳輸、接受和回放過程數(shù)據(jù)可以來自于多媒體文件,如視頻文件,也可以來自于音視頻采集設(shè)備,如聲卡、攝像頭等。這些數(shù)據(jù)源的位置不同,格式不同,JMF通過一個(gè)稱為媒體定位器(MediaLocator)的類對(duì)相應(yīng)的數(shù)據(jù)源進(jìn)行定位,MediaLocator對(duì)象內(nèi)仔儲(chǔ)了數(shù)據(jù)源的位置信息。JMF管理器(Manager)根據(jù)媒體定位

32、器提供的信息創(chuàng)建數(shù)據(jù)源。這個(gè)數(shù)據(jù)源和文件、攝像頭等物理數(shù)據(jù)源不同,是一個(gè)抽象的概念,是多種不同類型數(shù)據(jù)源的抽象。這樣,JMF可以隱藏底層細(xì)節(jié),使編程者在編程過程中不再考慮數(shù)據(jù)的具體來源和位置,只需考慮數(shù)據(jù)的格式、速率等信息就行了。數(shù)據(jù)源生成后 ,可以直接交給播放器(Player),設(shè)定格式后就可以在本機(jī)播放了。但若要將數(shù)據(jù)流存儲(chǔ)成其他格式的文件或者通過 RTP協(xié)議在網(wǎng)絡(luò)上傳輸 ,則需要對(duì)其進(jìn)行再處理。再處理工作由處理器(Processor)完成 ,處理后的數(shù)據(jù)源可以存儲(chǔ),也可以在網(wǎng)絡(luò)上傳輸。通過 RTP進(jìn)行傳輸前 ,需要建立會(huì)話管理器(SessionManager),建立 RTP會(huì)話后再開始發(fā)

33、送流,發(fā)送時(shí)會(huì)打開兩個(gè)端口,一個(gè)用于傳輸 RTP數(shù)據(jù)流;另一個(gè)用來傳輸 RTCP包。多媒體數(shù)據(jù)流的接收過程是發(fā)送的逆過程。由RTP信道獲得的數(shù)據(jù)流作為接收端的數(shù)據(jù)源,對(duì)數(shù)據(jù)源處理后便可以實(shí)現(xiàn)數(shù)據(jù)流的回放、存儲(chǔ),甚至再發(fā)送。詳細(xì)設(shè)計(jì)傳輸過程: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會(huì)話result = createProcessor();/ 產(chǎn)生一個(gè)處理器result = createTransmitter();產(chǎn)生RTP會(huì)話,將處理器輸出的數(shù)據(jù)傳給指定的IPAdress的指定的端口號(hào)processor.start();/ 讓處理器開始傳輸4.2.2 多播的詳細(xì)設(shè)計(jì)多播基本思想是一個(gè)源IP主機(jī)只進(jìn)行一次發(fā)送,多個(gè)接收者(目標(biāo) IP主機(jī))可以接收到相同數(shù)據(jù)的一個(gè)拷貝。但是多個(gè)

35、接收者必須都注冊(cè)加入同一多播組。IP多播服務(wù)是一種開放的服務(wù)模型,任何主機(jī)可以隨時(shí)加入或退出某個(gè)多播組。利用這種思想,可以實(shí)現(xiàn)會(huì)議中的多點(diǎn)對(duì)多點(diǎn)的視頻傳輸,已達(dá)到組織會(huì)議的目的。多播系統(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)圖多播實(shí)現(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è)計(jì)本系統(tǒng)在進(jìn)行界面設(shè)計(jì)的時(shí)候考慮了系統(tǒng)的功能,對(duì)各功能模塊進(jìn)行詳細(xì)合理的布局:1. 把一些功能加到界面中的菜單中,有連接服務(wù)器,連接視頻,斷開連接,退出等子菜單項(xiàng)。2. 在界面中添加在線用戶列表框,用以顯示在線的用戶。3. 在界面中用一個(gè)大的Panel 裝載舉行會(huì)議時(shí)的各個(gè)用戶的視頻框。4. 在界面中添加實(shí)現(xiàn)簡(jiǎn)單聊天室功能的聊天文本框。5. 在界面底端有一些功能按鈕,如連接視頻,發(fā)送信息等。第五章 系統(tǒng)實(shí)現(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)實(shí)現(xiàn)5.2.1 服務(wù)器端套接字建立數(shù)據(jù)通訊是雙向的,客戶端通過套接字請(qǐng)求數(shù)據(jù)通訊后,服務(wù)器端需要有一個(gè)響應(yīng)客戶端請(qǐng)求通訊的服務(wù)程序,該服務(wù)器程序應(yīng)用ServerSocket類完成與客戶端的通訊。ServerSocket類用來監(jiān)聽和響應(yīng)客戶端的連接請(qǐng)求,并接受客戶端發(fā)送的數(shù)據(jù)信息。ServerSocket類在服務(wù)器端等待其他機(jī)器同它的連接,一旦客戶端程序建立一個(gè)套接字連接,ServerSocket類就會(huì)通過accept()方法返回一個(gè)對(duì)應(yīng)的服務(wù)器端套接字對(duì)象,以便進(jìn)行直接通訊。從兩臺(tái)計(jì)算

38、機(jī)連接成功起,服務(wù)器端與客戶端就得到了一個(gè)真正的“套接字-套接字”連接,此時(shí)利用Socket類中的getInputStream()及getOutputStream()方法從每端的套接字產(chǎn)生對(duì)應(yīng)的InputStream和OutputStream對(duì)象,并將套接字?jǐn)?shù)據(jù)流封裝到緩沖區(qū)內(nèi)以便進(jìn)行兩臺(tái)機(jī)器之間的數(shù)據(jù)通訊。serverSocketChannel = ServerSocketChannel.open();/打開連接通道serverSocketChannel.socket().bind(new InetSocketAddress(12345);/綁定IP與端口號(hào)getConnection();/

39、接收連接請(qǐng)求charSet = Charset.forName(UTF-8);/開啟服務(wù)器套接字通道serverSocketChannel = ServerSocketChannel.open();serverSocketChannel.socket().bind(newInetSocketAddress(12345); serverSocketChannel.configureBlocking(false);/設(shè)置阻塞模式為非阻塞模式等待一個(gè)連接5.2.2 客戶端套接字建立客戶端使用Socket類的方法建立(類似于服務(wù)器端),客戶端向套接字對(duì)象中的數(shù)據(jù)流輸出和獲取數(shù)據(jù)??蛻舳顺绦蛟噲D與服務(wù)器

40、之間在Socket層次上建立一個(gè)連接,通過套接字輸入流讀取方法從套接字?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();/運(yùn)行線程socketChannel.write(writeBuffer);/往通道里寫入消息socketChannel.read(readBuffer);/讀取通道中消息5.2.3 視音頻發(fā)送視音頻數(shù)據(jù)以RTP實(shí)時(shí)流的形式發(fā)送出去,通過會(huì)話管理器(Session Manager)傳輸RTP數(shù)據(jù)的步驟為:1. 產(chǎn)生一個(gè)JMF處理器(Processor),為每一種RTP格式設(shè)置相應(yīng)的軌跡格式。2. 從處理器獲取輸出數(shù)據(jù)源。3. 會(huì)話管理器產(chǎn)生一個(gè)發(fā)送數(shù)據(jù)流,即以數(shù)據(jù)源和序號(hào)作為參數(shù)調(diào)用會(huì)話管理器的createSendStream()方法。4. 開

42、始會(huì)話傳輸。5. 通過監(jiān)聽ControllerEvent事件控制會(huì)話的過程。6. 停止會(huì)話,刪除會(huì)話管理器。定義以下內(nèi)容:/ 媒體定位 IP 端口 處理器 會(huì)話管理器 輸出數(shù)據(jù)源private MediaLocator Locator;private String IpAddress;private int portBase;private Processor processor=null;private RTPManger rtpMgrs;private DataSource dataOutput=null;具體實(shí)現(xiàn)函數(shù)如下:/發(fā)送數(shù)據(jù)函數(shù)public RTPTransmit(Process

43、or processor,String ipAddress, String pb)/為媒體定位器產(chǎn)生一個(gè)處理器private String createProcessor()/ 為處理器的每一個(gè)媒體磁道產(chǎn)生一個(gè)RTP會(huì)話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í)時(shí)媒體數(shù)據(jù)流是通過java.media包中定義的各種RTP事件監(jiān)聽器和RTP事件處理類來處理和控制的,使用java.media包中的Player類可以實(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è)步驟:1. 實(shí)現(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)生一個(gè)播放器。4. 給播放器添加監(jiān)聽器,等到播放器實(shí)現(xiàn)后,即可顯示播放數(shù)據(jù)。定義以下內(nèi)容:String sessions = null; / RTP會(huì)話字符串?dāng)?shù)組RTPManager mgrs = null; / RTP管理器數(shù)組Vector playerPanels = null; / 管理播放器窗口的向量boolean dataReceived = false;

46、 / 是否接收到數(shù)據(jù)的標(biāo)志Object dataSync = new Object(); / 同步對(duì)象具體實(shí)現(xiàn)函數(shù)如下:/接收數(shù)據(jù)實(shí)現(xiàn)函數(shù)public Receive(String sessions) /初始化RTP會(huì)話,準(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) /實(shí)現(xiàn)ReceiveStreamListener監(jiān)聽接口public synchronized void update( ReceiveStreamEvent evt) 第六章 性能測(cè)試與分析6.1 測(cè)試實(shí)例(測(cè)試集)的研究與選擇測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。好的測(cè)試方案是盡可能發(fā)現(xiàn)尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案。本節(jié)分別介

溫馨提示

  • 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. 人人文庫(kù)網(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)論