freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于局域網的視頻聊天室系統的設計與實現—計算機(論文)(編輯修改稿)

2026-01-12 09:21 本頁面
 

【文章內容簡介】 變全局變量,使線程的執(zhí)行函數返回,則該線程終止。 3 需求分析 軟硬件環(huán)境 電腦兩臺以上,分別配有 攝像頭、麥克風、音箱或耳機等外部設備 ; Windows XP系統, Microsoft Visual Studio 編程開發(fā)系統等。 需求分析 在同一個局域網中, 如何根據自身業(yè)務的要求,量身定制,對視頻設備進行 第 6 頁 共 24 頁 合理搭配,選擇一套合理的視頻 聊天室 系統 。如何來滿足局域網內部用戶的通訊要求,在考慮到網絡帶寬的同時 ,提高 視頻清晰度,動態(tài)畫面的流暢,語音的實時傳輸等,正是現代社會通訊所必需的。設計本系統時,分析網絡承載、整個系統結構的組建等是實現局域網文字聊天和語音視頻聊天所必需的。 文字、語音視頻聊天作為一種廣泛的網絡應用對其基礎的承載網絡環(huán)境有著較高的網絡要求。其中應重點考慮的是網絡的帶寬情況、端到端的時延、時延抖動、丟包率等問題。 ( 1) 網絡帶寬需求,視頻聊天對網絡的帶寬需求為“視頻帶寬 +IP 包頭開銷”,計算方法為:網絡帶寬 = 視頻帶寬 。 ( 2) 端到端的時延,網絡傳輸不可避免的會發(fā)生傳輸時延,通常建議視頻聊天的通用時 延小于 150ms。 ( 3) 時延抖動,由于音頻 /視頻的傳輸為實時的交互,因此網絡的時延抖動更為重要,一般,視頻聊天的時延抖動控制在 50ms 內。 ( 4) 丟包率,網絡數據傳輸經常會出現丟包現象,視頻傳輸過程中數據丟包嚴重的話會影響在線視頻聊天質量。因此,在設計上應將網絡上的丟包率控制在 1%以內。 視頻聊天對實時性要求較高的網絡應用,作為其基礎的承載網絡有較高的寬帶和對網絡中的業(yè)務流量有較高的控制能力。而視頻聊天系統本身對帶寬的要求為 62kbit/s~ 2Mbit/s,但是為了滿足流暢的視音頻效果,要求帶寬不低于384kbit/s。 文字、視頻聊天的功能和應用效果體現在客戶端,而服務器端則是必不可少的,對于系統的需求分析在系統設計的過程中應該明確、細致: ( 1) 文字聊天:首先啟動服務器端,當用戶啟動客戶端時,用服務器保存的用戶名和密碼來驗證客戶是否已經登錄到服務器。只有當有兩個以上的用戶啟動客戶端時,才可以進行文字聊天,聊天內容要經過服務器中轉,分別在服務器端和兩個聊天的客戶端顯示聊天。 ( 2) 語音視頻聊天:在有兩個客戶在線的情況下,才能進行語音視頻聊天。兩個用戶要進行語音視頻聊天時,一個用戶選中另一個用戶的用戶名,根據該用戶名在后臺鏈表中的 對應 IP 地址查找用戶并請求視頻連接。當雙方確認視頻連接后就進行視頻傳輸,并顯示在客戶端,同時用線程實現語音錄制和回放。這樣,兩個用戶就實現了點對點的語音視頻聊天。在進行語音視頻聊天的過程中,不能再與其它用戶進行語音視頻聊天,但能夠與其它用戶進行文字聊天。 第 7 頁 共 24 頁 4 系統結構 硬件結構 該系統采用的是 Server/Client 結構,服務器端是一臺 PC 機,而客戶端是PC 機和一個數字攝像頭、耳機和麥克風。它們進行文字聊天時,要經過服務器進行中轉,而當進行語音視頻聊天時是客戶端與客戶端之間直接進行的點對點的連接,它們之間的網 絡拓撲結構如圖 1。在圖中,為了簡便,沒有畫出 麥克風、音箱或耳機等外部設備 。 圖 1 網絡拓撲結構圖 軟件結構 功能需求 通過需求調研并分析,確定系統具備的基本功能,包括:文字聊天、語音視頻聊天。 ( 1) 文字聊天: 文字聊天采用的是 TCP 模式,包括服務器端和客戶端。首先啟動服務器端,客戶端通過用戶名和密碼登錄服務器,服務器響應客戶端登錄并提示有用戶登錄,此時兩個用戶就可以進行文字聊天,在文字聊天時通過服務器中轉,而每個用戶可以同時與多個用戶進行文字聊天。當有用戶退出時,服務器做出響應,提示在線用戶 ,用戶下線 。 ( 2) 語音視頻聊天: 語音視頻聊天時采用的是 UCP 模式,客戶端與客戶端點對點的進行,不需要經過服務器端中轉。在文字聊天的基礎上,客戶端之間自行處理的語音視頻聊天,運用 VFW函數庫中的函數對 USB口輸入的數字視頻信息進行相關處理 ,比如 :視頻捕獲、影像壓縮以及影像播放等,同時利用線程來處理聲音部分的錄制、回放等。 第 8 頁 共 24 頁 A客戶端向 B 客戶端請求語音視頻聊天是通過 B客戶端的用戶名來獲得 B客戶端的 IP 地址,并向 B 客戶端發(fā)送語音視頻聊天請求,當 B 客戶端接受后捕獲視頻,并進行壓縮傳輸到 A客戶端解壓并進行顯示,在 B 客戶端接受視頻的同時 , A客戶端也捕獲視頻,壓縮傳輸到 B 客戶端解壓并進行顯示。 系統功能模塊圖 該系統分為服務器端和客戶端,完成了文字聊天和語音視頻聊天,使用上只有文字聊天時才會通過服務器端,而對于語音視頻聊天就只需要對整個在線客戶端兩兩之間進行點對點的視頻聊天。而在語音視頻時包括了視頻捕獲、視頻壓縮、解壓縮、語音錄制、語音回放以及視頻傳輸等。整個系統的功能模塊圖如圖 2。 基 于 局 域 網 的 視 頻聊 天 室 系 統語 音 視 頻 聊 天視 頻 捕 獲視 頻 壓 縮 、解 壓 縮視 頻 傳 輸服 務 器 中 轉 語 音 錄 制 語 音 回 放文 字 聊 天 圖 2 系統功能模塊圖 系統各模塊流程圖 在整個系統中主要運行兩個功能:圖 3 文字聊天流程圖和圖 4 語音視頻聊天流程圖。 第 9 頁 共 24 頁 圖 3 文字聊天流程圖 圖 4 語音視頻聊天流程圖 第 10 頁 共 24 頁 5 系統的詳細設計 文字聊天 TCP 套接字的運用 在文字聊天時 ,服務器端與客戶端的連接是采用的 TCP 套接節(jié)進行連接。 TCP套接字的使用如圖 5。創(chuàng)建 CSocket 對象 CSocketServer 來處理服務器端與客戶端的連接, CSocket 繼承于 CasyncSocket,是 Windows Socket API 的高層抽象。CSocket 通常和 CsocketFile 以及 Carchive 類混合使用,這兩個類負責數據的發(fā)送和接收。要使用 CSocket 對象,首先要調用構造函數,然后調用 Create 函數創(chuàng)建一個 Socket 句柄。 CSocket 函數缺省是創(chuàng)建一個流 Socket;如果沒有使用 CArchive 類,那么還可以創(chuàng)建一個數據報 Socket。服務器端調用 Accept,客戶端調用 Connect,然后創(chuàng)建一個 CsocketFile 去關聯 CSocket。接下來的操作可以創(chuàng)建 CArchive 對象關聯 CsocketFile,以用來發(fā)送和接收數據。 圖 5 TCP套接字的使用 第 11 頁 共 24 頁 文字聊天實現 ChatServer 服務器運行時,利用一個 CSocket 對象 CSocketServer 啟動服務器,用函數 gethostname 來獲得服務器端主機名和 IP,同時在服務器對話框中顯示服務器 IP,并將分配的固定端口號 8123 顯示在對話框中。用一個 list列表顯示在線用戶,隨時更新用戶登錄情況,用一個 edit box 顯示客戶端的聊天內容以及系統提示消息。每一個 ChatClient 客戶端啟動時,利用服務器內定的用戶號和密碼來登錄 (如圖 6)。在整個系統中,利用鏈表來處理所有的用戶信息:當有用戶登錄時,在鏈表尾部加入該用戶信息;當用戶下線時,在該鏈表中刪除用戶,并提示所有用戶,該用戶下線 。在對鏈表進行操作的同時,要更新list 列表中的信息。 圖 6 用戶登錄界面 ChatServer 服務器端響應客戶端文字聊天時的中轉情況如圖 7。 圖 7 服務器響應文字聊天信息中轉 ChatClient 客戶端兩兩間進行文字聊天時,發(fā)送信息的處理函數如下: 第 12 頁 共 24 頁 void CChatClientDlg::OnChatBtSend() //發(fā)送信息按鍵 { if( !m_bConnect) { SetMessageBox(請連接服務器 !\r\n)。 return 。 } CString str。 CString szUserName。 CMesg msg。 GetDlgItemText(IDC_MESSAGE,str)。 GetDlgItemText(IDC_USERNAME,szUserName)。 if( () = 0 ) { SetMessageBox(請輸入想要發(fā)送的信息 !\r\n)。 return 。 } if ( () = 0) { SetMessageBox(請選擇說話對 象 !\r\n)。 return 。 } //消息封裝 (Message)。 (szUserName)。 (str)。 m_csClientSendM(amp。msg)。 AddReceiver(szUserName , true)。 AddChatMessage(str)。 } 在聊天兩個客戶端的信息情況如圖 8 和圖 9。 第 13 頁 共 24 頁 圖 8 接收文字信息 圖 9 發(fā) 送文字信息 語音視頻聊天 UDP 套接字的運用 在實現語音視頻聊天時 ,采用的是基于 UDP套接字的點對點模式 ,而 UDP面向的是無連接的數據服務 ,其套接字的使用如圖 10所示。 第 14 頁 共 24 頁 圖 10 UDP套接字的使用 視頻的捕獲 利用 VFW 接口,視頻捕獲可以分為以下幾個步驟: ( 1) 建立視頻采集窗口:該窗口用來接收視頻捕捉驅動程序傳來的數據和消息。 ( 2) 連接視頻驅動程序:將建立的視頻捕捉窗口與視頻設備驅動程序相連。 ( 3) 視頻捕獲初始化。 ( 4) 視頻捕捉設置: VFW下視頻捕捉參數的設置可以通過調用函數或彈出對話框的形式來實現。一般視頻驅動程序允 許設置的參數包括視頻源選擇、視頻格式、視頻顯示格式等。 ( 5) 設置回調函數:通過回調函數來通知程序視頻事件的發(fā)生,比如捕捉一幀圖像成功的消息,捕捉出錯的消息等。 ( 6) 結束捕捉:結束捕捉是應該有一些清除工作。如釋放分配的內存,斷開捕捉窗口與視頻捕捉驅動程序的連接,清除視頻捕捉窗口等。 窗口類為捕獲數字視頻流及其相關操作提供了很大的方便,靈活編寫其中的 第 15 頁 共 24 頁 回調函數可滿足實時視頻傳輸的需要,例如應用程序可直接從緩沖中取得數字視頻并對其進行壓縮編碼后實時地傳到遠端的客戶端。 在 VC++中,采用 VFW 技術,客戶端通過 capSetCallbackOnFrame()注冊回調函數,當采集卡采集到一幅圖像后,系統就會自動調用回調函數,然后再回調函數中使 用 ICSeqCompressFrame()函數進行壓縮。然后再通過 Winsock 將壓縮后的數據發(fā)送到 另一客戶 端。 該客戶 端接收完一幀以后,交給 ICDepress()解壓,最后用 SetDIBitsToDevice()將圖像顯示出來 。 基本的捕獲設置包括設置捕獲速度(每秒捕獲多少幀)、是否同時捕獲聲頻、捕獲緩沖、允許最大丟失多少幀和是否使用 DOS 內存,以及使用鍵盤的哪個鍵或鼠標的哪個鍵來終止捕 獲等內容,這些設置使用 CAPTUREPARAMS 結構來描述,capCaptureGetSetup 宏來得到當前的設置,然后改變此結構的成員變量,再使用 capCaptureSetSetup 宏設置新的設置。 設置捕獲速度,通過使用 capCaptureGetSetup 宏來得到當前的捕捉速度,將當前的捕捉速度保存在 CAPTUREPARAMS結構的 dwRequestMicroSecPerFrame成員變量中,也可以通過設置此變量來改變當前設置值。 設置終止捕獲,同樣通過使用 capCaptureGetSetup 宏來得到當 前的設置,當前按鍵設置保存在 CAPTUREPARAMS 結構的 vKeyAbort 成員中,鼠標設置保存在fAbortLeftMouse 和 fAbortRightMouse 成員中,通過修改可以設置新的熱健或者鼠標左右鍵,修改完成后,使用 capCaptureSetSetup 宏來進行更新。 捕獲的時間限制,用 CAPTUREPARAMS 結構中的 fLimitEnabled 表示捕獲是否有時間的限制, wTimeLimit 用來設置指示捕獲最大的持續(xù)時間,其單位為秒。使用 capCaptureGetSetup 宏來得到當前的設置值。 下面程序為設置 CAPTUREPARAMS 結構的實現代碼: BOOL VideoCapture::SetCapturePara() { CAPTUREPARMS CapParms={0}。 capCaptureGetSetup(m_capwnd,amp。CapParms,sizeof(CapParms))。 //得到當前的捕獲速度 = FALSE。 = FALSE。 = TRUE。 = FALSE。 = 80
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1