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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

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

基于Java+Socket的視頻會議系統設計與實現(畢業論文+程序源碼)

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

文章目錄:

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

1、項目簡介

  • 隨著人們對視頻和音頻信息的需求愈來愈強烈,追求遠距離的視音頻的同步交互成為新的時尚。近些年來,依托計算機技術、通信技術和網絡條件的發展,集音頻、視頻、圖像、文字、數據為一體的多媒體信息,使越來越多的人開始通過互聯網享受到網上生活、遠程醫療、遠程通訊的樂趣,縮短了時區和地域的距離。遠程通信的各種優勢給人們帶來的方便也促使人們對這一領域進行更加深入的探索。基于不同平臺以及不同開發工具的網絡視頻會議系統層出不窮。
  • 視頻會議系統還更廣泛的應用于現代企業中。信息技術的迅猛發展,改變了各行各業的傳統工作模式。信息的無限量擴大,交通工具的便捷,互聯網技術的充分應用等導致了行業間競爭的全球化,這就要求現代部門、企業要具備更加靈敏的神經,更扁平化的管理,更快速的反應和決策,更貼切的市場宣傳和服務。所有這一切是由于信息技術的發展帶來的,同樣也要求有先進的信息技術來提高部門、企業的競爭力。視頻會議系統的可以跨越空間距離、靈活多樣的面對面的交互,適應現代社會的方便、快捷、高效、快節奏,它為用戶帶來的經濟效益,使視頻會議系統的使用正在向各行各業滲透,給這一市場注入了新的活力。

  • 2、資源詳情

    項目難度:中等難度
    適用場景:相關題目的畢業設計
    配套論文字數:10934個字23頁
    包含內容:整套源碼+完整畢業論文


    3、關鍵詞

    視頻會議系統;JAVA;RTP協議

    4、畢設簡介

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

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

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

    1.3 本報告的目的、內容及作者的主要貢獻
    1.3.1 本報告的目的
    本報告對基于JAVA的點對點視頻會議系統做出詳細地需求分析,并對其設計與實現過程進行詳細的論述。目的在于闡明本視頻會議系統如何能夠實現多人在線舉行會議。
    1.3.2 本報告的內容
    本報告內容上從視頻會議的開發背景開始論述,研究并確定了開發環境,并對該視頻會議系統的需求做出了詳細的分析,根據其需求及開發工具的功能特性確立課題的設計方案及開發策略。并對課題的概要設計、詳細設計以及代碼實現過程和后期的測試過程,須改進的部分都進行了詳細的說明。
    1.3.3 作者主要貢獻
    本報告中,作者的主要貢獻:對該視頻會議系統進行可行性分析、需求分析、功能模塊設計、各個功能的代碼實現、良好用戶操作界面的設計與實現、對各功能實現結果的測試等。

    1.4 國內外相近研究課題的特點及發展趨勢
    視頻會議是近幾年才發展起來的多媒體通信技術。視頻會議可實時傳送聲音、圖象;使每位與會者都有身臨其境的感覺。此外,它還提供文件傳真、靜止圖文傳送、白板等一系列輔助服務項目。視頻會議最初是"點對點"的會議傳輸(point to point),現已發展到"一點對多點"(point to multi points)及"多點到多點"(multi points to multi points)階段。
    視頻會議系統的關鍵技術 :1)多媒體信息處理技術2)寬帶網絡技術3)分布式處理技術視頻會議實現點對點、一點對多點、多點之間的實時同步交互通信。
    視頻會議的發展趨勢:

  • 系統功能多元化具有圖文同傳功能:除視音頻外,可以方便地傳送和顯示電腦文檔用于培訓、匯報、交流;視頻會議與電話系統渾然一體:可方便接入會議電話系統,通過電話、手機也可加入會議等。
  • 系統組網多樣化,有網絡就能開會。
  • 圖像清晰化:視頻會議需要更優異、更清晰、更成熟的圖像編解碼技術。
  • 使用、維護簡捷化:易于使用,可自行組織、控制會議;進行遠程管理、遠程維護、升級,降低維護成本;更新設計,大幅提高系統穩定性。
  • 1.5 現行研究存在的問題及解決辦法
    1.5.1 需求分析問題
    開始對課題所研究的問題不是很明確,如其應用范圍,具體功能等。通過老師的講解及指導和查相關資料得以解決。
    由于幾乎沒有使用過視頻會議,對其的了解也不太深刻,老師給講解了一些內容,在網上下載了一個視頻會議系統的軟件試用了一下,并查閱了許多相關資料,這才可以對該課題進行需求分析。

    1.5.2 系統設計問題
    在該視頻會議系統的設計上遇到了很多問題:如何準確的定位網絡上一臺或多臺主機,如何找到主機后如何可靠高效的進行數據傳輸;建立網絡之間會話;圖像的采集、壓縮及編碼;網絡視頻的傳輸;系統的界面設計等問題。

    1.5.4 代碼實現問題
    在具體的功能實現上,編碼遇到了極大的困難。因為該課題需要用到很多以前從未接觸到的知識,如需要用JMF,RTP協議傳輸視頻,JAVA socket編程,如何采集圖像等知識。在用JAVA語言編碼過程中,因編程規范及其他各種語法問題出現了很多錯誤,通過老師指導和查閱資料得以解決。

    1.5.5 界面設計問題
    本課題采用eclipse開發平臺,裝載ve插件后,用其進行圖形界面的設計和實現。并且在試用所下載的視頻會議系統后,有很大心得,根據其界面的合理性,模仿設計本課題中界面。

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

    第二章 系統分析
    本課題為實現多人在線同時舉行會議的功能,對該視頻會議系統做了詳細的系統分析。包括系統的可行性分析、對開發用到的關鍵技術的介紹以及系統的需求分析。
    2.1 可行性分析
    2.1.1 技術可行性
    網絡視頻會議是順應市場的需求而設計的。采用JAVA 編程語言,用eclipse開發平臺實現。用到多媒體技術(JAVA 多媒體框架JMF),視頻和音頻用TRP協議傳輸,用到Socket編程技術,多播技術。網絡視頻會議首先是基于網絡傳輸的,那么就必然要依托于JAVA網絡編程的相關知識。在這基礎上,由于相關音頻、視頻,所以還要涉及到JAVA的多媒體技術的相關知識,即JMF (Java Media Framework)。利用JAVA的這個組件,我們可以方便的處理多媒體文件,并基于RTP協議進行實時傳輸。

    2.1.2 操作可行性
    系統運行于Windows環境,其用戶操作界面友好,便于操作,適合視頻會議流程。
    系統的基本操作如下:
    1.啟動服務器;
    2.用戶連接到服務器;
    3.進行視頻連接;
    4.舉行會議;
    5.會議完畢,退出系統。

    2.2 采用的關鍵技術介紹
    2.2.1 JAVA多媒體技術
    JAVA多媒體技術的核心是Java媒體框架 JMF(Java Media Framework)。JMF中包含了許多用于處理多媒體的API,它是一個很好的多媒體編程工具,同時也是一個相當復雜的系統。JMF的主要應用功能之一是多媒體數據流在網絡中的實時傳輸,其RTP包中提供的RTP包中提供的RTPManager(RTP管理器)、TrackContol(軌道控制器)、SendStream(發送數據流)、ReceiveStream(接收數據流)、InetAddress(IP地址)和SessionAddress(會話地址)等類使得編寫網絡實時數據傳輸變得容易,基于RTP協議的RTP應用程序框架為實現流媒體在網絡中實時傳輸提供了Java程序框架,應用它可方便的實現多媒體數據流在網絡中的實時傳輸。實時傳輸協議RTP是在Internet網上針對多媒體數據流的一種傳輸協議,RTP被定義為在一對一獲一對多的傳輸情況下工作的,其目的是提供時間信息和實現多媒體數據流的同步。RTP由RTP和RTCP(實時控制協議)兩個部分組成。RTP本身并不能為按順序傳送數據包提供可靠的傳送機制,可不提供流量控制或擁塞控制,它依靠RTCP提供這些服務。

    2.2.2 JAVA 網絡編程技術
    網絡編程的目的就是指直接或間接地通過網絡協議與其他計算機進行通訊。網絡編程中有兩個主要的問題,一個是如何準確的定位網絡上一臺或多臺主機,另一個就是找到主機后如何可靠高效的進行數據傳輸。在TCP/IP協議中IP層主要負責網絡主機的定位,數據傳輸的路由,由IP地址可以唯一地確定Internet上的一臺主機。而TCP層則提供面向應用的可靠的或非可靠的數據傳輸機制,這是網絡編程的主要對象,一般不需要關心IP層是如何處理數據的。

    目前較為流行的網絡編程模型是客戶機/服務器(C/S)結構。即通信雙方一方作為服務器等待客戶提出請求并予以響應。客戶則在需要服務時向服務器提出申請。服務器一般作為守護進程始終運行,監聽網絡端口,一旦有客戶請求,就會啟動一個服務進程來響應該客戶,同時自己繼續監聽服務端口,使后來的客戶也能及時得到服務。
    數據在Internet中是以有限大小的包形式傳輸的,這些包稱為數據報(datagram).但是,由于數據報長度有限,通常必須將數據分解為多個包,在目的地再重新組合。有可能一包或多個包在傳輸中丟失或遭到破壞。由于網絡視頻會議的實時性要求,不可能讓視頻傳輸的每一貞都準確無誤。而TCP協議正是為數據可靠傳輸而設計的。那么選擇UDP協議,即用戶數據報協議(User Datagram Protocol,UDP),就成為一種必然。

    Socket是網絡上運行的兩個程序間雙向通訊的一端,它既可以接受請求,也可以發送請求,利用它可以較為方便的編寫網絡上數據的傳遞。在Java中,有專門的Socket類來處理用戶的請求和響應。利用Socket類的方法,就可以實現兩臺計算機之間的通訊。在Java中Socket可以理解為客戶端或者服務器端的一個特殊的對象,這個對象有兩個關鍵的方法,一個是getInputStream方法,另一個是getOutputStream方法。getInputStream方法可以得到一個輸入流,客戶端的Socket對象上的getInputStream方法得到的輸入流其實就是從服務器端發回的數據流。GetOutputStream方法得到一個輸出流,客戶端Socket對象上的getOutputStream方法返回的輸出流就是將要發送到服務器端的數據流,(其實是一個緩沖區,暫時存儲將要發送過去的數據)。

    多播通信是一類特殊的IP地址(D類IP地址)這些IP地址并不和任何主機關聯,而是專門為多播通信保留下來的,地址范圍224.0.0.1-239.255.255.255這間,其中224.0.0.1-224.0.0.255是留作為多播路由信息使用的。此外,所有其它D類IP地址都可以隨便進行通信。

    2.3 系統需求分析
    省略

    第三章 系統概要設計
    3.1 系統總體設計
    3.1.1 運行環境
    操作系統:Windows 2000/XP/2003 等
    安裝JDK
    安裝JMF
    安裝eclipse
    安裝攝像頭

    3.1.2 系統流程
    服務器端流程如圖3.1所示:

    圖3.1 服務器端流程圖

    客戶端流程如圖3.2 所示:

    圖3.2 客戶端流程圖

    3.1.3 系統結構
    通過學習和研究,我們通過多播技術實現了多點對多點的視頻會議系統。整個系統包括這樣幾個模塊:
    文本聊天模塊:該功能是網絡視頻會議的最基本的功能。通過該模塊實現了會議成員的聊天通信。首先,每個會議職員通過與服務器連接加入到會議組,同時通過給自己取昵稱將自己的昵稱發送給服務器,讓會議組的每個成員了解自己的身份。會議成員在聊天的時候不是將文本發送給某個人,而是發送給整個會議組。
    視頻通信模塊:該功能利用JMF軟件開發包,基于RTP協議實時發送和接受視頻流。并且利用JMF多媒體組件構造播放器,進行實時播放。在實現了點對點的基本視頻傳輸的基礎上,我們應用了多播技術。當某個會議成員開始進行視頻連接以后,他能通過視頻會議系統看到所有其他已經建立視頻連接會議成員。

    3.2 系統接口的概要設計
    3.2.1 服務器端設計
    省略

    3.2.2 客戶端設計
    系統客戶端的設計如下:

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

    表3.1 出錯信息及處理方法

    3.3.2 系統維護設計
    為了保證系統的穩定運行,本系統在設計時考慮到了系統的安全性、可靠性、兼容性、可擴展性等因素。了很多驗證條件,盡量保證信息的合法性與正確性,是系統能夠穩定運行。此外本系統的設計還保證了系統功能的可擴展性。
    安全性:在視頻會議系統前端安置加密機或者直接使用加密網卡可以提高在傳輸過程中的安全性。加密設備可直接提供加密能力,從而實現用戶的身份驗證以及未經授權的數據訪問和惡意侵犯。
    可靠性:該系統設計的合理性保證了可靠穩定的運行,支持當前大多數硬件平臺,核心線程優先保護、數據流容錯的設計思路使系統可更加穩定的運轉。
    兼容性:該系統擁有開放的集成接口,可以非常靈活的與用戶集成,并滿足用戶的需要,實現其功能。
    可擴展性:該系統可進行再擴展,在此基礎上擴展為一點對多點,多點對多點的視頻會議系統。

    第四章 系統詳細設計
    本系統的詳細設計根據概要設計中所劃分的各個功能模塊進行詳細的闡述:
    4.1 文本聊天模塊的詳細設計
    本系統要運用Java網絡編程中Socket層次,即傳統網絡編程常采用的方式,通過Client/Server(客戶端/服務器端)機構的應用程序之間建立Socket套接字連接,然后在連接之上進行數據通信。
    通過SocketChannel建立基于UDP的無阻塞連接。創建一個無阻塞服務器,讓每個客戶端與之相連。某個客戶端將文本消息發送給無阻塞的服務器,服務器在將這條文本消息組播給各個與之相連的客戶端。
    數據在Internet中是以有限大小的包形式傳輸的,這些包稱為數據報(datagram).但是,由于數據報長度有限,通常必須將數據分解為多個包,在目的地再重新組合。有可能一包或多個包在傳輸中丟失或遭到破壞。由于網絡視頻會議的實時性要求,不可能讓視頻傳輸的每一貞都準確無誤。而TCP協議正是為數據可靠傳輸而設計的。那么選擇UDP協議,即用戶數據報協議(User Datagram Protocol,UDP),就成為一種必然。

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

    圖4.1 數據報套接字流程圖

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

    客戶端:
    socketChannel = SocketChannel.open();打開連接通道
    socketChannel.connect(new InetSocketAddress(InetAddress.getByName
    (serverAddress),12345));//連接到服務器
    receiveMessage = new ReceivingThread();//構造接收信息線程
    receiveMessage.start();//運行線程
    socketChannel.write(writeBuffer);//往通道里寫入消息
    socketChannel.read(readBuffer);//讀取通道中消息

    4.2 視頻通信模塊的詳細設計
    4.2.1 網絡視頻會議系統結構的詳細設計
    網絡視頻會議系統其根本目的是會議。會議的基本特征就是,參與會議的每個成員都可以了解到其他成員的狀況,每個成員必須到場,然后進行交流,并且每個成員都應該看到所有的交流內容。在這個根本目的完成的基礎上,才可以使網絡視頻會議的特點得以發揮。所以,我們的視頻會議系統采用了多播的方法,使得會議的每個成員都可以得到會議的所有信息。
    通過對視頻會議基本特點的分析,系統結構圖如下圖所示:

    圖4.2 網絡視頻會議系統結構圖
    4.2.2 視音頻傳輸的詳細設計
    使用JMF API的RTP協議實現網絡多媒體程序,可以分為兩個部分,一部分是通過網絡發送數據的主機端程序,另一部分是接收數據的客戶端程序。
    在JMF API中定義了幾個與RTP有關的包,即javax.media.rtp、javax.media.rtp.enent、javax.media.rtp.rtcp登包,通過這些包提供的API,可以實現RTP數據流的傳輸、接受和回放。基于JMF多媒體數據流RTP傳輸、接受和回放過程圖如下:

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

    數據可以來自于多媒體文件,如視頻文件,也可以來自于音/視頻采集設備,如聲卡、攝像頭等。這些數據源的位置不同,格式不同,JMF通過一個稱為媒體定位器(Media—Locator)的類對相應的數據源進行定位,MediaLocator對象內仔儲了數據源的位置信息。JMF管理器(Manager)根據媒體定位器提供的信息創建數據源。這個數據源和文件、攝像頭等物理數據源不同,是一個抽象的概念,是多種不同類型數據源的抽象。這樣,JMF可以隱藏底層細節,使編程者在編程過程中不再考慮數據的具體來源和位置,只需考慮數據的格式、速率等信息就行了。

    數據源生成后 ,可以直接交給播放器(Player),設定格式后就可以在本機播放了。但若要將數據流存儲成其他格式的文件或者通過 RTP協議在網絡上傳輸 ,則需要對其進行再處理。再處理工作由處理器(Processor)完成 ,處理后的數據源可以存儲,也可以在網絡上傳輸。通過 RTP進行傳輸前 ,需要建立會話管理器(SessionManager),建立 RTP會話后再開始發送流,發送時會打開兩個端口,一個用于傳輸 RTP數據流;另一個用來傳輸 RTCP包。
    多媒體數據流的接收過程是發送的逆過程。由RTP信道獲得的數據流作為接收端的數據源,對數據源處理后便可以實現數據流的回放、存儲,甚至再發送。

    詳細設計傳輸過程:

    dsVideo = createDataSource(vf);//創建視頻數據源 dsAudio = createDataSource(af);//創建音頻數據源 devices = CaptureDeviceManager.getDeviceList(format);//得到類型為format的設備的清單,存放在表devices中 ds = Manager.createDataSource(ml);//通過媒體定位器創建數據源 RTPTransmit rtpTransmit = new RTPTransmit(processor,ipAddr,port);//構造RTP會話 result = createProcessor();// 產生一個處理器 result = createTransmitter();產生RTP會話,將處理器輸出的數據傳給指定的IP地址的指定的端口號 processor.start();// 讓處理器開始傳輸

    4.2.2 多播的詳細設計
    多播基本思想是一個源IP主機只進行一次發送,多個接收者(目標 IP主機)可以接收到相同數據的一個拷貝。但是多個接收者必須都注冊加入同一多播組。IP多播服務是一種開放的服務模型,任何主機可以隨時加入或退出某個多播組。
    利用這種思想,可以實現會議中的多點對多點的視頻傳輸,已達到組織會議的目的。多播系統結構圖:

    圖4.4 多播系統結構圖

    多播實現過程:

    group = InetAddress.getByName(MuiltAddr); //設置組播地址 socket = new MulticastSocket(port); //創建MulticastSocket類并將端口與之關聯 socket.joinGroup(group); //加入此組播組

    4.3 系統界面的詳細設計
    本系統在進行界面設計的時候考慮了系統的功能,對各功能模塊進行詳細合理的布局:

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

    5.2 系統實現
    5.2.1 服務器端套接字建立
    數據通訊是雙向的,客戶端通過套接字請求數據通訊后,服務器端需要有一個響應客戶端請求通訊的服務程序,該服務器程序應用ServerSocket類完成與客戶端的通訊。

    ServerSocket類用來監聽和響應客戶端的連接請求,并接受客戶端發送的數據信息。ServerSocket類在服務器端等待其他機器同它的連接,一旦客戶端程序建立一個套接字連接,ServerSocket類就會通過accept()方法返回一個對應的服務器端套接字對象,以便進行直接通訊。從兩臺計算機連接成功起,服務器端與客戶端就得到了一個真正的“套接字-套接字”連接,此時利用Socket類中的getInputStream()及getOutputStream()方法從每端的套接字產生對應的InputStream和OutputStream對象,并將套接字數據流封裝到緩沖區內以便進行兩臺機器之間的數據通訊。

    serverSocketChannel = ServerSocketChannel.open();//打開連接通道 serverSocketChannel.socket().bind(new InetSocketAddress(12345)); //綁定IP與端口號 getConnection();//接收連接請求 charSet = Charset.forName("UTF-8");//開啟服務器套接字通道 serverSocketChannel = ServerSocketChannel.open(); serverSocketChannel.socket().bind(newInetSocketAddress(12345)); serverSocketChannel.configureBlocking(false); //設置阻塞模式為非阻塞模式等待一個連接

    5.2.2 客戶端套接字建立
    客戶端使用Socket類的方法建立(類似于服務器端),客戶端向套接字對象中的數據流輸出和獲取數據。客戶端程序試圖與服務器之間在Socket層次上建立一個連接,通過套接字輸入流讀取方法從套接字數據流中獲取服務器信息,以及寫入數據到套接字輸出流中向服務器發送信息,并且等待服務器的答復。如果連接成功,則該客戶端程序通過套接字與服務器可以進行正常的數據交換。

    socketChannel = SocketChannel.open();打開連接通道 socketChannel.connect(new InetSocketAddress(InetAddress.getByName (serverAddress),12345));//連接到服務器 receiveMessage = new ReceivingThread();//構造接收信息線程 receiveMessage.start();//運行線程 socketChannel.write(writeBuffer);//往通道里寫入消息 socketChannel.read(readBuffer);//讀取通道中消息

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

  • 產生一個JMF處理器(Processor),為每一種RTP格式設置相應的軌跡格式。
  • 從處理器獲取輸出數據源。
  • 會話管理器產生一個發送數據流,即以數據源和序號作為參數調用會話管理器的createSendStream()方法。
  • 開始會話傳輸。
  • 通過監聽ControllerEvent事件控制會話的過程。
  • 停止會話,刪除會話管理器。
  • 定義以下內容:

    // 媒體定位 IP 端口 處理器 會話管理器 輸出數據源 private MediaLocator Locator; private String IpAddress; private int portBase; private Processor processor=null; private RTPManger rtpMgrs[]; private DataSource dataOutput=null;

    具體實現函數如下:

    //發送數據函數 public RTPTransmit(Processor processor,String ipAddress, String pb){} //為媒體定位器產生一個處理器 private String createProcessor(){} // 為處理器的每一個媒體磁道產生一個RTP會話 private String createTransmitter() {} // 讓處理器開始傳輸 public synchronized String start(){} // 停止傳輸public void stop(){}//組播線程類 class CreateJoinMuiltcastThread extends Thread {} //處理器的狀態監聽器類 class StateListener implements ControllerListener {}

    5.2.4 視音頻接收
    接收網絡實時媒體數據流是通過java.media包中定義的各種RTP事件監聽器和RTP事件處理類來處理和控制的,使用java.media包中的Player類可以實時播放網絡多媒體數據流,java.media包中的處理媒體流接收和播放完成了整個接收RTP數據的過程。接收部分程序為每一種新接收到的媒體數據流產生一個播放器,一邊接收媒體流數據,一邊將媒體數據播放出來,其實現分為以下幾個步驟:

  • 實現ReceiveStreamListener監聽接口,監聽NewReceiveStreamEvent事件。
  • 當接收到NewReceiveStreamEvent事件后,通過事件獲取接收媒體數據流(ReceiveStream),然后通過接收媒體數據流獲取RTP數據源(DataSource)。
  • 將數據源傳給Manager.createPlayer()產生一個播放器。
  • 給播放器添加監聽器,等到播放器實現后,即可顯示播放數據。
  • 定義以下內容:

    String sessions[] = null; // RTP會話字符串數組 RTPManager mgrs[] = null; // RTP管理器數組 Vector playerPanels = null; // 管理播放器窗口的向量 boolean dataReceived = false; // 是否接收到數據的標志 Object dataSync = new Object(); // 同步對象

    具體實現函數如下:

    //接收數據實現函數 public Receive(String sessions[]) {} //初始化RTP會話,準備接收數據 protected boolean initialize(){} //關閉播放窗口 protected void close(){} //判斷數據是否接收完成public boolean isDone() {} // 通過播放器查找播放窗口 PlayerPanel find(Player p) {} // 通過接收數據流查找播放窗口 PlayerPanel find(ReceiveStream strm) {} //實現ReceiveStreamListener監聽接口 public synchronized void update( ReceiveStreamEvent evt) {}

    第六章 性能測試與分析
    6.1 測試實例(測試集)的研究與選擇
    測試是為了發現程序中的錯誤而執行程序的過程。好的測試方案是盡可能發現尚未發現的錯誤的測試方案。
    本節分別介紹各個功能的測試用例及其預期結果。

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

    第七章 課程設計總結
    本系統已經完成了預期目標,并且在預期目標基礎上有了一定的突破。從系統最初的可行性分析、需求分析、設計,到最后實現的過程中,經過多次反復的修改,功能逐漸完善,已經基本達到了實用,方便,人性化等預期目標,且能實現多人在線同時舉行會議。
    7.1 系統總結
    7.1.1 系統特點介紹

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

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

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

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


    5、資源下載

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

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

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。