版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PAGE PAGE 51更多相關(guān)參考論文設(shè)計(jì)文檔資源請(qǐng)?jiān)L問(wèn)/lzj781219本參考設(shè)計(jì)材料,包含項(xiàng)目源代碼,設(shè)計(jì)說(shuō)明書、任務(wù)書、報(bào)告書以及文獻(xiàn)參考翻譯等,完整的設(shè)計(jì)文件及源代碼,資料請(qǐng)聯(lián)系68661508。索要或訪問(wèn)本參考設(shè)計(jì)材料,包含項(xiàng)目源代碼,設(shè)計(jì)說(shuō)明書、任務(wù)書、報(bào)告書以及文獻(xiàn)參考翻譯等,完整的設(shè)計(jì)文件及源代碼,資料請(qǐng)聯(lián)系68661508。索要或訪問(wèn) 農(nóng)業(yè)工程學(xué)院畢 業(yè) 設(shè) 計(jì)基于DirectShow的視頻監(jiān)控系統(tǒng)設(shè)計(jì)分析姓 名 院(系) 信息學(xué)院專業(yè)班級(jí) 信息管理與信息系統(tǒng)042班學(xué) 號(hào) 指導(dǎo)教師 職 稱 (碩士)論文答辯日期 2004年4月19日 農(nóng)業(yè)工程學(xué)院教務(wù)處制學(xué)生承諾書本人承
2、諾所呈交的畢業(yè)論文是嚴(yán)格按照學(xué)校和學(xué)院有關(guān)規(guī)定完成的;論文的內(nèi)容都是自己的勞動(dòng)成果,沒(méi)有請(qǐng)人代筆;本人在畢業(yè)論文中引用他人的觀點(diǎn)和參考資料均加以注釋和說(shuō)明。 承諾人: 摘要近年來(lái),隨著計(jì)算機(jī)網(wǎng)絡(luò),多媒體技術(shù)的快速發(fā)展,傳統(tǒng)的視頻監(jiān)控系統(tǒng)正在向著網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的方向發(fā)展。本文闡述了基于DirectShow視頻監(jiān)控系統(tǒng)的分析、設(shè)計(jì)與實(shí)現(xiàn),重點(diǎn)討論了以DirectShow技術(shù)來(lái)實(shí)現(xiàn)的,在C/S(Client/Server)模式下實(shí)時(shí)傳輸并播放視頻的局域網(wǎng)視頻監(jiān)控系統(tǒng)。本文從以下方面進(jìn)行論述:(1)簡(jiǎn)單介紹了視頻監(jiān)控技術(shù)發(fā)展的概況與目前的形勢(shì)。 (2)就系統(tǒng)的開發(fā)環(huán)境和涉及的關(guān)鍵技術(shù)進(jìn)行了探討并提出
3、了解決方案。(3)詳細(xì)闡述了系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。首先闡述了基于C/S模式的服務(wù)端、客戶端的設(shè)計(jì)構(gòu)架;通過(guò)講述COM組件技術(shù)作為應(yīng)用DirectShow視頻技術(shù)開發(fā)應(yīng)用程序的基礎(chǔ),最后引出DirectShow視頻技術(shù)的工作原理和編程實(shí)現(xiàn)。關(guān)鍵詞:COM組件DirectShow多線程技術(shù)TCP/UDP協(xié)議目錄 TOC o 1-3 h z u HYPERLINK l _Toc195606825 1緒論 PAGEREF _Toc195606825 h 1 HYPERLINK l _Toc195606826 1.1視頻監(jiān)控系統(tǒng)的國(guó)內(nèi)外現(xiàn)狀 PAGEREF _Toc195606826 h 1 HYPERLI
4、NK l _Toc195606827 1.2本論文的研究背景與實(shí)際意義 PAGEREF _Toc195606827 h 1 HYPERLINK l _Toc195606828 1.3視頻監(jiān)控的發(fā)展歷程 PAGEREF _Toc195606828 h 2 HYPERLINK l _Toc195606829 1.4視頻監(jiān)控系統(tǒng)的應(yīng)用 PAGEREF _Toc195606829 h 4 HYPERLINK l _Toc195606830 1.5論文主要研究?jī)?nèi)容 PAGEREF _Toc195606830 h 5 HYPERLINK l _Toc195606831 2開發(fā)環(huán)境簡(jiǎn)介 PAGEREF _T
5、oc195606831 h 5 HYPERLINK l _Toc195606832 2.1開發(fā)平臺(tái)及工具的選擇 PAGEREF _Toc195606832 h 5 HYPERLINK l _Toc195606833 2.2面向?qū)ο蟮木幊趟枷?PAGEREF _Toc195606833 h 6 HYPERLINK l _Toc195606834 2.3多線程技術(shù) PAGEREF _Toc195606834 h 7 HYPERLINK l _Toc195606835 3開發(fā)實(shí)現(xiàn)系統(tǒng)的技術(shù) PAGEREF _Toc195606835 h 7 HYPERLINK l _Toc195606836 3.1
6、WinSock編程機(jī)制 PAGEREF _Toc195606836 h 7 HYPERLINK l _Toc195606837 3.1.1基于TCP協(xié)議的WinSock編程 PAGEREF _Toc195606837 h 8 HYPERLINK l _Toc195606838 3.1.2基于UDP協(xié)議的WinSock編程 PAGEREF _Toc195606838 h 10 HYPERLINK l _Toc195606839 3.2COM成組件技術(shù)與DirectShow視頻技術(shù) PAGEREF _Toc195606839 h 11 HYPERLINK l _Toc195606840 3.2.1
7、COM組件技術(shù) PAGEREF _Toc195606840 h 11 HYPERLINK l _Toc195606841 3.2.2DirectShow視頻技術(shù) PAGEREF _Toc195606841 h 14 HYPERLINK l _Toc195606842 4系統(tǒng)構(gòu)成與功能模塊設(shè)計(jì) PAGEREF _Toc195606842 h 17 HYPERLINK l _Toc195606843 4.1系統(tǒng)架構(gòu)與功能設(shè)計(jì) PAGEREF _Toc195606843 h 17 HYPERLINK l _Toc195606844 4.1.1服務(wù)端架構(gòu)與功能設(shè)計(jì) PAGEREF _Toc195606
8、844 h 18 HYPERLINK l _Toc195606845 4.1.2客戶端架構(gòu)與功能設(shè)計(jì) PAGEREF _Toc195606845 h 19 HYPERLINK l _Toc195606846 4.2網(wǎng)絡(luò)傳輸架構(gòu) PAGEREF _Toc195606846 h 19 HYPERLINK l _Toc195606847 4.3系統(tǒng)通信模塊設(shè)計(jì)原理 PAGEREF _Toc195606847 h 20 HYPERLINK l _Toc195606848 4.3.1 控制信道設(shè)計(jì)原理 PAGEREF _Toc195606848 h 20 HYPERLINK l _Toc19560684
9、9 4.3.2數(shù)據(jù)信道設(shè)計(jì)原理 PAGEREF _Toc195606849 h 21 HYPERLINK l _Toc195606850 5系統(tǒng)終端軟件設(shè)計(jì)與實(shí)現(xiàn) PAGEREF _Toc195606850 h 22 HYPERLINK l _Toc195606851 5.1系統(tǒng)的類層次結(jié)構(gòu) PAGEREF _Toc195606851 h 22 HYPERLINK l _Toc195606852 5.2系統(tǒng)的實(shí)現(xiàn)原理 PAGEREF _Toc195606852 h 26 HYPERLINK l _Toc195606853 5.3服務(wù)端軟件的設(shè)計(jì)與實(shí)現(xiàn) PAGEREF _Toc195606853
10、 h 28 HYPERLINK l _Toc195606854 5.3.1基于DirectShow視頻采集模塊設(shè)計(jì)與實(shí)現(xiàn) PAGEREF _Toc195606854 h 28 HYPERLINK l _Toc195606855 5.3.2角色控制的實(shí)現(xiàn) PAGEREF _Toc195606855 h 32 HYPERLINK l _Toc195606856 5.3.3服務(wù)端與客戶端之間通訊模塊的實(shí)現(xiàn) PAGEREF _Toc195606856 h 33 HYPERLINK l _Toc195606857 5.3.4開發(fā)網(wǎng)絡(luò)發(fā)送Filter PAGEREF _Toc195606857 h 35
11、HYPERLINK l _Toc195606858 5.3.5開發(fā)網(wǎng)絡(luò)接收Filter PAGEREF _Toc195606858 h 36 HYPERLINK l _Toc195606859 5.4客戶端軟件的設(shè)計(jì)與實(shí)現(xiàn) PAGEREF _Toc195606859 h 36 HYPERLINK l _Toc195606860 6系統(tǒng)實(shí)驗(yàn)測(cè)試與總結(jié) PAGEREF _Toc195606860 h 38 HYPERLINK l _Toc195606861 6.1系統(tǒng)實(shí)驗(yàn)測(cè)試 PAGEREF _Toc195606861 h 38 HYPERLINK l _Toc195606862 6.2總結(jié)與展望
12、 PAGEREF _Toc195606862 h 45 HYPERLINK l _Toc195606863 7結(jié)束語(yǔ) PAGEREF _Toc195606863 h 46 HYPERLINK l _Toc195606864 參考文獻(xiàn) PAGEREF _Toc195606864 h 47 HYPERLINK l _Toc195606865 英文摘要 PAGEREF _Toc195606865 h 48 HYPERLINK l _Toc195606866 致謝 PAGEREF _Toc195606866 h 49 HYPERLINK l _Toc195606867 仲愷農(nóng)業(yè)工程學(xué)院畢業(yè)設(shè)計(jì)成績(jī)?cè)u(píng)定
13、表 PAGEREF _Toc195606867 h 50圖 目 錄 TOC h z t 標(biāo)題4 c HYPERLINK l _Toc196022384 圖1DVR系統(tǒng)結(jié)構(gòu)圖 PAGEREF _Toc196022384 h 3 HYPERLINK l _Toc196022385 圖2應(yīng)用程序和WinSock的關(guān)系圖 PAGEREF _Toc196022385 h 8 HYPERLINK l _Toc196022386 圖3TCP客戶端與TCP服務(wù)端進(jìn)行連接的步驟 PAGEREF _Toc196022386 h 9 HYPERLINK l _Toc196022387 圖4數(shù)據(jù)報(bào)套接字應(yīng)用程序時(shí)序圖
14、 PAGEREF _Toc196022387 h 11 HYPERLINK l _Toc196022388 圖5接口、對(duì)象和類廠的圖例 PAGEREF _Toc196022388 h 11 HYPERLINK l _Toc196022389 圖6C+代碼表示COM組件 PAGEREF _Toc196022389 h 12 HYPERLINK l _Toc196022390 圖7MyObject組件對(duì)象示意圖 PAGEREF _Toc196022390 h 12 HYPERLINK l _Toc196022391 圖8接口IUnknow的3個(gè)函數(shù) PAGEREF _Toc196022391 h
15、13 HYPERLINK l _Toc196022392 圖9類廠與COM組件對(duì)象的關(guān)系 PAGEREF _Toc196022392 h 13 HYPERLINK l _Toc196022393 圖10COM對(duì)象創(chuàng)建過(guò)程示意圖 PAGEREF _Toc196022393 h 14 HYPERLINK l _Toc196022394 圖113種Filter類型 PAGEREF _Toc196022394 h 15 HYPERLINK l _Toc196022395 圖12DirectShow系統(tǒng)(源自DirectX SDK9.0) PAGEREF _Toc196022395 h 16 HYPER
16、LINK l _Toc196022396 圖13開發(fā)DirectShow應(yīng)用程序過(guò)程(源自DirectX SDK9.0) PAGEREF _Toc196022396 h 17 HYPERLINK l _Toc196022397 圖14系統(tǒng)總體架構(gòu) PAGEREF _Toc196022397 h 17 HYPERLINK l _Toc196022398 圖15系統(tǒng)服務(wù)端軟件結(jié)構(gòu) PAGEREF _Toc196022398 h 18 HYPERLINK l _Toc196022399 圖16服務(wù)端功能模塊 PAGEREF _Toc196022399 h 19 HYPERLINK l _Toc196
17、022400 圖17客戶端功能模塊 PAGEREF _Toc196022400 h 19 HYPERLINK l _Toc196022401 圖18控制信道設(shè)計(jì)原理 PAGEREF _Toc196022401 h 21 HYPERLINK l _Toc196022402 圖19數(shù)據(jù)信道設(shè)計(jì)原理 PAGEREF _Toc196022402 h 21 HYPERLINK l _Toc196022403 圖20系統(tǒng)的類層次結(jié)構(gòu) PAGEREF _Toc196022403 h 23 HYPERLINK l _Toc196022404 圖21系統(tǒng)的類繼承結(jié)構(gòu) PAGEREF _Toc196022404
18、h 24 HYPERLINK l _Toc196022405 圖22構(gòu)建發(fā)送和接收視頻數(shù)據(jù)的FilterGraph PAGEREF _Toc196022405 h 26 HYPERLINK l _Toc196022406 圖23AVMontitor程序的交互流程 PAGEREF _Toc196022406 h 27 HYPERLINK l _Toc196022407 圖24視頻采集卡在GraphEdit下的示意圖 PAGEREF _Toc196022407 h 28 HYPERLINK l _Toc196022408 圖25視頻采集模塊軟件流程圖 PAGEREF _Toc196022408 h
19、 29 HYPERLINK l _Toc196022409 圖26設(shè)備枚舉流程圖(源自DirectX SDK幫助文檔 PAGEREF _Toc196022409 h 29 HYPERLINK l _Toc196022410 圖27視頻采集預(yù)覽的數(shù)據(jù)流向圖 PAGEREF _Toc196022410 h 31 HYPERLINK l _Toc196022411 圖28視頻采集預(yù)覽圖 PAGEREF _Toc196022411 h 32 HYPERLINK l _Toc196022412 圖28服務(wù)端通信模塊結(jié)構(gòu)圖 PAGEREF _Toc196022412 h 34 HYPERLINK l _T
20、oc196022413 圖29選擇作為客戶端的情況 PAGEREF _Toc196022413 h 37 HYPERLINK l _Toc196022414 圖30向服務(wù)端發(fā)出連接請(qǐng) PAGEREF _Toc196022414 h 38 HYPERLINK l _Toc196022415 圖31服務(wù)端選擇角色窗口 PAGEREF _Toc196022415 h 39 HYPERLINK l _Toc196022416 圖32服務(wù)端預(yù)覽視頻窗口 PAGEREF _Toc196022416 h 40 HYPERLINK l _Toc196022417 圖33服務(wù)端等待接收來(lái)自客戶端的視頻數(shù)據(jù) PA
21、GEREF _Toc196022417 h 41 HYPERLINK l _Toc196022418 圖34服務(wù)端接收并實(shí)時(shí)播放視頻數(shù)據(jù) PAGEREF _Toc196022418 h 42 HYPERLINK l _Toc196022419 圖35客戶端選擇角色窗口 PAGEREF _Toc196022419 h 43 HYPERLINK l _Toc196022420 圖36客戶端預(yù)覽視頻窗口 PAGEREF _Toc196022420 h 43 HYPERLINK l _Toc196022421 圖37客戶端向服務(wù)端發(fā)出連接請(qǐng)求 PAGEREF _Toc196022421 h 44 HY
22、PERLINK l _Toc196022422 圖38客戶端等待接收來(lái)自服務(wù)端的視頻數(shù)據(jù) PAGEREF _Toc196022422 h 44 HYPERLINK l _Toc196022423 圖39客戶端接收并實(shí)時(shí)播放來(lái)自服務(wù)端的視頻數(shù)據(jù) PAGEREF _Toc196022423 h 451緒論1.1視頻監(jiān)控系統(tǒng)的國(guó)內(nèi)外現(xiàn)狀 由于歷史及觀念上的原因,我國(guó)大陸的安防產(chǎn)業(yè)較發(fā)達(dá)國(guó)家晚二三十年。但是近年來(lái),隨著我國(guó)經(jīng)濟(jì)的快速發(fā)展、人民物質(zhì)生活水平的提高和消費(fèi)觀念的改變,安防從過(guò)去提倡人防發(fā)展為以技防為主、人防為輔,并成為現(xiàn)代管理的重要手段。在2000年11月的安防產(chǎn)品展示會(huì)上,來(lái)自國(guó)內(nèi)外的上百
23、家廠商展出了各種產(chǎn)品和系統(tǒng)。據(jù)權(quán)威部門統(tǒng)計(jì),1998年全國(guó)監(jiān)控系統(tǒng)的市場(chǎng)總額為650億元,近年來(lái)一直以每年15%至30%的速度快速增長(zhǎng),我國(guó)的監(jiān)控行業(yè)正面臨著良好的發(fā)展機(jī)遇。 監(jiān)控系統(tǒng)的市場(chǎng)可以劃分為兩部分:一部分是前端采集用的通用產(chǎn)品,有鏡頭、CCD攝像機(jī)、云臺(tái)及防護(hù)罩、報(bào)警開關(guān)等;另一部分是后端的控制系統(tǒng),主要包括主機(jī)控制設(shè)備、視頻采集卡、視頻壓縮卡、解碼器、總控設(shè)備等。前端的產(chǎn)品大部分都是通用產(chǎn)品,以美國(guó)、日本和臺(tái)灣產(chǎn)品居多,占據(jù)了市場(chǎng)的大部分份額。相對(duì)而言,后端的控制系統(tǒng)是互相封閉的,各廠家之間的設(shè)備和系統(tǒng)不能互聯(lián),也沒(méi)有通用的工業(yè)標(biāo)準(zhǔn),這部分市場(chǎng)正是視頻監(jiān)控系統(tǒng)要開拓的主要目標(biāo)。視頻
24、監(jiān)控系統(tǒng)不僅符合信息產(chǎn)業(yè)的未來(lái)發(fā)展趨勢(shì),而且代表了監(jiān)控行業(yè)的未來(lái)發(fā)展方向,蘊(yùn)藏著巨大的商機(jī)和經(jīng)濟(jì)效益,成為目前信息產(chǎn)業(yè)中頗受關(guān)注的數(shù)字化產(chǎn)品。特別是近年來(lái),隨著技術(shù)的進(jìn)步和社會(huì)經(jīng)濟(jì)的不斷發(fā)展,客觀上對(duì)監(jiān)控系統(tǒng)的準(zhǔn)確性、有效性和方便性提出了更高要求。具體地講,主要體現(xiàn)在以下兩個(gè)方面:一是需要實(shí)施視頻監(jiān)控的范圍更加廣闊,由傳統(tǒng)的安防監(jiān)控向管理監(jiān)控和生產(chǎn)經(jīng)營(yíng)監(jiān)控發(fā)展,而且對(duì)同一套系統(tǒng)的覆蓋面和實(shí)施距離也提出了更高的要求,通俗地說(shuō)就是要達(dá)到點(diǎn)多面廣。二是要求監(jiān)控系統(tǒng)與管理信息系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)結(jié)合,實(shí)現(xiàn)對(duì)大量視頻數(shù)據(jù)的壓縮存儲(chǔ)、傳輸和自動(dòng)處理,從而達(dá)到資源共享,為各級(jí)管理人員和決策者提供方便、快捷、有效的
25、服務(wù)。由于視頻監(jiān)控產(chǎn)品潛在的巨大市場(chǎng)和可觀經(jīng)濟(jì)效益,我國(guó)有數(shù)百家公司以及部分科研機(jī)構(gòu)參與了該行業(yè)的開發(fā)和銷售。但總的來(lái)講,由于起步晚,技術(shù)較落后,使該行業(yè)中的我國(guó)企業(yè)既有廣闊的發(fā)展空間,又面臨著來(lái)自國(guó)外大企業(yè)的強(qiáng)大挑戰(zhàn)。就目前先進(jìn)的數(shù)字視頻監(jiān)控系統(tǒng)而言,在視頻壓縮、分析、傳輸、存儲(chǔ)和分級(jí)控制等方面仍有待提高和完善1。1.2本論文的研究背景與實(shí)際意義伴隨電子集成技術(shù)、計(jì)算機(jī)技術(shù)、通信網(wǎng)絡(luò)技術(shù)及圖像視頻壓縮技術(shù)的迅速發(fā)展和相互結(jié)合應(yīng)用,數(shù)字化、網(wǎng)絡(luò)化的視頻監(jiān)控系統(tǒng)已逐漸成為了市場(chǎng)的主流。網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)是在成熟的數(shù)字視頻監(jiān)控技術(shù)基礎(chǔ)上,結(jié)合實(shí)際可行的網(wǎng)絡(luò)通信方式,滿足本地及異地遠(yuǎn)程視頻監(jiān)控的需求。
26、然而網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的成本較高,現(xiàn)大多在高端市場(chǎng)里應(yīng)用,對(duì)于中小企業(yè)及個(gè)人來(lái)說(shuō),購(gòu)建網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)是一種高額負(fù)擔(dān)。為滿足中小企業(yè)及個(gè)人對(duì)網(wǎng)絡(luò)視頻監(jiān)控的需求,可考慮開發(fā)一種軟件化的基于Windows平臺(tái)的通用型的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。本論文出于研究探討的目的,開發(fā)實(shí)現(xiàn)Windows平臺(tái)下通用型的C/S模式局域網(wǎng)視頻監(jiān)控系統(tǒng),在局域網(wǎng)內(nèi)可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的視頻監(jiān)控。該系統(tǒng)可實(shí)現(xiàn)對(duì)視頻的實(shí)時(shí)接收和播放,為未來(lái)實(shí)現(xiàn)局域網(wǎng)中的多人視頻監(jiān)控和遠(yuǎn)程網(wǎng)絡(luò)視頻監(jiān)控打下了技術(shù)基礎(chǔ),具有實(shí)用推廣的價(jià)值。1.3視頻監(jiān)控的發(fā)展歷程視頻監(jiān)控系統(tǒng)因其直觀、信息內(nèi)容豐富、操作控制簡(jiǎn)單方便等優(yōu)點(diǎn)而廣泛應(yīng)用于眾多領(lǐng)域2,比如交通治安、教
27、育、醫(yī)院、公共場(chǎng)所、物業(yè)管理、酒店等等?,F(xiàn)今互聯(lián)網(wǎng)的迅猛發(fā)展,網(wǎng)絡(luò)帶寬的不斷提高,通信技術(shù)的長(zhǎng)足進(jìn)步,使視頻監(jiān)控系統(tǒng)通過(guò)不同網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)視頻信息的有效地交互成為可能。視頻監(jiān)控雖是三十年左右發(fā)展歷史的行業(yè)技術(shù),但與移動(dòng)通信技術(shù)一樣正經(jīng)歷著第三代應(yīng)用發(fā)展階段。當(dāng)前視頻監(jiān)控技術(shù)獲得良好發(fā)展的機(jī)遇,不少科研院校和企業(yè)正對(duì)無(wú)線通信視頻監(jiān)控技術(shù)的進(jìn)行應(yīng)用研究開發(fā)工作并取得不錯(cuò)效果3,相信隨著IPv6技術(shù)的應(yīng)用發(fā)展,真正的普及化的全數(shù)字化視頻監(jiān)控不再是期待。(1)第一代視頻監(jiān)控系統(tǒng)- CCTV系統(tǒng)90年代以前,傳統(tǒng)的本地閉路電視監(jiān)控系統(tǒng)(CCTV: Closed Circuit TV)稱為第一代視頻監(jiān)控系統(tǒng)
28、,主要由模擬設(shè)備如攝像機(jī)、監(jiān)視器、錄像機(jī)等組成。CCTV系統(tǒng)的工作原理是:前端圖像采集部分的模擬攝像機(jī)將視頻模擬信號(hào)通過(guò)同軸電纜直接傳給系統(tǒng)中心部分的監(jiān)視器,并使用錄像機(jī)進(jìn)行長(zhǎng)時(shí)間的磁帶錄制。CCTV系統(tǒng)的主要缺點(diǎn)是: 視頻模擬信號(hào)在同軸電纜傳輸時(shí)受其傳輸距離限制影響,組網(wǎng)不靈活不方便;需進(jìn)行聯(lián)網(wǎng)和遠(yuǎn)程傳輸時(shí),可以采用光端機(jī)加光纖進(jìn)行點(diǎn)對(duì)點(diǎn)傳輸,但成本可觀。采用磁帶方式進(jìn)行錄制圖像必然損耗大量的磁帶,查詢讀取過(guò)程十分煩瑣。擴(kuò)展功能差,對(duì)已建好的系統(tǒng)進(jìn)行添加采集點(diǎn)或者新設(shè)備時(shí),往往需要整體修改方案。 (2)第二代視頻監(jiān)控系統(tǒng)-數(shù)字化本地DVR系統(tǒng) CCTV系統(tǒng)技術(shù)現(xiàn)今已經(jīng)非常成熟,應(yīng)用非常廣泛,
29、第二代視頻監(jiān)控系統(tǒng)是CCTV系統(tǒng)原有基礎(chǔ)技術(shù)與計(jì)算機(jī)技術(shù)相結(jié)合的產(chǎn)物。90年代中期,計(jì)算機(jī)處理能力的提高和視頻壓縮技術(shù)的發(fā)展,人們利用計(jì)算機(jī)高速的數(shù)據(jù)處理能力進(jìn)行視頻采集和處理,利用顯示器的高分辨率實(shí)現(xiàn)圖像的多畫面顯示,從而大大提高了圖像質(zhì)量,這種基于PC的多媒體主控臺(tái)系統(tǒng)稱為第二代數(shù)字化本地視頻監(jiān)控系統(tǒng)。因系統(tǒng)是視頻信號(hào)模擬輸入與數(shù)字壓縮、顯示和控制相結(jié)合,核心設(shè)備是數(shù)字設(shè)備,故第二代視頻監(jiān)控系統(tǒng)屬于數(shù)字視頻監(jiān)控系統(tǒng)范疇。圖1DVR系統(tǒng)結(jié)構(gòu)圖目前中低端的數(shù)字視頻監(jiān)控系統(tǒng)主要由DVR( Digital Video Recorder )構(gòu)成,系統(tǒng)結(jié)構(gòu)主要是工控機(jī)+視頻采集卡+系統(tǒng)軟件+應(yīng)用軟件。
30、其優(yōu)點(diǎn)突出4:采用視頻數(shù)字壓縮技術(shù),將采集到的視頻模擬信號(hào)經(jīng)數(shù)字化后存儲(chǔ)在硬盤、光盤等存儲(chǔ)媒介上,存儲(chǔ)方便,省去經(jīng)常更換磁帶的麻煩。因?qū)σ曨l圖像進(jìn)行了數(shù)字化,所以可充分利用計(jì)算機(jī)的快速數(shù)據(jù)處理能力,對(duì)其進(jìn)行壓縮、分析、存儲(chǔ)和顯示。通過(guò)視頻分析,可及時(shí)發(fā)現(xiàn)異常情況并進(jìn)行聯(lián)動(dòng)報(bào)警,從而實(shí)現(xiàn)無(wú)人值守。CCTV系統(tǒng)中,當(dāng)出現(xiàn)問(wèn)題時(shí)需要花大量時(shí)間觀看錄像帶才能找到現(xiàn)場(chǎng)記錄;而在數(shù)字視頻監(jiān)控系統(tǒng)中,利用計(jì)算機(jī)建立的索引,數(shù)分鐘內(nèi)就能找到相應(yīng)的現(xiàn)場(chǎng)記錄,大大提高工作效率。(3)第三代視頻監(jiān)控系統(tǒng)-網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)( NVS )99年以來(lái),接入網(wǎng)技術(shù)的迅速發(fā)展,促使視頻監(jiān)控有了網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控的新需求。而隨著電子
31、集成技術(shù)及嵌入式計(jì)算機(jī)技術(shù)水平的不斷提高,出現(xiàn)了數(shù)字網(wǎng)絡(luò)攝像機(jī)、網(wǎng)絡(luò)視頻服務(wù)等數(shù)字化采集前端,真正的數(shù)字化從此實(shí)。第三代視頻監(jiān)控系統(tǒng)網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)NVS( Network Video System )進(jìn)入人們的視線。網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)以網(wǎng)絡(luò)為依托,以數(shù)字視頻的壓縮、存儲(chǔ)、傳輸以及播放為核心,以智能實(shí)用的圖像分析為特色,引發(fā)了視頻監(jiān)控行業(yè)的技術(shù)革命。網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)與其它視頻監(jiān)控系統(tǒng)比較具有以下特點(diǎn):最簡(jiǎn)單的整個(gè)系統(tǒng)可由服務(wù)端、客戶端兩部份組成。服務(wù)端由網(wǎng)絡(luò)視頻服務(wù)端+攝像機(jī),或是網(wǎng)絡(luò)攝像機(jī)等組成,只要確保好服務(wù)端和客戶端之間的通訊,系統(tǒng)便能迅速投入工作。布控區(qū)域廣闊。服務(wù)端的網(wǎng)絡(luò)視頻服務(wù)端或網(wǎng)
32、絡(luò)攝像機(jī)直接連入網(wǎng)絡(luò),沒(méi)有線纜長(zhǎng)度和信號(hào)衰減的限制。因網(wǎng)絡(luò)解決了地域的限制,故而擴(kuò)展了布控區(qū)域。性能穩(wěn)定可靠,無(wú)需專人管理。服務(wù)端的網(wǎng)絡(luò)視頻服務(wù)端或網(wǎng)絡(luò)攝像機(jī)采用嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng),可直接接入局域網(wǎng)或廣域網(wǎng),遇到問(wèn)題只需更換即可,免去維護(hù)DVR煩瑣,也非常適用于無(wú)人值守的環(huán)境。擴(kuò)充簡(jiǎn)便。當(dāng)需要添加監(jiān)控點(diǎn)時(shí),只需增加電源和網(wǎng)絡(luò)接口的點(diǎn)數(shù)就能輕易實(shí)現(xiàn)原有視頻監(jiān)控系統(tǒng)的擴(kuò)展,不需重新施工布線。1.4視頻監(jiān)控系統(tǒng)的應(yīng)用 近年來(lái),視頻監(jiān)控在各行各業(yè)得到了廣泛的應(yīng)用,生活中有小區(qū)安全監(jiān)控,電訊行業(yè)有機(jī)站監(jiān)控,銀行系統(tǒng)有柜員機(jī)監(jiān)控,林業(yè)部門有火情監(jiān)控,交通方面有違章和流量監(jiān)控等等。從功能上講,視頻監(jiān)控
33、可用于安全防范、信息獲取和指揮調(diào)度等方面。 隨著我國(guó)信息化進(jìn)程的推進(jìn)和人民物質(zhì)生活水平的提高,傳統(tǒng)鐵柵欄式的安全防盜系統(tǒng)的缺陷越來(lái)越明顯,既不美觀,在發(fā)生事故時(shí)也不便于有效處理。目前在建造智能大廈和選購(gòu)住房時(shí),安全防范系統(tǒng)越來(lái)越受到人們的重視?,F(xiàn)在,只需在現(xiàn)有的家庭微機(jī)上增加USB攝像頭和相應(yīng)的軟件系統(tǒng),就可實(shí)現(xiàn)功能強(qiáng)、價(jià)格低、性能可靠的數(shù)字化家庭監(jiān)控系統(tǒng)。系統(tǒng)自動(dòng)檢測(cè)在家中采集到的圖像,當(dāng)發(fā)現(xiàn)異常時(shí),通過(guò)Internet和短消息中心向用戶指定的電話號(hào)碼發(fā)送短消息,并將現(xiàn)場(chǎng)圖像以E-mail方式發(fā)送給用戶。用戶收到短消息后通過(guò)檢查E-mail就可對(duì)家中情況有清楚的了解。此外,用戶出差在外時(shí),也
34、可以遠(yuǎn)程登錄到家中計(jì)算機(jī),觀看家中安全情況或家人的生活健康狀況。 我國(guó)有上萬(wàn)公里的海岸線和邊境線,與多個(gè)國(guó)家毗鄰。準(zhǔn)確及時(shí)地掌握邊防區(qū)域的軍事情況,對(duì)于有效保衛(wèi)祖國(guó)的領(lǐng)海和領(lǐng)土,在未來(lái)戰(zhàn)爭(zhēng)中作出快速反應(yīng)、掌握戰(zhàn)爭(zhēng)主動(dòng)權(quán)有著極其重要的意義。建立邊防遠(yuǎn)程視頻監(jiān)控系統(tǒng),對(duì)關(guān)鍵口岸、哨所和敏感地區(qū)實(shí)施監(jiān)控,就能使我軍情報(bào)部門直觀、及時(shí)地監(jiān)視邊防前線的當(dāng)面情況,提高情報(bào)獲取的實(shí)時(shí)性和綜合處理能力,也能有效防止偷渡、出逃、走私、販毒等非法行為。 毋庸置疑,在2008年的北京奧運(yùn)會(huì)中,數(shù)字視頻監(jiān)控系統(tǒng)也將大放異彩,它將廣泛用于智能化的交通調(diào)度、現(xiàn)代化的體育場(chǎng)館和優(yōu)雅舒適的奧運(yùn)村,為參加奧運(yùn)會(huì)的各國(guó)朋友在北京
35、的比賽、游覽提供安全舒適的服務(wù)。1.5論文主要研究?jī)?nèi)容本文的研究開發(fā)思路是:縱觀Windows平臺(tái)下的通用型C/S模式的局域網(wǎng)視頻監(jiān)控系統(tǒng)實(shí)現(xiàn)的關(guān)鍵點(diǎn)以及實(shí)際的實(shí)驗(yàn)條件情況,將上述系統(tǒng)的開發(fā)實(shí)現(xiàn)重點(diǎn)放在服務(wù)端與客戶端之間的實(shí)時(shí)視頻通信模塊上。要開發(fā)實(shí)現(xiàn)軟件化的Windows平臺(tái)下的通用型的C/S模式局域網(wǎng)視頻監(jiān)控系統(tǒng)需熟悉了解和掌握的基礎(chǔ)理論及開發(fā)應(yīng)用技術(shù)比較多,就系統(tǒng)的核心模塊須掌握的綜合應(yīng)用技術(shù)有:COM組件技術(shù)、DirectShow視頻技術(shù)、TCP/UDP網(wǎng)絡(luò)協(xié)議,Socket編程,多線程技術(shù)等等。本文對(duì)該系統(tǒng)核心部分的實(shí)際開發(fā)過(guò)程是:(1)查閱視頻監(jiān)控技術(shù)的發(fā)展歷程的資料。(2)結(jié)合視
36、頻監(jiān)控實(shí)際應(yīng)用的需求進(jìn)行可行性分析,研究學(xué)習(xí)COM組件技術(shù)。(3)結(jié)合視頻傳輸?shù)奶攸c(diǎn),研究TCP/UDP這兩種網(wǎng)絡(luò)協(xié)議,實(shí)現(xiàn)服務(wù)端與客戶端以UDP為基礎(chǔ)的控制信息交互,以及視頻數(shù)據(jù)的TCP傳接。(4)深入研究微軟的DirectShow視頻技術(shù),以Socket編程,多線程技術(shù)來(lái)實(shí)現(xiàn)服務(wù)端與客戶端之間的視頻的實(shí)時(shí)接收和播放。2開發(fā)環(huán)境簡(jiǎn)介2.1開發(fā)平臺(tái)及工具的選擇 對(duì)于整個(gè)局域網(wǎng)視頻監(jiān)控系統(tǒng)來(lái)說(shuō),軟件設(shè)計(jì)的工作是主要的。它要完成的功能多而復(fù)雜。面對(duì)如此龐大的一個(gè)軟件工程,采用正確而又有效的軟件設(shè)計(jì)方法,對(duì)整個(gè)軟件結(jié)構(gòu)進(jìn)行規(guī)劃是系統(tǒng)成功實(shí)現(xiàn)的關(guān)鍵。 對(duì)于監(jiān)控系統(tǒng)軟件的開發(fā)來(lái)說(shuō)選擇一種友好的圖形用戶界
37、面,且操作簡(jiǎn)單,穩(wěn)定、可靠,安全性較高的操作系統(tǒng)是很重要的。Windows2000操作系統(tǒng)具有好的圖形用戶界面,操作簡(jiǎn)單易用,可利用的資源也極其豐富,這些優(yōu)勢(shì)決定了如果選擇Windows2000的操作系統(tǒng)將會(huì)為監(jiān)控系統(tǒng)軟件的開發(fā)提供一個(gè)相對(duì)堅(jiān)實(shí)、穩(wěn)定的平臺(tái)。軟件開發(fā)工具選擇的原則是:能為我們提供一個(gè)健壯、高速、高效、兼容性好的開發(fā)環(huán)境。考慮到開發(fā)的效率和通用性等因素,經(jīng)過(guò)仔細(xì)衡量考慮,我們選擇了Visual C+ 6.0作為系統(tǒng)的開發(fā)工具。首先C+語(yǔ)言比其他語(yǔ)言功能更豐富,應(yīng)用也更廣泛。其次Visual C+使用很靈活,實(shí)現(xiàn)的功能也更強(qiáng)大,利用它可以最方便的調(diào)用Windows底層功能。最后,V
38、isual C+是真正面向?qū)ο蟮拈_發(fā)工具,且具有強(qiáng)大的MFC類庫(kù)5。2.2面向?qū)ο蟮木幊趟枷?目前Windows 2000應(yīng)用程序的設(shè)計(jì)大多采用面向?qū)ο蟮脑O(shè)計(jì)方法。面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn)是:符合人類的思維習(xí)慣,能自然表現(xiàn)現(xiàn)實(shí)世界的實(shí)體和問(wèn)題;易于開發(fā)復(fù)雜軟件,提高生產(chǎn)效率;易于實(shí)現(xiàn)代碼的重用和維護(hù):容易與他人共享代碼;可以進(jìn)一步細(xì)化己有代碼。 面向?qū)ο蠹夹g(shù)6涉及的概念有以下幾個(gè): (1)對(duì)象。對(duì)象是一個(gè)由屬性和方法組成的集合體。屬性反映對(duì)象的狀態(tài)特征,屬性用數(shù)據(jù)結(jié)構(gòu)來(lái)描述;對(duì)象的方法反映對(duì)象的行為特征,用屬性的操作來(lái)描述。 (2)消息。消息是對(duì)某種對(duì)象處理的說(shuō)明。消息用來(lái)請(qǐng)求對(duì)象執(zhí)行某一種處理或回
39、答某些信息的要求,消息統(tǒng)一了數(shù)據(jù)流和控制流,使數(shù)據(jù)流和控制流采用同一種方法來(lái)實(shí)現(xiàn),消息用消息模式刻畫。對(duì)象的方法描述的是對(duì)消息如何響應(yīng)的方法。面向?qū)ο蟮脑O(shè)計(jì)方法把一切控制結(jié)構(gòu)的功能都通過(guò)對(duì)象及其相互間傳遞消息來(lái)實(shí)現(xiàn)。 (3)類和類層次。類是對(duì)一組對(duì)象的抽象,它將該組對(duì)象所具有的共同特征(包括操作特征和存儲(chǔ)特征,即方法和屬性)集中起來(lái),由該組對(duì)象共享。在系統(tǒng)構(gòu)成上則形成一個(gè)具有特定功能的模塊和提供一種代碼共享的手段。具體來(lái)講,類是由方法和數(shù)據(jù)組成。它是關(guān)于對(duì)象性質(zhì)的描述,包括外部特性和內(nèi)部實(shí)現(xiàn)兩個(gè)方面。類通過(guò)描述消息模式及其相應(yīng)的處理能力來(lái)定義對(duì)象的外部特性,通過(guò)描述內(nèi)部狀態(tài)的表現(xiàn)形式及固有處理
40、能力的實(shí)現(xiàn)來(lái)定義對(duì)象的內(nèi)部實(shí)現(xiàn)。一個(gè)類的上層可以有父類,下層可以有子類,形成一種層次結(jié)構(gòu)。這種層次結(jié)構(gòu)的一個(gè)重要特征是繼承。繼承具有傳遞性,一個(gè)類可繼承層次結(jié)構(gòu)中在其上面的所有類的全部描述。 (4)實(shí)例。實(shí)例是被某一個(gè)特定的類所描述的一個(gè)對(duì)象。每個(gè)對(duì)象都是某一個(gè)類的一個(gè)實(shí)例,而類是對(duì)各個(gè)實(shí)例的相似性的描述。 面向?qū)ο蟮能浖_發(fā)技術(shù)綜合了功能抽象與數(shù)據(jù)抽象,它的消息傳遞機(jī)制與分布式并行程序、多機(jī)系統(tǒng)和網(wǎng)絡(luò)通訊模型相一致。不同對(duì)象間的消息傳遞體現(xiàn)了不同軟件實(shí)體之間的交互與協(xié)作。與傳統(tǒng)的軟件設(shè)計(jì)方法不同,面向?qū)ο筌浖O(shè)計(jì)中的軟件實(shí)體之間是藕合的。此外,面向?qū)ο筌浖O(shè)計(jì)中引入的繼承等機(jī)制,實(shí)現(xiàn)了軟件的
41、可擴(kuò)充性、多態(tài)性,并易于修改,因而這種設(shè)計(jì)是我們實(shí)現(xiàn)本系統(tǒng)軟件模塊化,并使其具有重構(gòu)能力的有效方法。2.3多線程技術(shù) 由于視頻在網(wǎng)絡(luò)中傳輸時(shí)有著較大的數(shù)據(jù)吞吐量,因此接收時(shí)常常會(huì)出現(xiàn)阻塞現(xiàn)象。為了在實(shí)際的視頻傳輸應(yīng)用中避免出現(xiàn)這種情形,提高傳輸?shù)男?,在本論文設(shè)計(jì)中,我們采用了多線程技術(shù)7來(lái)進(jìn)行網(wǎng)絡(luò)編程。線程是進(jìn)程內(nèi)部一個(gè)獨(dú)立的執(zhí)行單元(可以是一個(gè)函數(shù)、一個(gè)活躍的類對(duì)象)。每個(gè)進(jìn)程至少有一線程就是主線程,它是由系統(tǒng)啟動(dòng)應(yīng)用程序后自動(dòng)創(chuàng)建的,用戶根據(jù)需要可以在應(yīng)用程序中創(chuàng)建其他線程。 Windows 2000通過(guò)引入線程和進(jìn)程來(lái)實(shí)現(xiàn)占先任務(wù)。處理器根據(jù)其優(yōu)先級(jí)別的不同不斷地切換執(zhí)行系統(tǒng)中的各個(gè)線
42、程,這種處理的高速度使人產(chǎn)生多個(gè)線程在同時(shí)執(zhí)行的錯(cuò)覺,操作系統(tǒng)不必等待某一個(gè)線程結(jié)束,可主動(dòng)將處理器讓給其他線程。線程轉(zhuǎn)讓CPU處理時(shí)間是被迫的,對(duì)于多線程的調(diào)度程序而言,可防止某一個(gè)線程過(guò)多地占用CPU時(shí)間導(dǎo)致系統(tǒng)效率降低。這些特點(diǎn)正好可以解決視頻監(jiān)控系統(tǒng)實(shí)時(shí)性方面要求較高的問(wèn)題。MFC應(yīng)用程序都有一個(gè)CWinApp派生類,而CWinApp則是線程基類CWmThread的派生類,它的對(duì)象就是啟動(dòng)應(yīng)用程序系統(tǒng)創(chuàng)建進(jìn)程的主執(zhí)行線程。MFC類庫(kù)支持兩種線程類型:用戶界面線程(user-interface thread)和工作線程(worker thread)。前者有一個(gè)消息泵,一般用于處理用戶的輸
43、入和對(duì)用戶生成的事件和消息的響應(yīng),它由類CWinThread派生而來(lái)。而后者一般用于完成不需要用戶輸入的后臺(tái)任務(wù)。如計(jì)算、調(diào)度等工作,它和用戶界面線程不同,它不是從類中派生來(lái)創(chuàng)建,而是一個(gè)實(shí)現(xiàn)工作線程任務(wù)的運(yùn)行控制函數(shù)。在本軟件開發(fā)中,根據(jù)需要?jiǎng)?chuàng)建了多個(gè)工作線程,它們各自完成不同的后臺(tái)任務(wù)。3開發(fā)實(shí)現(xiàn)系統(tǒng)的技術(shù)本章介紹本論文完成的重點(diǎn)任務(wù)所應(yīng)用的關(guān)鍵技術(shù)。首節(jié)介紹Socket的背景與特點(diǎn),接著介紹COM組件技術(shù)的基本原理和編程思想,引出簡(jiǎn)述DirectShow視頻技術(shù)的工作原理和應(yīng)用編程實(shí)現(xiàn)。3.1WinSock編程機(jī)制Socket簡(jiǎn)介: Socket是一種基于TCP/IP的網(wǎng)絡(luò)編程接口,它采
44、用客戶/服務(wù)端通信模式,客戶端和服務(wù)端通過(guò)Socket接口在網(wǎng)絡(luò)上實(shí)現(xiàn)連接和數(shù)據(jù)交換。它提供了一系列系統(tǒng)調(diào)用,使用戶可以方便的使用TCP和UDP等網(wǎng)絡(luò)協(xié)議8實(shí)現(xiàn)通信。 Socket最先是集成在UNIX系統(tǒng)中的,隨著Windows操作系統(tǒng)的廣泛使用,就制定了一套Windows下的TCP/IP網(wǎng)絡(luò)編程接口標(biāo)準(zhǔn),這就是WinSock。它給應(yīng)用程序開發(fā)者提供了一套簡(jiǎn)單的API函數(shù),通過(guò)調(diào)用這些API函數(shù),程序員就能充分的利用Windows消息驅(qū)動(dòng)機(jī)制進(jìn)行網(wǎng)絡(luò)編程。目前,WinSock已被集成到Windows95,Widows98,Windows2000,WindowsNT,WindowsXP中,它已成
45、為Windows操作系統(tǒng)網(wǎng)絡(luò)編程的標(biāo)準(zhǔn)。Windows下的Internet軟件大都是基于WinSock開發(fā)的。WinSock定義并記錄了如何使用API函數(shù)與TCP/IP連接。應(yīng)用程序通過(guò)調(diào)用WinSock的API函數(shù)實(shí)現(xiàn)相互之間的通信,WinSock又利用下層的網(wǎng)絡(luò)通信協(xié)議和操作系統(tǒng)調(diào)用實(shí)現(xiàn)實(shí)際的通信工作。應(yīng)用程序和WinSock之間的關(guān)系如下圖2所示。應(yīng)用程序二應(yīng)用程序一網(wǎng)絡(luò)通訊協(xié)議服務(wù)介面,例如TCP/IP網(wǎng)絡(luò)編程介面,例如WinScok操作系統(tǒng),例如Windows X物質(zhì)傳輸介質(zhì)圖2應(yīng)用程序和WinSock的關(guān)系圖WinSock支持兩種編程模式,一種是基于TCP協(xié)議的數(shù)據(jù)流模式,另一種是
46、基于UDP協(xié)議的數(shù)據(jù)報(bào)模式。3.1.1基于TCP協(xié)議的WinSock編程使用TCP協(xié)議實(shí)現(xiàn)的通信是面向連接的通信。這種通信方式要求通信雙方在通信前必須先建立連接。類似于電話服務(wù)系統(tǒng),每一次完整的通信過(guò)程都要經(jīng)過(guò)建立連接、使用連接、終止連接三個(gè)過(guò)程。它具有確認(rèn)、流量控制和擁塞控制等機(jī)制,可以為用戶在不可靠的通信線路上提供可靠的、端到端的、全雙工的數(shù)據(jù)流通信服務(wù)。當(dāng)數(shù)據(jù)在傳輸過(guò)程中出錯(cuò)或丟失時(shí),發(fā)送方就重發(fā)出錯(cuò)數(shù)據(jù),以保證接收方能夠按序接收到正確數(shù)據(jù)。WinSock基于TCP協(xié)議的編程步驟如下圖3所示9。Create()創(chuàng)建一個(gè)套接字Bind()綁定到一個(gè)端口Listen()在該端口監(jiān)聽Accep
47、t()等待接受一個(gè)連接Receive()接受數(shù)據(jù)或Send()發(fā)送數(shù)據(jù)Close()關(guān)閉套接字并斷開連接Send()發(fā)送數(shù)據(jù)或Receive()接受數(shù)據(jù)Connect()向服務(wù)器一個(gè)端口發(fā)出連接請(qǐng)求Create()創(chuàng)建一個(gè)套接字阻塞式等待接受連接請(qǐng)求建立連接數(shù)據(jù)傳輸數(shù)據(jù)傳輸Close()關(guān)閉套接字并斷開連接服務(wù)端程序客戶端程序圖3TCP客戶端與TCP服務(wù)端進(jìn)行連接的步驟在VC6的MFC(Microsoft基礎(chǔ)類庫(kù))中提供了支持WinSock編程的類,主要有CAsyncSocket類和CSocket類。CAsyncSocket類封裝了Windows Socket API函數(shù),和Csocket類相
48、比,它既有類庫(kù)編程的方便性,又有Socket API函數(shù)編程的靈活性。而Csocket類是CAsyncSocket類的繼承類,它相對(duì)來(lái)說(shuō)具有較高的抽象性。在用流套接字進(jìn)行網(wǎng)絡(luò)編程時(shí),服務(wù)端進(jìn)程首先調(diào)用CAsyncSocket類的成員函數(shù)Create()建立一個(gè)套接字,并用Bind()把它綁定到一個(gè)未使用的端口上,然后調(diào)用listen()函數(shù)在該端口監(jiān)聽連接請(qǐng)求。當(dāng)沒(méi)有連接請(qǐng)求時(shí),服務(wù)端進(jìn)程處于休眠狀態(tài)??蛻暨M(jìn)程創(chuàng)建一個(gè)套接字并把它綁定到一個(gè)未使用的端口上后,就可以調(diào)用Connect()函數(shù)向服務(wù)端進(jìn)程發(fā)出連接請(qǐng)求。當(dāng)服務(wù)端進(jìn)程監(jiān)聽到有客戶端進(jìn)程套接字向該端口發(fā)出連接請(qǐng)求時(shí),服務(wù)端進(jìn)程就被喚醒,
49、生成一個(gè)新的字節(jié)流套接字,并用新套接字調(diào)用Accept()函數(shù)同客戶進(jìn)程的套接字建立連接,而服務(wù)端進(jìn)程最早生成的那個(gè)套接字則繼續(xù)用于監(jiān)聽網(wǎng)絡(luò)上的其他連接請(qǐng)求。連接建立成功后,雙方就可以調(diào)用Send()或Receive()函數(shù)進(jìn)行全雙工的數(shù)據(jù)傳輸。通信結(jié)束后,通信雙方分別調(diào)用Close()函數(shù)撤消套接字并斷開連接。這樣就完成了一次數(shù)據(jù)通信。3.1.2基于UDP協(xié)議的WinSock編程使用UDP協(xié)議實(shí)現(xiàn)的通信是面向無(wú)連接的通信。這種通信方式也叫做數(shù)據(jù)報(bào)通信方式。在通信前,雙方無(wú)需建立連接,可直接收發(fā)數(shù)據(jù)。發(fā)送的每個(gè)分組都攜帶有完整的目的地址,各分組在網(wǎng)絡(luò)中都獨(dú)立傳送。發(fā)送方不管對(duì)方是否收到或正確接
50、收,只要有數(shù)據(jù)就發(fā)送,而接收方僅負(fù)責(zé)接收數(shù)據(jù),不管數(shù)據(jù)正確與否,且不向發(fā)送方發(fā)送應(yīng)答信息。因此,在接收方不能保證收到分組的正確性和到達(dá)的先后順序,分組在傳輸途中可能丟失或出錯(cuò),而后發(fā)的分組也可能先到達(dá)。由于該通信方式取消了端到端的確認(rèn)和重傳機(jī)制,因此,在通信線路質(zhì)量有保證的情況下,能夠達(dá)到較高的通信速率。WinSock基于UDP協(xié)議的編程模型如圖4所示。Create()創(chuàng)建一個(gè)套接字Bind()綁定到一個(gè)端口Close()關(guān)閉套接字Receive From()接受數(shù)據(jù)或SendTo()發(fā)送數(shù)據(jù)Create()創(chuàng)建一個(gè)套接字Bind()綁定到一個(gè)端口Close()關(guān)閉套接字SendTo()發(fā)送數(shù)
51、據(jù)或Receive From()接受數(shù)據(jù)圖4數(shù)據(jù)報(bào)套接字應(yīng)用程序時(shí)序圖3.2COM成組件技術(shù)與DirectShow視頻技術(shù)3.2.1COM組件技術(shù)COM的英文全稱是Component Object Model,也就是組件對(duì)象模型。COM的發(fā)布形式是以win32動(dòng)態(tài)鏈接庫(kù)(DLL)或者可執(zhí)行文件(EXE)的形式發(fā)布的可執(zhí)行代碼組成。COM組件是動(dòng)態(tài)連接的,是完全與語(yǔ)言無(wú)關(guān)的。同時(shí),COM組件可以以二進(jìn)制的形式發(fā)布。COM組件10還可以在不妨礙老客戶的情況下被升級(jí)成新的版本。COM的基礎(chǔ)包括三樣:接口、對(duì)象和類廠。在COM編程中,接口包括一系列相關(guān)的方法,對(duì)象實(shí)現(xiàn)一系列接口,而類廠是一個(gè)特殊的CO
52、M對(duì)象,它創(chuàng)建或?qū)嵗溆嗟腃OM對(duì)象。接口、對(duì)象和類廠的圖例符號(hào)如下表示:圖5接口、對(duì)象和類廠的圖例COM本身只是一種規(guī)范,而不是實(shí)現(xiàn)。如果使用C+來(lái)實(shí)現(xiàn)時(shí),COM組件就是一個(gè)C+類,而接口都是純虛類。按照約定俗成,接口都會(huì)帶一個(gè)大寫的前綴I,每一個(gè)接口都由一個(gè)128位的全局唯一標(biāo)志符( GUID )來(lái)標(biāo)識(shí)。可以用如下C+代碼來(lái)簡(jiǎn)單描述一個(gè)COM組件。Class IfunctionPublic:Virtual Method1()=0;Virtual Method2()=0; /;Class MyObject:public IfunctionPublic:Virtual Method1();V
53、irtual Method2(); /;圖6C+代碼表示COM組件其中,Ifunction 就是常說(shuō)的接口,而 MyObject 就是 COM 組件對(duì)象。圖7MyObject組件對(duì)象示意圖COM 規(guī)范要求所有兼容 COM 的接口必須由 IUnknown 派生出來(lái)。IUnknown定義了 3 個(gè)重要方法,分別是:HRESULT QueryInterface( const IID& iid,void *ppv );ULONG AddRef(void);ULONG Release(void);圖8接口IUnknow的3個(gè)函數(shù)其中,QeryInterface 負(fù)責(zé)組件對(duì)象上的接口查詢,以獲取該對(duì)象上提
54、供的其余服務(wù);AddRef 用于增加引用計(jì)數(shù),Release用于減少引用計(jì)數(shù)。每當(dāng)COM組件對(duì)象被引用一次就應(yīng)調(diào)用一次方法AddRef,而當(dāng)釋放COM組件對(duì)象的某一接口時(shí)就應(yīng)調(diào)用相應(yīng)的 Release方法。引用計(jì)數(shù)是COM中的一個(gè)非常重要的概念,它很好地解決了組件對(duì)象什么時(shí)候被銷毀,以及由誰(shuí)來(lái)銷毀的生命周期問(wèn)題。除了 IUnknown 接口外,還有一個(gè)重要的接口:IClassFactory。COM規(guī)范規(guī)定,每個(gè)組件都必須實(shí)現(xiàn)一個(gè)與之相對(duì)應(yīng)的類廠( Class Factory )。類廠也是一個(gè)COM組件,它實(shí)現(xiàn)了IClassFactory。圖9類廠與COM組件對(duì)象的關(guān)系COM組件有2種基本類型:
55、進(jìn)程內(nèi)服務(wù)端組件、進(jìn)程外服務(wù)端組件。本論文主要采用進(jìn)程內(nèi)服務(wù)端組件類型進(jìn)行開發(fā),因而后面談及的是以進(jìn)程內(nèi)服務(wù)端組件為為基礎(chǔ)的。在 COM 庫(kù)中,有三個(gè) API 函數(shù)可用來(lái)創(chuàng)建對(duì)象:CoGetClassObject、CoCreateInstance、CoCreateInstanceEx 。進(jìn)程內(nèi)服務(wù)端組件對(duì)象的創(chuàng)建流程大概如下:COM 客戶程序調(diào)用 CoGetClassObject,而 CoGetClassObject 調(diào)用DLL 模塊的 DllGetClassObject 引出函數(shù),將參數(shù) clsid、iid、ppv 傳給DllGetClassObject 函數(shù),并返回類廠對(duì)象的接口指針。然后
56、調(diào)用類工廠的接口方法 IClassFactory:CreateInstance 即可真正創(chuàng)建 CLSID_Object 標(biāo)識(shí)的組件對(duì)象。圖10COM對(duì)象創(chuàng)建過(guò)程示意圖對(duì)于 CoCreateInstance 來(lái)說(shuō),它其實(shí)是一個(gè)封裝了類廠對(duì)象創(chuàng)建過(guò)程的輔助函數(shù),其內(nèi)部實(shí)際調(diào)用了 CoGetClassObject 函數(shù)??蛻舫绦蛑恍柚该鲗?duì)象類的 CLSID、接口 IID 和輸出的接口指針,不需與類廠打交道即可創(chuàng)建 COM 組件對(duì)象。對(duì)于 CoCreateInstanceEx 來(lái)說(shuō),其主要用于創(chuàng)建進(jìn)程外服務(wù)端組件對(duì)象。3.2.2DirectShow視頻技術(shù)DirectX 軟件開發(fā)包是微軟公司提供的一套
57、在 Windows 操作平臺(tái)上開發(fā)高性能圖形、聲音、輸入、輸出和網(wǎng)絡(luò)游戲的編程接口。因DirectX采用了組件對(duì)象模型(COM)標(biāo)準(zhǔn)技術(shù),故使用DirectX SDK開發(fā)多媒體應(yīng)用程序前,應(yīng)對(duì)COM組件技術(shù)有基本的理解。DirectShow 作為 DirectX 大家族的一員,為 Windows 平臺(tái)上處理各種格式的媒體文件的回放、音視頻采集等高性能要求的多媒體應(yīng)用,提供了完整的解決方案。Filter是DirectShow中最基本的概念。DirectShow使用Filter Graph來(lái)管理Filter, Filter Graph是Filter的容器,而Filter是Filter Graph中
58、的最小功能模塊。Filter一般由一個(gè)或多個(gè)Pin組成,F(xiàn)ilter之間通過(guò)Pin相互連接, 構(gòu)成一條順序的鏈路。僅含有輸出Pin,沒(méi)有輸入Pin的Filter為Source Filter;既有輸入Pin也有輸出Pin的Filter為Transform Filter;只有輸入Pin,沒(méi)有輸出Pin的Filter為Rendering Filter。3 種Filter在GraphEdit11下顯示如下圖:圖113種Filter類型Filter 是一種 COM 組件,實(shí)現(xiàn) Filter 的文件一般是一個(gè) DLL,使用前必須先注 冊(cè) 。 Filter 的 創(chuàng) 建 與 普 通 的 COM 組 件 一 樣
59、 , 通 過(guò) API 函 數(shù)CoCreateInstance()來(lái)完成。DirectShow系統(tǒng)概述:DirectShow系統(tǒng)位于應(yīng)用層中,它使用一種叫Filter Graph過(guò)濾圖的模型來(lái)管理整個(gè)數(shù)據(jù)流的處理過(guò)程;參與數(shù)據(jù)處理的各個(gè)功能模塊叫做Filter過(guò)濾器;各個(gè)Filter在Filter Graph中按一定的順序連接成一條“流水線”協(xié)同工作。圖12DirectShow系統(tǒng)(源自DirectX SDK9.0)按功能分,如上圖所列,F(xiàn)ilter 大致分為:Source Filters、Transform Filters 和 Rendering Filters。Source Filters
60、主要負(fù)責(zé)獲取數(shù)據(jù),數(shù)據(jù)源可以是文件、因特網(wǎng)、計(jì)算機(jī)里的采集卡(WDM 驅(qū)動(dòng)的或 VFW 驅(qū)動(dòng)的)數(shù)字?jǐn)z像機(jī)等等,然后將數(shù)據(jù)往下傳輸;Transform Filters 主要負(fù)責(zé)數(shù)據(jù)的格式轉(zhuǎn)換,例如數(shù)據(jù)流的分離合成、解碼編碼等,然后將數(shù)據(jù)繼續(xù)往下傳輸;Rendering Filters 主要負(fù)責(zé)數(shù)據(jù)的最終去向?qū)?shù)據(jù)送給顯卡、聲卡進(jìn)行多媒體的演示,或者輸出到文件進(jìn)行存儲(chǔ)。開發(fā)DirectShow應(yīng)用程序的一般過(guò)程:3個(gè)階段。第1階段:具體調(diào)用 CoCreateInstance()創(chuàng)建一個(gè) Filter Graph Manger組件。第2階段:根據(jù)實(shí)際的應(yīng)用,創(chuàng)建一條完整的 Filter 鏈路。具體
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年教師一幫一活動(dòng)計(jì)劃
- Unit 4 Road safety (Story time) (說(shuō)課稿)-2023-2024學(xué)年譯林版(三起)英語(yǔ)六年級(jí)下冊(cè)
- 2025年婦產(chǎn)科下半年三基培訓(xùn)計(jì)劃
- Unit 4 My Family Lesson 4 說(shuō)課稿 2024-2025學(xué)年冀教版英語(yǔ)七年級(jí)上冊(cè)
- 2025年勞動(dòng)技術(shù)教學(xué)計(jì)劃例文
- 藥店藥品培訓(xùn)知識(shí)課件
- 2025年暑假學(xué)習(xí)計(jì)劃安排
- 2025幼兒園實(shí)習(xí)計(jì)劃范文
- 2025年新學(xué)期學(xué)校教學(xué)工作計(jì)劃
- 時(shí)間頻率計(jì)量標(biāo)準(zhǔn)器具相關(guān)行業(yè)投資規(guī)劃報(bào)告
- 梅毒診療指南(2014版)
- GA 172-2014金屬手銬
- 醫(yī)學(xué)醫(yī)學(xué)文獻(xiàn)檢索與論文寫作培訓(xùn)課件
- SQL Server 2000在醫(yī)院收費(fèi)審計(jì)的運(yùn)用
- 北師大版小學(xué)三年級(jí)數(shù)學(xué)下冊(cè)課件(全冊(cè))
- 工程臨時(shí)用工確認(rèn)單
- 簡(jiǎn)約清新大氣餐飲行業(yè)企業(yè)介紹模板課件
- 氮?dú)庵舷⑹鹿拾咐?jīng)驗(yàn)分享
- 某公司年度生產(chǎn)經(jīng)營(yíng)計(jì)劃書
- 廠房租賃合同標(biāo)準(zhǔn)版(通用10篇)
- 《教育心理學(xué)》教材
評(píng)論
0/150
提交評(píng)論