日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

java毕业设计——基于Java+Socket的视频会议系统设计与实现(毕业论文+程序源码)——视频会议系统

發(fā)布時間:2024/1/8 windows 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java毕业设计——基于Java+Socket的视频会议系统设计与实现(毕业论文+程序源码)——视频会议系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基于Java+Socket的視頻會議系統(tǒng)設(shè)計與實現(xiàn)(畢業(yè)論文+程序源碼)

大家好,今天給大家介紹基于Java+Socket的視頻會議系統(tǒng)設(shè)計與實現(xiàn),文章末尾附有本畢業(yè)設(shè)計的論文和源碼下載地址哦。需要下載開題報告PPT模板及論文答辯PPT模板等的小伙伴,可以進入我的博客主頁查看左側(cè)最下面欄目中的自助下載方法哦

文章目錄:

  • 基于Java+Socket的視頻會議系統(tǒng)設(shè)計與實現(xiàn)(畢業(yè)論文+程序源碼)
    • 1、項目簡介
    • 2、資源詳情
    • 3、關(guān)鍵詞
    • 4、畢設(shè)簡介
    • 5、資源下載

1、項目簡介

  • 隨著人們對視頻和音頻信息的需求愈來愈強烈,追求遠(yuǎn)距離的視音頻的同步交互成為新的時尚。近些年來,依托計算機技術(shù)、通信技術(shù)和網(wǎng)絡(luò)條件的發(fā)展,集音頻、視頻、圖像、文字、數(shù)據(jù)為一體的多媒體信息,使越來越多的人開始通過互聯(lián)網(wǎng)享受到網(wǎng)上生活、遠(yuǎn)程醫(yī)療、遠(yuǎn)程通訊的樂趣,縮短了時區(qū)和地域的距離。遠(yuǎn)程通信的各種優(yōu)勢給人們帶來的方便也促使人們對這一領(lǐng)域進行更加深入的探索。基于不同平臺以及不同開發(fā)工具的網(wǎng)絡(luò)視頻會議系統(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)代社會的方便、快捷、高效、快節(jié)奏,它為用戶帶來的經(jīng)濟效益,使視頻會議系統(tǒng)的使用正在向各行各業(yè)滲透,給這一市場注入了新的活力。

  • 2、資源詳情

    項目難度:中等難度
    適用場景:相關(guān)題目的畢業(yè)設(shè)計
    配套論文字?jǐn)?shù):10934個字23頁
    包含內(nèi)容:整套源碼+完整畢業(yè)論文


    3、關(guān)鍵詞

    視頻會議系統(tǒng);JAVA;RTP協(xié)議

    4、畢設(shè)簡介

    提示:以下為畢業(yè)論文的簡略介紹,項目源碼及完整畢業(yè)論文下載地址見文末。

    第一章 概述
    1.1 本課題的研究背景
    省略

    1.2 本課題的研究意義
    從實用方面:
    視頻會議系統(tǒng)是指通過現(xiàn)有的各種電氣通訊傳輸媒體,將人物的靜態(tài)/動態(tài)圖像、語音、文字、圖片等多種信息分送到各個用戶的計算機上,使得在地理上分散的用戶可以共聚一處,通過圖形、聲音等多種方式交流信息,增加雙方對內(nèi)容的理解能力。視頻會議系統(tǒng)對于減少差旅費用等機構(gòu)開支;提高機構(gòu)運作效率;提高機構(gòu)形象有利于加強對外交往;有利于政策方針的迅速準(zhǔn)確傳達(dá);有利于廣泛收集意見;有利于加強內(nèi)部交流;員工培訓(xùn)等方面帶來巨大的直接和間接效益。由于視頻會議系統(tǒng)的這些優(yōu)點,使得視頻會議系統(tǒng)備受關(guān)注。并且已經(jīng)有越來越多的人利用這種方式進行交流溝通,不僅方便而且拉近了人與人之間的距離。現(xiàn)在的一些軟件像QQ以及MSN等軟件為人們的視頻聊天提供了許多方便。

    1.3 本報告的目的、內(nèi)容及作者的主要貢獻
    1.3.1 本報告的目的
    本報告對基于JAVA的點對點視頻會議系統(tǒng)做出詳細(xì)地需求分析,并對其設(shè)計與實現(xiàn)過程進行詳細(xì)的論述。目的在于闡明本視頻會議系統(tǒng)如何能夠?qū)崿F(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)過程和后期的測試過程,須改進的部分都進行了詳細(xì)的說明。
    1.3.3 作者主要貢獻
    本報告中,作者的主要貢獻:對該視頻會議系統(tǒng)進行可行性分析、需求分析、功能模塊設(shè)計、各個功能的代碼實現(xiàn)、良好用戶操作界面的設(shè)計與實現(xiàn)、對各功能實現(xiàn)結(jié)果的測試等。

    1.4 國內(nèi)外相近研究課題的特點及發(fā)展趨勢
    視頻會議是近幾年才發(fā)展起來的多媒體通信技術(shù)。視頻會議可實時傳送聲音、圖象;使每位與會者都有身臨其境的感覺。此外,它還提供文件傳真、靜止圖文傳送、白板等一系列輔助服務(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ā)展趨勢:

  • 系統(tǒng)功能多元化具有圖文同傳功能:除視音頻外,可以方便地傳送和顯示電腦文檔用于培訓(xùn)、匯報、交流;視頻會議與電話系統(tǒng)渾然一體:可方便接入會議電話系統(tǒng),通過電話、手機也可加入會議等。
  • 系統(tǒng)組網(wǎng)多樣化,有網(wǎng)絡(luò)就能開會。
  • 圖像清晰化:視頻會議需要更優(yōu)異、更清晰、更成熟的圖像編解碼技術(shù)。
  • 使用、維護簡捷化:易于使用,可自行組織、控制會議;進行遠(yuǎn)程管理、遠(yuǎn)程維護、升級,降低維護成本;更新設(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è)計問題
    在該視頻會議系統(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)。并且在試用所下載的視頻會議系統(tǒng)后,有很大心得,根據(jù)其界面的合理性,模仿設(shè)計本課題中界面。

    1.6 本課題要達(dá)到的設(shè)計目標(biāo)
    本課題致力于實現(xiàn)實現(xiàn)點對點的視頻傳輸并完成基本功能(如動態(tài)視頻傳輸、文本傳輸?shù)?#xff09;,提供多人同時在線舉行會議。包含以下內(nèi)容:
    1.動態(tài)視頻傳輸:視頻雙方可以看到對方的動態(tài)圖像。
    2.聲音傳輸:在視頻或非視頻狀態(tài)下可以聽到對方的聲音,進行語音交流。
    3.文本傳輸:可以通過文本輸入進行交流。

    第二章 系統(tǒng)分析
    本課題為實現(xiàn)多人在線同時舉行會議的功能,對該視頻會議系統(tǒng)做了詳細(xì)的系統(tǒng)分析。包括系統(tǒng)的可行性分析、對開發(fā)用到的關(guān)鍵技術(shù)的介紹以及系統(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ù)?#xff0c;那么就必然要依托于JAVA網(wǎng)絡(luò)編程的相關(guān)知識。在這基礎(chǔ)上,由于相關(guān)音頻、視頻,所以還要涉及到JAVA的多媒體技術(shù)的相關(guān)知識,即JMF (Java Media Framework)。利用JAVA的這個組件,我們可以方便的處理多媒體文件,并基于RTP協(xié)議進行實時傳輸。

    2.1.2 操作可行性
    系統(tǒng)運行于Windows環(huán)境,其用戶操作界面友好,便于操作,適合視頻會議流程。
    系統(tǒng)的基本操作如下:
    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ù)流)、InetAddress(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ò)編程技術(shù)
    網(wǎng)絡(luò)編程的目的就是指直接或間接地通過網(wǎng)絡(luò)協(xié)議與其他計算機進行通訊。網(wǎng)絡(luò)編程中有兩個主要的問題,一個是如何準(zhǔn)確的定位網(wǎng)絡(luò)上一臺或多臺主機,另一個就是找到主機后如何可靠高效的進行數(shù)據(jù)傳輸。在TCP/IP協(xié)議中IP層主要負(fù)責(zé)網(wǎng)絡(luò)主機的定位,數(shù)據(jù)傳輸?shù)穆酚?#xff0c;由IP地址可以唯一地確定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)。客戶則在需要服務(wù)時向服務(wù)器提出申請。服務(wù)器一般作為守護進程始終運行,監(jiān)聽網(wǎng)絡(luò)端口,一旦有客戶請求,就會啟動一個服務(wù)進程來響應(yīng)該客戶,同時自己繼續(xù)監(jiān)聽服務(wù)端口,使后來的客戶也能及時得到服務(wù)。
    數(shù)據(jù)在Internet中是以有限大小的包形式傳輸?shù)?#xff0c;這些包稱為數(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ò)上運行的兩個程序間雙向通訊的一端,它既可以接受請求,也可以發(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對象上的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)需求分析
    省略

    第三章 系統(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)流程
    服務(wù)器端流程如圖3.1所示:

    圖3.1 服務(wù)器端流程圖

    客戶端流程如圖3.2 所示:

    圖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ù)器,讓會議組的每個成員了解自己的身份。會議成員在聊天的時候不是將文本發(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è)計
    省略

    3.2.2 客戶端設(shè)計
    系統(tǒng)客戶端的設(shè)計如下:

  • 顯示在線列表;
  • 顯示界面中用戶視頻;
  • 用戶聊天文本框;
  • 視頻連接及退出按鈕。
    簡單設(shè)計圖示如下:
  • 圖3.4 系統(tǒng)客戶端設(shè)計
    3.3 系統(tǒng)出錯處理設(shè)計
    3.3.1 出錯信息及處理方法
    系統(tǒng)輸出信息的形式、含意及處理方法。見表3.1。

    表3.1 出錯信息及處理方法

    3.3.2 系統(tǒng)維護設(shè)計
    為了保證系統(tǒng)的穩(wěn)定運行,本系統(tǒng)在設(shè)計時考慮到了系統(tǒng)的安全性、可靠性、兼容性、可擴展性等因素。了很多驗證條件,盡量保證信息的合法性與正確性,是系統(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)詳細(xì)設(shè)計
    本系統(tǒng)的詳細(xì)設(shè)計根據(jù)概要設(shè)計中所劃分的各個功能模塊進行詳細(xì)的闡述:
    4.1 文本聊天模塊的詳細(xì)設(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ù)?#xff0c;這些包稱為數(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),就成為一種必然。

    基于UDP的Socket編程流程圖如下:

    圖4.1 數(shù)據(jù)報套接字流程圖

    服務(wù)器:
    serverSocketChannel = ServerSocketChannel.open();//打開連接通道
    serverSocketChannel.socket().bind(new InetSocketAddress(12345));//綁定IP與端口號
    getConnection();//接收連接請求

    客戶端:
    socketChannel = SocketChannel.open();打開連接通道
    socketChannel.connect(new InetSocketAddress(InetAddress.getByName
    (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)其根本目的是會議。會議的基本特征就是,參與會議的每個成員都可以了解到其他成員的狀況,每個成員必須到場,然后進行交流,并且每個成員都應(yīng)該看到所有的交流內(nèi)容。在這個根本目的完成的基礎(chǔ)上,才可以使網(wǎng)絡(luò)視頻會議的特點得以發(fā)揮。所以,我們的視頻會議系統(tǒng)采用了多播的方法,使得會議的每個成員都可以得到會議的所有信息。
    通過對視頻會議基本特點的分析,系統(tǒng)結(jié)構(gòu)圖如下圖所示:

    圖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ù)的主機端程序,另一部分是接收數(shù)據(jù)的客戶端程序。
    在JMF API中定義了幾個與RTP有關(guān)的包,即javax.media.rtp、javax.media.rtp.enent、javax.media.rtp.rtcp登包,通過這些包提供的API,可以實現(xiàn)RTP數(shù)據(jù)流的傳輸、接受和回放。基于JMF多媒體數(shù)據(jù)流RTP傳輸、接受和回放過程圖如下:

    圖4.3 基于JMF多媒體數(shù)據(jù)流RTP傳輸、接受和回放過程

    數(shù)據(jù)可以來自于多媒體文件,如視頻文件,也可以來自于音/視頻采集設(shè)備,如聲卡、攝像頭等。這些數(shù)據(jù)源的位置不同,格式不同,JMF通過一個稱為媒體定位器(Media—Locator)的類對相應(yīng)的數(shù)據(jù)源進行定位,MediaLocator對象內(nèi)仔儲了數(shù)據(jù)源的位置信息。JMF管理器(Manager)根據(jù)媒體定位器提供的信息創(chuàng)建數(shù)據(jù)源。這個數(shù)據(jù)源和文件、攝像頭等物理數(shù)據(jù)源不同,是一個抽象的概念,是多種不同類型數(shù)據(jù)源的抽象。這樣,JMF可以隱藏底層細(xì)節(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信道獲得的數(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.createDataSource(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ù)傳給指定的IP地址的指定的端口號 processor.start();// 讓處理器開始傳輸

    4.2.2 多播的詳細(xì)設(shè)計
    多播基本思想是一個源IP主機只進行一次發(fā)送,多個接收者(目標(biāo) IP主機)可以接收到相同數(shù)據(jù)的一個拷貝。但是多個接收者必須都注冊加入同一多播組。IP多播服務(wù)是一種開放的服務(wù)模型,任何主機可以隨時加入或退出某個多播組。
    利用這種思想,可以實現(xiàn)會議中的多點對多點的視頻傳輸,已達(dá)到組織會議的目的。多播系統(tǒng)結(jié)構(gòu)圖:

    圖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)界面的詳細(xì)設(shè)計
    本系統(tǒng)在進行界面設(shè)計的時候考慮了系統(tǒng)的功能,對各功能模塊進行詳細(xì)合理的布局:

  • 把一些功能加到界面中的菜單中,有連接服務(wù)器,連接視頻,斷開連接,退出等子菜單項。
  • 在界面中添加在線用戶列表框,用以顯示在線的用戶。
  • 在界面中用一個大的Panel 裝載舉行會議時的各個用戶的視頻框。
  • 在界面中添加實現(xiàn)簡單聊天室功能的聊天文本框。
  • 在界面底端有一些功能按鈕,如連接視頻,發(fā)送信息等。
  • 第五章 系統(tǒng)實現(xiàn)
    5.1 系統(tǒng)開發(fā)環(huán)境
    系統(tǒng):Microsoft Windows
    開發(fā)語言:JAVA
    編程環(huán)境:Eclipse
    JMF版本:JMF
    JDK版本:JDK
    Eclipse版本:Eclipse

    5.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ù)器端等待其他機器同它的連接,一旦客戶端程序建立一個套接字連接,ServerSocket類就會通過accept()方法返回一個對應(yīng)的服務(wù)器端套接字對象,以便進行直接通訊。從兩臺計算機連接成功起,服務(wù)器端與客戶端就得到了一個真正的“套接字-套接字”連接,此時利用Socket類中的getInputStream()及getOutputStream()方法從每端的套接字產(chǎn)生對應(yīng)的InputStream和OutputStream對象,并將套接字?jǐn)?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 = ServerSocketChannel.open(); serverSocketChannel.socket().bind(newInetSocketAddress(12345)); serverSocketChannel.configureBlocking(false); //設(shè)置阻塞模式為非阻塞模式等待一個連接

    5.2.2 客戶端套接字建立
    客戶端使用Socket類的方法建立(類似于服務(wù)器端),客戶端向套接字對象中的數(shù)據(jù)流輸出和獲取數(shù)據(jù)。客戶端程序試圖與服務(wù)器之間在Socket層次上建立一個連接,通過套接字輸入流讀取方法從套接字?jǐn)?shù)據(jù)流中獲取服務(wù)器信息,以及寫入數(shù)據(jù)到套接字輸出流中向服務(wù)器發(fā)送信息,并且等待服務(wù)器的答復(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);//往通道里寫入消息 socketChannel.read(readBuffer);//讀取通道中消息

    5.2.3 視音頻發(fā)送
    視音頻數(shù)據(jù)以RTP實時流的形式發(fā)送出去,通過會話管理器(Session Manager)傳輸RTP數(shù)據(jù)的步驟為:

  • 產(chǎn)生一個JMF處理器(Processor),為每一種RTP格式設(shè)置相應(yīng)的軌跡格式。
  • 從處理器獲取輸出數(shù)據(jù)源。
  • 會話管理器產(chǎn)生一個發(fā)送數(shù)據(jù)流,即以數(shù)據(jù)源和序號作為參數(shù)調(diào)用會話管理器的createSendStream()方法。
  • 開始會話傳輸。
  • 通過監(jiān)聽ControllerEvent事件控制會話的過程。
  • 停止會話,刪除會話管理器。
  • 定義以下內(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(Processor 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 implements 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)分為以下幾個步驟:

  • 實現(xiàn)ReceiveStreamListener監(jiān)聽接口,監(jiān)聽NewReceiveStreamEvent事件。
  • 當(dāng)接收到NewReceiveStreamEvent事件后,通過事件獲取接收媒體數(shù)據(jù)流(ReceiveStream),然后通過接收媒體數(shù)據(jù)流獲取RTP數(shù)據(jù)源(DataSource)。
  • 將數(shù)據(jù)源傳給Manager.createPlayer()產(chǎn)生一個播放器。
  • 給播放器添加監(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 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é)分別介紹各個功能的測試用例及其預(yù)期結(jié)果。

  • 測試服務(wù)器的開啟:
    在搭建好運行環(huán)境后,運行,服務(wù)器正常連接。(如有問題時,系統(tǒng)拋出異常,提示開啟失敗對話框)
  • 測試用戶連接服務(wù)器:
    在開啟服務(wù)器之后,用戶進行連接,由于開始是在寢室連接,速度比較慢,所以連接超時,拋出異常。后又在其他地方連接成功。
  • 測試舉行會議部分:
    進行視頻連接,連接成功,在視頻會議過程中,視音頻的傳輸都成功。后又請同學(xué)用黑盒法進行了測試,曾出現(xiàn)問題,連接中拋出異常,不能正常連接,也有的是視音頻傳輸過程中出現(xiàn)了問題,但大多都是因為人為因素(攝像頭或耳機等出現(xiàn)問題)。
  • 測試聊天室部分:
    在連接到服務(wù)器后,列表中顯示所有上線的用戶,在文本框中發(fā)送數(shù)據(jù),發(fā)現(xiàn)所有的用戶都能收到,證明沒有問題。
  • 6.2 性能分析
    省略

    第七章 課程設(shè)計總結(jié)
    本系統(tǒng)已經(jīng)完成了預(yù)期目標(biāo),并且在預(yù)期目標(biāo)基礎(chǔ)上有了一定的突破。從系統(tǒng)最初的可行性分析、需求分析、設(shè)計,到最后實現(xiàn)的過程中,經(jīng)過多次反復(fù)的修改,功能逐漸完善,已經(jīng)基本達(dá)到了實用,方便,人性化等預(yù)期目標(biāo),且能實現(xiàn)多人在線同時舉行會議。
    7.1 系統(tǒng)總結(jié)
    7.1.1 系統(tǒng)特點介紹

  • 較完善的安全性和穩(wěn)定性
    本系統(tǒng)基于JAVA語言編寫,有強大的錯誤及異常處理功能。支持當(dāng)前大多數(shù)硬件平臺,核心線程優(yōu)先保護、數(shù)據(jù)流容錯的設(shè)計思路使系統(tǒng)可更加穩(wěn)定的運轉(zhuǎn)。在視頻會議系統(tǒng)前端安置加密機或者直接使用加密網(wǎng)卡可以提高在傳輸過程中的安全性。加密設(shè)備可直接提供加密能力,從而實現(xiàn)用戶的身份驗證以及未經(jīng)授權(quán)的數(shù)據(jù)訪問和惡意侵犯。
  • 2.人性化設(shè)計
    在考慮了多方面因素,查閱相關(guān)資料和試用其他視頻會議系統(tǒng)后,總結(jié)并設(shè)計了人性化的界面,方便的菜單選項和按鈕,便捷的視頻及聊天功能,且還可以看到在線參加會議的人員,易于用戶使用。

    7.1.2 系統(tǒng)存在的問題
    本系統(tǒng)是點對點的視頻會議系統(tǒng),目前可完全實現(xiàn)多人在線同時舉行會議的功能。測試中是在小范圍的局域網(wǎng)內(nèi)進行的,可能在實際廣域網(wǎng)中測試不會太順利。

    7.2 系統(tǒng)改進建議或設(shè)想
    在系統(tǒng)改進時,可向一點對多點和多點對多點方面改進。并參考現(xiàn)在流行的一些視頻會議系統(tǒng)進行改進,且做出文件傳輸部分。

    7.3 課程設(shè)計心得體會
    通過這次課程設(shè)計,不僅學(xué)到了很多專業(yè)知識,而且提高了動手能力和解決實際問題的能力,受益匪淺。
    此系統(tǒng)已經(jīng)實現(xiàn)了點對點視頻連接,以及一些輔助功能,并且經(jīng)過對功能的測試,反映良好。由于使用JAVA作為開發(fā)工具,所以在跨平臺方面的優(yōu)點也非常突出。在本次課程設(shè)計中學(xué)習(xí)了多媒體技術(shù),鞏固了JAVA Socket編程,更有信心進行深層次的學(xué)習(xí),并且可以結(jié)合各方面的知識進行多方面的學(xué)習(xí),積累更多知識。
    .
    參考文獻
    [1] H.M.Deitel P.J.Deitel,Java 《程序設(shè)計教程》 清華大學(xué)出版社,2004
    [2] 彭波 孫一林 《Java多媒體技術(shù)》 清華大學(xué)出版社,2004
    [3] 劉成德 李 祥 《基IPMulticast/JMF的多媒體網(wǎng)絡(luò)會議系統(tǒng)的設(shè)計與實現(xiàn)》
    [4] Elliotte Rusty Harold 《Java網(wǎng)絡(luò)編程》 中國電力出版社,2005
    [5] 毛黎莉 潘建國 《基于JMF的RTP應(yīng)用分析與研究》
    [6] 周靜 鄒北驥 《利用JMF 實現(xiàn)RTP流的傳輸與播放》


    5、資源下載

    本項目源碼及完整論文如下,有需要的朋友可以點擊進行下載。如果鏈接失效可點擊下方卡片掃碼自助下載。

    序號畢業(yè)設(shè)計全套資源(點擊下載)
    本項目源碼基于Java+Socket的視頻會議系統(tǒng)設(shè)計與實現(xiàn)(源碼+文檔)_java_Socket_視頻會議系統(tǒng).zip

    總結(jié)

    以上是生活随笔為你收集整理的java毕业设计——基于Java+Socket的视频会议系统设计与实现(毕业论文+程序源码)——视频会议系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。