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

正文內(nèi)容

局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文-預(yù)覽頁

2024-09-29 16:01 上一頁面

下一頁面
 

【正文】 類是用戶界面線程的例子。 要使你的代碼和 MFC 是完全線程安全的, CWinThread 類是完全必要的。為了創(chuàng)建一個(gè)線程,調(diào)用 AfxBeginThread 函數(shù)。對(duì)于工作 者線程和用戶界面線程,你可以指定可選的參數(shù)來修改優(yōu)先級(jí), 堆棧大小, 創(chuàng)建標(biāo)志和安全屬性。 創(chuàng)建線程也可以使用 API 函數(shù): CreateThread 函數(shù)完成。 為了解決數(shù)字視頻數(shù)據(jù)量大的問題,需要對(duì)數(shù)據(jù)進(jìn)行壓縮。 VFW 主要由以下六個(gè)模塊組成: 1. :包含了執(zhí)行視頻捕獲的函數(shù),它給 AVI 文件 、 I/O 和視頻音頻設(shè)備驅(qū)動(dòng)程序提供一個(gè)高級(jí)接口; 2. :用一套特殊的 DrawDib 函數(shù)來處理屏幕上的視頻操作 ; 3. :此驅(qū)動(dòng)程序包括對(duì) VFW 的 MCI 命令的解釋器; 4. :支持由標(biāo)準(zhǔn)多媒體 I/O( mmio)函數(shù)提供的更高的命令來訪問 AVI 文件; 5. 壓縮管理器( ICM):管理用于視頻壓縮 /解壓縮的編解碼器( CODEC); 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 10 6. 音頻壓縮管理器 ACM:提供與 ICM 相似的服務(wù),不同的是它適于波形音頻。 AVICap 支持實(shí)時(shí)的視頻流捕獲和單幀捕獲 , 并提供對(duì)視頻源的控制。同時(shí),它也可將數(shù)字視頻捕獲到文件。捕獲窗具有下列功能: 1. 將視頻流和音頻流捕獲到一個(gè) AVI文件中; 2. 動(dòng)態(tài)地同視頻和音頻輸入器件連接或斷開; 3. 以 Overlay 或 Preview 模式對(duì)輸入的視頻流進(jìn)行實(shí)時(shí)顯示; 4. 在捕獲時(shí)可指定所用的文件名并能將 捕獲文件的內(nèi)容拷貝到另一個(gè)文件; 5. 設(shè)置捕獲速率; 6. 顯示控制視頻源、視頻格式、視頻壓縮的對(duì)話框; 7. 創(chuàng)建、保存或載入調(diào)色板; 8. 將圖像和相關(guān)的調(diào)色板拷貝到剪貼板; 9. 將捕獲的一個(gè)單幀圖像保存為 DIB格式的文件。只有部分視頻捕獲卡才具有視頻疊加能力 。應(yīng)用程序可用捕獲窗來登記回調(diào) 函數(shù)(由用戶編寫,而由系統(tǒng)調(diào)用),以便在發(fā)生下列情況時(shí) , 它能通知應(yīng)用程序 , 作出相應(yīng)的反應(yīng):捕獲窗狀態(tài)改變;出錯(cuò);視頻幀和音頻緩存可以使用;在捕獲過程中,其它應(yīng)用程序處于讓步( Yield)地位。 視頻部分主要是利用 Video Capture 函數(shù)庫來獲取影像的。 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 12 結(jié)構(gòu)體 COMPVARS 主要是記錄所有和壓縮相關(guān)的信息,重要的成員: DWORD fccHandler 為 pressor 句柄; LPBITMAPINFO lpbiIn 指向待壓縮影像BITMAPINFO 的指標(biāo); LPBITMAPINFO lpbitOut:指向壓縮完影像 BITMAPINFO 的指標(biāo); LONG lKey 代表 keyframe rate,而所謂 key frame 是指此 frame 在解壓縮時(shí)不需要依賴前面的 frame; LONG lQ 代表影像壓縮后的品質(zhì),取值為 1~ 10000的整數(shù)。但如果你不圍繞 Developer Studio 來進(jìn)行學(xué)習(xí),就不能有效地使用 Visual C++( Developer Studio 聽起來很像 Visual Studio , 但它們之間沒有關(guān)系)。當(dāng)有用戶退出時(shí),服務(wù)器做出響應(yīng),提示在線用戶 ,下線用戶。 A客戶端向 B客戶端請(qǐng)求語音視頻聊天是通過 B客戶端的用戶名來獲得 B 客局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 15 戶端的 IP 地址,并向 B 客戶端發(fā)送語音視頻聊天請(qǐng)求,當(dāng) B客戶端接受后捕獲視頻,并進(jìn)行壓縮傳輸?shù)?A客戶端解壓并進(jìn)行播放,在 B客戶端接受視頻的同時(shí),A客戶端也捕獲視頻,壓縮傳輸?shù)?B客戶端解壓并進(jìn)行顯示。在遇到可預(yù)知的故障與情況時(shí),能提示用戶并自動(dòng)退出 。 2. 宜操作性,程序簡(jiǎn)單易懂,用戶能很容易看懂并使用。 CSocket 通常和 CsocketFile 以及 Carchive 類混合使用,這兩個(gè)類負(fù)責(zé)數(shù)據(jù)的發(fā)送和接收。接下來的操作可以創(chuàng)建 CArchive 對(duì)象關(guān)聯(lián) CsocketFile,以用來發(fā)送和接收數(shù)據(jù)。在整個(gè)系統(tǒng)中,利用鏈表來處理所有的用戶信息:當(dāng)有用戶登錄時(shí),在鏈表尾部加入該用戶信息;當(dāng)用戶下線時(shí),在該鏈表中刪除用戶,并提示所有用戶,該用戶下線。 return 。 GetDlgItemText(IDC_MESSAGE,str)。 } if ( () = 0) { SetMessageBox(請(qǐng)選擇說話對(duì)象 !\r\n)。 (str)。 AddChatMessage(str)。 2. 連接視頻驅(qū)動(dòng)程序:將建立的視頻捕捉窗口與視頻設(shè)備驅(qū)動(dòng)程序相連。 5. 設(shè)置回調(diào)函數(shù):通過回調(diào)函數(shù)來通知程序視頻事件的發(fā)生,比如捕捉一局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 25 幀圖像成功的消息,捕捉出錯(cuò)的消息等。 在 VC++中,采用 VFW 技術(shù),客戶端通過 capSetCallbackOnFrame()注冊(cè)回調(diào)函數(shù),當(dāng)采集卡采集到一幅圖像后,系統(tǒng)就會(huì)自動(dòng)調(diào)用回調(diào)函數(shù),然后再回調(diào)函數(shù)中使用 ICSeqCompressFrame()函數(shù)進(jìn)行壓縮。 設(shè)置捕獲速度,通過使用 capCaptureGetSetup 宏來得到當(dāng)前的捕捉速度,將當(dāng)前的捕捉速度保存在 CAPTUREPARAMS結(jié)構(gòu)的 dwRequestMicroSecPerFrame成員變 量中,也可以通過設(shè)置此變量來改變當(dāng)前設(shè)置值。 下面程序?yàn)樵O(shè)置 CAPTUREPARAMS 結(jié)構(gòu)的實(shí)現(xiàn)代碼: BOOL VideoCapture::SetCapturePara() { 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 26 CAPTUREPARMS CapParms={0}。 = FALSE。 if(!capCaptureSetSetup(m_capwnd,amp。m_bmpinfo,sizeof(m_bmpinfo))。m_bmpinfo,sizeof(m_bmpinfo))。 capCaptureAbort(m_capwnd)。將捕獲窗口連接至捕獲設(shè)備,用 capDriverConnect 函數(shù)來使一個(gè)捕獲窗口與一個(gè)捕獲設(shè)備連接或關(guān)聯(lián)連接上后 ,就可以通過捕獲窗口向捕獲設(shè)備發(fā)送各種消息 ,可以使用函數(shù) capGetDriverDescription 來獲得已安裝的捕獲設(shè)備名稱及版本 ,將其列舉在實(shí)現(xiàn)程序過程中。該結(jié)構(gòu)的內(nèi)容包含了圖片的尺寸、卷軸的當(dāng)前位置、overlay 和 preview 是否已設(shè)置。 //捕獲窗口 BOOL VideoCapture::Initialize() { char devname[128]={0},devversion[128]={0}。 //創(chuàng)建一個(gè) AVICap 捕獲窗口 m_capwnd = capCreateCaptureWindow(Capture,WS_POPUP,0,0,1,1,0,0)。 //得到已安裝的捕獲設(shè)備的 名稱及版本 ret2 = capGetDriverDescription(index,devname,100,devversion,100)。 ret1 amp。 ret3)) { // Device may be open already or it may not have been // closed properly last time. AfxMessageBox(Unable to open Video Capture Device)。 } // Set the capture parameters if(SetCapturePara()==FALSE) { // (\n Setting capture parameters failed)。 視頻捕獲驅(qū)動(dòng) 視頻捕獲必須具有視頻捕獲驅(qū)動(dòng)才能進(jìn)行,其相關(guān)內(nèi)容如下: 視頻捕獲驅(qū)動(dòng)的性能, capDriverGetCap函數(shù)得到當(dāng)前連接視頻驅(qū)動(dòng)的硬件性能,該信息保存在 CAPDRIVERCAPS 結(jié)構(gòu)中;視頻對(duì)話框,每個(gè)視頻驅(qū)動(dòng)能夠提供 4 個(gè)對(duì)話框來控制視頻捕獲和數(shù)字化處理視頻對(duì)話框定義的視頻壓縮率和圖像品質(zhì)局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 29 等。錄音用的一個(gè) CWinThread 對(duì)象CAudioRec 來實(shí)現(xiàn) ,部分實(shí)現(xiàn)代碼: LRESULT CAudioRec::OnStartRecording(WPARAM wp, LPARAM lp) { if(recording) return FALSE。 if(mmReturn!=MMSYSERR_NOERROR ) return FALSE。 //給輸入設(shè)備增加一個(gè)緩存 mmReturn = ::waveInAddBuffer(m_hRecord, rechead[i], sizeof(WAVEHDR))。 } 語音播放 同樣用的一個(gè) CWinThread 對(duì)象 CAudioPlay 來實(shí)現(xiàn),部分實(shí)現(xiàn)代碼: LRESULT CAudioPlay::OnWriteSoundData(WPARAM wParam, LPARAM lParam) { // TRACE(CAudioPlay::OnWriteSoundData\n)。 if(Playing==FALSE) return FALSE。 p=new char [length]。 ZeroMemory(p,length)。 mmResult = ::waveOutPrepareHeader(m_hPlay, lpHdr, sizeof(WAVEHDR))。 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 31 } mmResult = ::waveOutWrite(m_hPlay, lpHdr, sizeof(WAVEHDR))。 } m_Count++。所以提出以幀為單位發(fā)送視頻數(shù)據(jù)流。 圖 視頻傳輸圖 相對(duì)于視頻的傳輸,語音的傳輸就簡(jiǎn)單得多了,在這里建立了兩個(gè)線程來局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 32 處理,先來用一個(gè)語音錄制線程在一個(gè)客戶端錄制語音,再通過用 G729a 對(duì)語音進(jìn)行編碼,然后傳輸?shù)搅硪豢蛻舳耍瑯佑?G729a 對(duì)語音進(jìn)行解碼,然后用一個(gè)語音回放線程將語音播放出來。 總的來說信息發(fā)送與在線用戶列表維護(hù)功能正常,能實(shí)現(xiàn)前期需求分析時(shí)需求的功能。在 Windows XP 下測(cè)試該程序時(shí),文字語音聊天以及在線用戶列表運(yùn)行均為正常,沒有出現(xiàn)任何錯(cuò)誤報(bào)告。取得的主要成果有以下兩點(diǎn) : 1.實(shí)現(xiàn)了通過服務(wù)器中轉(zhuǎn)的文字聊天功能。 本設(shè)計(jì)并不是一個(gè)優(yōu)質(zhì)的軟件,原因如下: 1. 一個(gè)優(yōu)質(zhì)的軟件應(yīng)該在實(shí)際中得到考驗(yàn)和改進(jìn) 。 歸納一下,需要改進(jìn)的主要是以下的幾點(diǎn): 1. 功能上的改進(jìn)。這也是由于自己缺乏經(jīng)驗(yàn)造成的。 通過這次畢業(yè)實(shí)際,我從理論到時(shí)間邁出了堅(jiān)實(shí)的一步。 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 36 致謝 在這近一學(xué)期的畢業(yè)設(shè)計(jì)中,我得到了來自老師和同學(xué)的很多幫助,有了他們的幫助,我才能夠順利的完成畢業(yè)設(shè)計(jì)。程序的編程,調(diào)試程序以及最后的測(cè)試都是在他 們熱心的幫助下完成的。 [2] W. Richard Stevens編著 《 TCP/IP詳解 [M]》 ,北京:機(jī)械工業(yè)出 版社, 2020年, P8。 [6] Thompson, ,前導(dǎo)工作 室譯 ,《 MFC開發(fā)人員參考手冊(cè)》 ,北京 :機(jī)械工業(yè)出版社, 1998年。 [9] Stevens著,范建華譯 ,《 TCP/IP詳解 》 ,北京: 機(jī)械工業(yè)出版社 , 2020年。 [13] 謝希仁,編著《計(jì)算機(jī)網(wǎng)絡(luò) [M]》 ,北京:電子工業(yè)出版社, 2020年。
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1