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-17 16:01本頁(yè)面
  

【正文】 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 25 幀圖像成功的消息,捕捉出錯(cuò)的消息等。如釋放分配的內(nèi)存,斷開(kāi)捕捉窗口與視頻捕捉驅(qū)動(dòng)程序的連接,清除視頻捕捉窗口等。 在 VC++中,采用 VFW 技術(shù),客戶端通過(guò) capSetCallbackOnFrame()注冊(cè)回調(diào)函數(shù),當(dāng)采集卡采集到一幅圖像后,系統(tǒng)就會(huì)自動(dòng)調(diào)用回調(diào)函數(shù),然后再回調(diào)函數(shù)中使用 ICSeqCompressFrame()函數(shù)進(jìn)行壓縮。該客戶端接收完一幀以后,交給 ICDepress()解壓,最后用 SetDIBitsToDevice()將圖像顯示出來(lái)。 設(shè)置捕獲速度,通過(guò)使用 capCaptureGetSetup 宏來(lái)得到當(dāng)前的捕捉速度,將當(dāng)前的捕捉速度保存在 CAPTUREPARAMS結(jié)構(gòu)的 dwRequestMicroSecPerFrame成員變 量中,也可以通過(guò)設(shè)置此變量來(lái)改變當(dāng)前設(shè)置值。 捕獲的時(shí)間限制,用 CAPTUREPARAMS 結(jié)構(gòu)中的 fLimitEnabled 表示捕獲是否有時(shí)間的限制, wTimeLimit 用來(lái)設(shè)置指示捕獲最大的持續(xù)時(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}。CapParms,sizeof(CapParms))。 = FALSE。 = FALSE。 if(!capCaptureSetSetup(m_capwnd,amp。 return FALSE。m_bmpinfo,sizeof(m_bmpinfo))。 =IMAGE_HEIGHT。m_bmpinfo,sizeof(m_bmpinfo))。 return ret。 capCaptureAbort(m_capwnd)。 return TRUE。將捕獲窗口連接至捕獲設(shè)備,用 capDriverConnect 函數(shù)來(lái)使一個(gè)捕獲窗口與一個(gè)捕獲設(shè)備連接或關(guān)聯(lián)連接上后 ,就可以通過(guò)捕獲窗口向捕獲設(shè)備發(fā)送各種消息 ,可以使用函數(shù) capGetDriverDescription 來(lái)獲得已安裝的捕獲設(shè)備名稱及版本 ,將其列舉在實(shí)現(xiàn)程序過(guò)程中。如果斷開(kāi)捕獲窗口與捕獲設(shè)備的連接用 capDriverDisconnect。該結(jié)構(gòu)的內(nèi)容包含了圖片的尺寸、卷軸的當(dāng)前位置、overlay 和 preview 是否已設(shè)置。而捕獲窗口尺寸的改變并不影響實(shí)際的捕獲視頻流的尺寸。 //捕獲窗口 BOOL VideoCapture::Initialize() { char devname[128]={0},devversion[128]={0}。 BOOL ret = TRUE, ret1 = TRUE, ret2 = TRUE, ret3 = TRUE。 //創(chuàng)建一個(gè) AVICap 捕獲窗口 m_capwnd = capCreateCaptureWindow(Capture,WS_POPUP,0,0,1,1,0,0)。 } //connect callback functions ret = capSetUserData(m_capwnd,this)。 //得到已安裝的捕獲設(shè)備的 名稱及版本 ret2 = capGetDriverDescription(index,devname,100,devversion,100)。 if(!(ret amp。 ret1 amp。 ret2 amp。 ret3)) { // Device may be open already or it may not have been // closed properly last time. AfxMessageBox(Unable to open Video Capture Device)。 m_capwnd=NULL。 } // Set the capture parameters if(SetCapturePara()==FALSE) { // (\n Setting capture parameters failed)。 //使捕獲窗口與一個(gè)捕獲設(shè)備斷開(kāi) return FALSE。 視頻捕獲驅(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ì)話框來(lái)控制視頻捕獲和數(shù)字化處理視頻對(duì)話框定義的視頻壓縮率和圖像品質(zhì)局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 29 等。這個(gè)四個(gè)對(duì)話框分別為: Video Source對(duì)話框用于控制選擇視頻來(lái)源( capDlgVideoSource); Video Format 對(duì)話框定義視頻幀的尺寸和精度,以及視頻捕獲卡的壓縮設(shè)置 (capDlgVideoFormat);Video Display 對(duì)話框控制在視頻捕獲期間相關(guān)顯示器上的顯示(capDlgVideoDisplay); Video Compression 對(duì)話框控制壓縮和圖像品質(zhì)(caoDlgVideoCompression)。錄音用的一個(gè) CWinThread 對(duì)象CAudioRec 來(lái)實(shí)現(xiàn) ,部分實(shí)現(xiàn)代碼: LRESULT CAudioRec::OnStartRecording(WPARAM wp, LPARAM lp) { if(recording) return FALSE。m_hRecord, WAVE_MAPPER, amp。 if(mmReturn!=MMSYSERR_NOERROR ) return FALSE。 i MAXRECBUFFER 。 //給輸入設(shè)備增加一個(gè)緩存 mmReturn = ::waveInAddBuffer(m_hRecord, rechead[i], sizeof(WAVEHDR))。 //開(kāi)始錄音 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 30 if(mmReturn==MMSYSERR_NOERROR ) recording=TRUE。 } 語(yǔ)音播放 同樣用的一個(gè) CWinThread 對(duì)象 CAudioPlay 來(lái)實(shí)現(xiàn),部分實(shí)現(xiàn)代碼: LRESULT CAudioPlay::OnWriteSoundData(WPARAM wParam, LPARAM lParam) { // TRACE(CAudioPlay::OnWriteSoundData\n)。 char *p=NULL。 if(Playing==FALSE) return FALSE。 WAVEHDR *lpHdr=new WAVEHDR。 p=new char [length]。 return FALSE。 ZeroMemory(p,length)。 lpHdrlpData=p。 mmResult = ::waveOutPrepareHeader(m_hPlay, lpHdr, sizeof(WAVEHDR))。delete p。 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 31 } mmResult = ::waveOutWrite(m_hPlay, lpHdr, sizeof(WAVEHDR))。delete p。 } m_Count++。 視音頻的傳輸 視頻采集采用 AVICap 從視頻采集卡捕獲視頻圖像,得到的是位圖 形 式的視頻幀,然后用 Divx 編碼器進(jìn)行壓縮,壓縮以后形成以幀為格式的 Mpeg4 流。所以提出以幀為單位發(fā)送視頻數(shù)據(jù)流。完整的一幀由 5個(gè)字段組成,各個(gè)字段的意義如下:幀開(kāi)始標(biāo)志 : 標(biāo)志著一幀地開(kāi)始,占用 4 個(gè)字節(jié)的空間 ; 幀大小 : 表示整個(gè)幀的大小,包括 5 個(gè)字段的大小,占用 4個(gè)字節(jié)的空間 ; 幀編號(hào) : 表示幀的順序編號(hào),占用 4 個(gè)字節(jié)的空間 ; 幀類型 : 標(biāo)志此幀是否是關(guān)鍵幀,占用 1個(gè)字節(jié)的空間 ; 幀數(shù)據(jù) : 存放壓縮后一幀的完整數(shù)據(jù) 。 圖 視頻傳輸圖 相對(duì)于視頻的傳輸,語(yǔ)音的傳輸就簡(jiǎn)單得多了,在這里建立了兩個(gè)線程來(lái)局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 32 處理,先來(lái)用一個(gè)語(yǔ)音錄制線程在一個(gè)客戶端錄制語(yǔ)音,再通過(guò)用 G729a 對(duì)語(yǔ)音進(jìn)行編碼,然后傳輸?shù)搅硪豢蛻舳?,同樣?G729a 對(duì)語(yǔ)音進(jìn)行解碼,然后用一個(gè)語(yǔ)音回放線程將語(yǔ)音播放出來(lái)。 服務(wù)器端維護(hù)的在線用戶信息正常,客戶端接收到的在線用戶信息與服務(wù)器端相同,在有一個(gè)客戶端下線或上線時(shí),可以在一定的時(shí)間內(nèi)得到更新,說(shuō)明服務(wù)器端可以正常維護(hù)在線用戶列表,并將在線用戶列表正常的發(fā)送到客戶端。 總的來(lái)說(shuō)信息發(fā)送與在線用戶列表維護(hù)功能正常,能實(shí)現(xiàn)前期需求分析時(shí)需求的功能。 測(cè)試結(jié)果分析 此程序分別在 Windows XP 和 Windows 7 下運(yùn)行過(guò),由于 Visual C++ 在Windows 7 里并不兼容,所以在 Windows 7 運(yùn)行時(shí),他會(huì)提示與系統(tǒng)不兼容等提示。在 Windows XP 下測(cè)試該程序時(shí),文字語(yǔ)音聊天以及在線用戶列表運(yùn)行均為正常,沒(méi)有出現(xiàn)任何錯(cuò)誤報(bào)告。 對(duì)于其它的功能,如文件傳輸、多人聊天等 ,可以在此基礎(chǔ)上進(jìn)行改進(jìn),使其更具有良好的實(shí)用性。取得的主要成果有以下兩點(diǎn) : 1.實(shí)現(xiàn)了通過(guò)服務(wù)器中轉(zhuǎn)的文字聊天功能。 本系統(tǒng)可以達(dá)到以下目標(biāo):系統(tǒng)運(yùn)行穩(wěn)定,界面簡(jiǎn)潔大方,易上手操作。 本設(shè)計(jì)并不是一個(gè)優(yōu)質(zhì)的軟件,原因如下: 1. 一個(gè)優(yōu)質(zhì)的軟件應(yīng)該在實(shí)際中得到考驗(yàn)和改進(jìn) 。 3. 此外,本設(shè)計(jì)的界面比較單一,最好能夠設(shè)計(jì)出美觀大方的界面。 歸納一下,需要改進(jìn)的主要是以下的幾點(diǎn): 1. 功能上的改進(jìn)。 3. 界面的改進(jìn)。這也是由于自己缺乏經(jīng)驗(yàn)造成的。 在編寫(xiě)程序的過(guò)程中,我也遇到了很多的問(wèn)題。 通過(guò)這次畢業(yè)實(shí)際,我從理論到時(shí)間邁出了堅(jiān)實(shí)的一步。想要編寫(xiě)出一個(gè)好的程序,必須要有縝密的思維,謹(jǐn)慎的作風(fēng)和堅(jiān)毅不拔的毅力。 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 36 致謝 在這近一學(xué)期的畢業(yè)設(shè)計(jì)中,我得到了來(lái)自老師和同學(xué)的很多幫助,有了他們的幫助,我才能夠順利的完成畢業(yè)設(shè)計(jì)。在我做畢業(yè)設(shè)計(jì)過(guò)程中,他不斷的指導(dǎo)我學(xué)習(xí)方法,傳授我工作經(jīng)驗(yàn),使我受益匪淺,對(duì)順利完成該設(shè)計(jì)起到了極大的作用。程序的編程,調(diào)試程序以及最后的測(cè)試都是在他 們熱心的幫助下完成的。感謝的是我的指導(dǎo)老師楊老師,沒(méi)有他耐心的督促和和細(xì)致的指導(dǎo),我也不可能很好的完成這次畢業(yè)設(shè)計(jì),我再次衷心地對(duì)楊老師表示感謝。 [2] W. Richard Stevens編著 《 TCP/IP詳解 [M]》 ,北京:機(jī)械工業(yè)出 版社, 2020年, P8。 [4] Microsoft公司 , MSDN Library for Visual Studio 2020 , 2020年。 [6] Thompson, ,前導(dǎo)工作 室譯 ,《 MFC開(kāi)發(fā)人員參考手冊(cè)》 ,北京 :機(jī)械工業(yè)出版社, 1998年。 [8] T [9] Stevens著,范建華譯 ,《 TCP/IP詳解 》 ,北京: 機(jī)械工業(yè)出版社 , 2020年。 [11] 林銳 , 編著 《 軟件工程思想 》 ,西安 :西安電子科技大學(xué)出版社 ,2020年。 [13] 謝希仁,編著《計(jì)算機(jī)網(wǎng)絡(luò) [M]》 ,北京:電子工業(yè)出版社, 2020年。 [15] 陳堅(jiān),陳偉,編著《 Visual C++ 網(wǎng)絡(luò)高級(jí)編程 [M]》 ,北京:人民郵電出版社, 2020 年。
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1