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

正文內(nèi)容

網(wǎng)絡(luò)視頻聊天工具的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文-wenkub.com

2025-06-22 00:40 本頁面
   

【正文】 圖 11 視頻的傳輸相對于視頻的傳輸,語音的傳輸就簡單得多了,在這里建立了兩個線程來處理,先來用一個語音錄制線程在一個客戶端錄制語音,再通過用 G729a 對語音進(jìn)行編碼,然后傳輸?shù)搅硪豢蛻舳?,同樣?G729a 對語音進(jìn)行解碼,然后用一個語音回放線程將語音播放出來。所以提出以幀為單位發(fā)送視頻數(shù)據(jù)流。 }m_Count++。}mmResult = ::waveOutWrite(m_hPlay, lpHdr, sizeof(WAVEHDR))。mmResult = ::waveOutPrepareHeader(m_hPlay, lpHdr, sizeof(WAVEHDR))。ZeroMemory(p,length)。p=new char [length]。if(Playing==FALSE) return FALSE。} 語音回放相對錄音而言,播放就簡單多了,同樣用的一個 CWinThread 對象 CAudioPlay 來實(shí)現(xiàn),部分實(shí)現(xiàn)代碼:LRESULT CAudioPlay::OnWriteSoundData(WPARAM wParam, LPARAM lParam){// TRACE(CAudioPlay::OnWriteSoundData\n)。//給輸入設(shè)備增加一個緩存mmReturn = ::waveInAddBuffer(m_hRecord,rechead[i], sizeof(WAVEHDR))。if(mmReturn!=MMSYSERR_NOERROR ) return FALSE。錄音用的一個 CWinThread 對象 CAudioRec 來實(shí)現(xiàn),部分實(shí)現(xiàn)代碼:LRESULT CAudioRec::OnStartRecording(WPARAM wp, LPARAM lp){if(recording) return FALSE。} 視頻捕獲驅(qū)動視頻捕獲必須具有視頻捕獲驅(qū)動才能進(jìn)行,其相關(guān)內(nèi)容如下:視頻捕獲驅(qū)動的性能,capDriverGetCap 函數(shù)得到當(dāng)前連接視頻驅(qū)動的硬件性能,該信息保存在 CAPDRIVERCAPS 結(jié)構(gòu)中;視頻對話框,每個視頻驅(qū)動能夠提供 4 個對話框來控制視頻捕獲和數(shù)字化處理視頻對話框定義的視頻壓縮率和圖像品質(zhì)等。}// Set the capture parametersif(SetCapturePara()==FALSE){// (\n Setting capture parameters failed)。 ret3)){// Device may be open already or it may not have been// closed properly last time.AfxMessageBox(Unable to open Video Capture Device)。 ret1 amp。 //得到已安裝的捕獲設(shè)備的名稱及版本 ret2 = capGetDriverDescription(index,devname,100,devversion,100)。 //創(chuàng)建一個 AVICap 捕獲窗口 m_capwnd = capCreateCaptureWindow(Capture,WS_POPUP,0,0,1,1,0,0)。//捕獲窗口BOOL VideoCapture::Initialize(){ char devname[128]={0},devversion[128]={0}。該結(jié)構(gòu)的內(nèi)容包含了圖片的尺寸、卷軸的當(dāng)前位置、overlay和 preview 是否已設(shè)置。將捕獲窗口連接至捕獲設(shè)備,用 capDriverConnect 函數(shù)來使一個捕獲窗口與一個捕獲設(shè)備連接或關(guān)聯(lián)連接上后,就可以通過捕獲窗口向捕獲設(shè)備發(fā)送各種消息,可以使用函數(shù)capGetDriverDescription 來獲得已安裝的捕獲設(shè)備名稱及版本,將其列舉在實(shí)現(xiàn)程序過程中。capCaptureAbort(m_capwnd)。m_bmpinfo,sizeof(m_bmpinfo))。m_bmpinfo,sizeof(m_bmpinfo))。if(!capCaptureSetSetup(m_capwnd,amp。 = FALSE。下面程序?yàn)樵O(shè)置 CAPTUREPARAMS 結(jié)構(gòu)的實(shí)現(xiàn)代碼:BOOL VideoCapture::SetCapturePara(){CAPTUREPARMS CapParms={0}。設(shè)置捕獲速度,通過使用 capCaptureGetSetup 宏來得到當(dāng)前的捕捉速度,將當(dāng)前的捕捉速度保存在 CAPTUREPARAMS 結(jié)構(gòu)的 dwRequestMicroSecPerFrame 成員變量中,也可以通過設(shè)置此變量來改變當(dāng)前設(shè)置值。在 VC++中,采用 VFW 技術(shù),客戶端通過 capSetCallbackOnFrame()注冊回調(diào)函數(shù),當(dāng)采集卡采集到一幅圖像后,系統(tǒng)就會自動調(diào)用回調(diào)函數(shù),然后再回調(diào)函數(shù)中使用 ICSeqCompressFrame()函數(shù)進(jìn)行壓縮。(5)設(shè)置回調(diào)函數(shù):通過回調(diào)函數(shù)來通知程序視頻事件的發(fā)生,比如捕捉一幀圖像成功的消息,捕捉出錯的消息等。(2)連接視頻驅(qū)動程序:將建立的視頻捕捉窗口與視頻設(shè)備驅(qū)動程序相連。AddChatMessage(str)。(str)。}if ( () = 0){SetMessageBox(請選擇說話對象!\r\n)。GetDlgItemText(IDC_MESSAGE,str)。return 。在整個系統(tǒng)中,利用鏈表來處理所有的用戶信息:當(dāng)有用戶登錄時,在鏈表尾部加入該用戶信息;當(dāng)用戶下線時,在該鏈表中刪除用戶,并提示所有用戶,該用戶下線。接下來的操作可以創(chuàng)建 CArchive 對象關(guān)聯(lián) CsocketFile,以用來發(fā)送和接收數(shù)據(jù) [2]。CSocket 通常和 CsocketFile 以及 Carchive 類混合使用,這兩個類負(fù)責(zé)數(shù)據(jù)的發(fā)送和接收?;?于 局 域 網(wǎng) 的 視 頻聊 天 室 系 統(tǒng)語 音 視 頻 聊 天視 頻 捕 獲視 頻 壓 縮 、解 壓 縮視 頻 傳 輸服 務(wù) 器 中 轉(zhuǎn) 語 音 錄 制 語 音 回 放文 字 聊 天圖 2 系統(tǒng)功能模塊圖 系統(tǒng)各模塊流程圖 在整個系統(tǒng)中主要運(yùn)行兩個功能:圖 3 文字聊天流程圖和圖 4 語音視頻聊天流程圖。A 客戶端向 B客戶端請求語音視頻聊天是通過 B 客戶端的用戶名來獲得 B 客戶端的 IP 地址,并向B 客戶端發(fā)送語音視頻聊天請求,當(dāng) B 客戶端接受后捕獲視頻,并進(jìn)行壓縮傳輸?shù)?A客戶端解壓并進(jìn)行顯示,在 B 客戶端接受視頻的同時,A 客戶端也捕獲視頻,壓縮傳輸?shù)?B 客戶端解壓并進(jìn)行顯示。首先啟動服務(wù)器端,客戶端通過用戶名和密碼登錄服務(wù)器,服務(wù)器響應(yīng)客戶端登錄并提示有用戶登錄,此時兩個用戶就可以進(jìn)行文字聊天,在文字聊天時通過服務(wù)器中轉(zhuǎn),而每個用戶可以同時與多個用戶進(jìn)行文字聊天。它們進(jìn)行文字聊天時,要經(jīng)過服務(wù)器進(jìn)行中轉(zhuǎn),而當(dāng)進(jìn)行語音視頻聊天時是客戶端與客戶端之間直接進(jìn)行的點(diǎn)對點(diǎn)的連接,它們之間的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖 1。當(dāng)雙方確認(rèn)視頻連接后就進(jìn)行視頻傳輸,并顯示在客戶端,同時用線程實(shí)現(xiàn)語音錄制和回放。文字、視頻聊天的功能和應(yīng)用效果體現(xiàn)在客戶端,而服務(wù)器端則是必不可少的,對于系統(tǒng)的需求分析在系統(tǒng)設(shè)計(jì)的過程中應(yīng)該明確、細(xì)致:(1)文字聊天:首先啟動服務(wù)器端,當(dāng)用戶啟動客戶端時,用服務(wù)器保存的用戶名和密碼來驗(yàn)證客戶是否已經(jīng)登錄到服務(wù)器。(4)丟包率,網(wǎng)絡(luò)數(shù)據(jù)傳輸經(jīng)常會出現(xiàn)丟包現(xiàn)象,視頻傳輸過程中數(shù)據(jù)丟包嚴(yán)重的話會影響在線視頻聊天質(zhì)量。其中應(yīng)重點(diǎn)考慮的是網(wǎng)絡(luò)的帶寬情況、端到端的時延、時延抖動、丟包率等問題。 需求分析在同一個局域網(wǎng)中,如何根據(jù)自身業(yè)務(wù)的要求,量身定制,對視頻設(shè)備進(jìn)行合理搭配,選擇一套合理的視頻聊天室系統(tǒng)。(2)線程的優(yōu)先級CwinThread 類的成員函數(shù)用于線程優(yōu)先級的操作:int GetThreadPriority() ;BOOL SetThradPriority()(int nPriority);(3)線程的掛起和恢復(fù)CWinThread 類中包含了應(yīng)用程序掛起和恢復(fù)它所創(chuàng)建的線程的函數(shù),其中 SuspendThread()用來掛起線程,暫停線程的執(zhí)行;ResumeThread()用來恢復(fù)線程的執(zhí)行。工作線程和用戶界面線程啟動時要調(diào)用同一個函數(shù)的不同版本;一個進(jìn)程中的所有線程共享它們父進(jìn)程的變量,但同時每個線程可以擁有自己的變量 [7]。操作系統(tǒng)是根據(jù)線程的優(yōu)先級來安排 CPU 的時間,優(yōu)先級高的線程優(yōu)先運(yùn)行,優(yōu)先級低的線程則繼續(xù)等待。單獨(dú)一個執(zhí)行程序運(yùn)行時,缺省地包含了一個主線程,主線程以函數(shù)地址的形式出現(xiàn),提供程序的啟動點(diǎn),當(dāng)主線程終止時,進(jìn)程也隨之終止。在 C/S 體系的下,數(shù)據(jù)庫不能真正成為公共、專業(yè)化的倉庫,它受到獨(dú)立的專門管理。(2)數(shù)據(jù)的儲存管理功能較為透明。最簡單的 C/S 體系結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用由兩部分組成,即客戶應(yīng)用程序和數(shù)據(jù)庫服務(wù)器程序。傳統(tǒng)的 c/s 體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應(yīng)用中無論是 client端還是 server 端都還需要特定的軟件支持。 C/S 結(jié)構(gòu)的介紹C/S(client/server)結(jié)構(gòu),即被廣為熟知和使用的客戶機(jī)和服務(wù)器結(jié)構(gòu)。Video Capture 的主要結(jié)構(gòu):結(jié)構(gòu)體 CAPTUREPARAMS 主要包含一些獲取圖像的參數(shù): DWORD dwRequestMicroSecPerFrame 代表相鄰兩個 frame 的獲取時間間隔;BOOL fYield 值為 TRUE,則表示 Windows 會以另一個 thread 來捕獲影像,值為 FALSE,程序會在捕捉影像后顯示忙碌狀態(tài);BOOL fCaptureAudio 其值表示是否需要同時獲取聲音資料。令人高興的是,發(fā)送 AVICap 窗口消息所能完成的功能都能調(diào)用相應(yīng)的宏來完成。比如,將宏 capCaptureSequenceNoFile 同用 capSetCallbackOnVideoStream 登記的回調(diào)函數(shù)一起使用,可使應(yīng)用程序直接使用視頻和音頻數(shù)據(jù)。在物理上,這種模式需要通過 VGA 卡在監(jiān)視器上顯示。用 AVICap 窗口類創(chuàng)建的窗口(通過 capCreateCaptureWindow 函數(shù)創(chuàng)建)被稱為“捕獲窗”,其窗口風(fēng)格一般為 WS_CHILD 和 WS_VISIBLE。對于使用沒有視頻疊加能力的捕獲卡的 PC 機(jī)來說,用 MCI 提供的命令集是無法捕獲視頻流的。特別是它提供了功能強(qiáng)大、簡單易行、類似于 MCIWnd 的窗口類 AVICap。(4):支持由標(biāo)準(zhǔn)多媒體 I/O(mmio)函數(shù)提供的更高的命令來訪問 AVI 文件。用戶不必專門安裝 VFW,在安裝 Windows 時,安裝程序會自動地安裝配置視頻所需的組件,如設(shè)備驅(qū)動程序、視頻壓縮程序等 [6]。 VFW 簡介VFW 是 Microsoft 1992 年推出的關(guān)于數(shù)字視頻的一個軟件包,它能使應(yīng)用程序數(shù)字化并播放從傳統(tǒng)模擬視頻源得到的視頻剪輯。一個類可以根據(jù)需要生成派生類。友元可以是在類外定義的函數(shù),也可以是在類外定義的整個類,前者稱友元函數(shù),后者稱為友元類。一種是私有(Private)成員,只有在類中說明的函數(shù)才能訪問該類的私有成員,而在該類外的函數(shù)不可以訪問私有成員;另一種是公有(Public)成員,類外面也可訪問公有成員,成為該類的接口;還有一種是保護(hù)(Protected)成員,這種成員只有該類的派生類可以訪問,其余的在這個類外不能訪問。對象被說明具有一個給定類的變量,類類似于 C 語言中的結(jié)構(gòu),在 C 語言中可以定義結(jié)構(gòu),但這種結(jié)構(gòu)中包含數(shù)據(jù),而不包含函數(shù)。面向?qū)ο蟮脑O(shè)計(jì)思想是在原來結(jié)構(gòu)化程序設(shè)計(jì)方法基礎(chǔ)上的一個質(zhì)的飛躍,C++完美地體現(xiàn)了面向?qū)ο蟮母鞣N特性 [5]。在滿足用戶信息傳遞與知識獲取需求方面
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1