視頻監(jiān)控系統(tǒng)的設(shè)計和實現(xiàn)_第1頁
視頻監(jiān)控系統(tǒng)的設(shè)計和實現(xiàn)_第2頁
視頻監(jiān)控系統(tǒng)的設(shè)計和實現(xiàn)_第3頁
視頻監(jiān)控系統(tǒng)的設(shè)計和實現(xiàn)_第4頁
視頻監(jiān)控系統(tǒng)的設(shè)計和實現(xiàn)_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

視頻監(jiān)控系統(tǒng)設(shè)計和實現(xiàn)摘要視頻監(jiān)控系統(tǒng)是一門集計算機技術(shù)、通信技術(shù)和數(shù)字視頻技術(shù)于一體綜合系統(tǒng),一直是大家關(guān)注應(yīng)用技術(shù)熱點之一。它以其直觀方便、信息內(nèi)容豐富而被廣泛應(yīng)用于很多場所,關(guān)鍵應(yīng)用領(lǐng)域包含教育系統(tǒng)、電力系統(tǒng)、公檢法系統(tǒng)、部隊系統(tǒng)、銀行系統(tǒng)、鐵路系統(tǒng)、稅務(wù)系統(tǒng)和醫(yī)療系統(tǒng)等,幾乎每個行業(yè)全部有多個需求。其特點有:標(biāo)準(zhǔn)化、可擴展性、可用性和可靠性、易用性、開放式結(jié)構(gòu)、完善性等。本文以試驗室為背景,設(shè)計了一個試驗室視頻監(jiān)控系統(tǒng)——當(dāng)?shù)乇O(jiān)控系統(tǒng),針對其視頻采集、存放回放等功效要求,討論軟件系統(tǒng)關(guān)鍵任務(wù)及處理方案。視頻采集部分使用OpenCV庫函數(shù)實現(xiàn),監(jiān)控采集到視頻圖像經(jīng)過預(yù)定義編碼方法進(jìn)行壓縮,采取當(dāng)今流行MPEG4文件格式,存放借助于人機交流界面錄像功效實現(xiàn),回放采取現(xiàn)有當(dāng)?shù)夭シ跑浖崿F(xiàn)。系統(tǒng)軟件實現(xiàn)基于MicrosoftVisualstudio環(huán)境,利用Qt開發(fā)。MicrosoftVisualstudio作為一個可視集成開發(fā)工具,提供了軟件代碼自動生成和可視化資源編輯功效,和傳統(tǒng)部分編程平臺相比,它能夠使系統(tǒng)含有較高效率和可用性。本系統(tǒng)能夠?qū)崿F(xiàn)當(dāng)?shù)貓D像信息采集、錄像、存放、回放等功效。初步試驗結(jié)果表明,系統(tǒng)在關(guān)鍵功效上已靠近實用化,且操作簡便、工作可靠,含有很好應(yīng)用前景。關(guān)鍵詞:視頻監(jiān)控,OpenCV,圖像采集,存放

DesignandImplementationofvideomonitorsystemABSTRACTVideomonitorsystemissetofcomputertechnology,communicationtechnologyanddigitalvideotechnologyintheintegrationofIntegratedSystem.Ithasalwaysbeenoneofthehottestapplicationthatpeopleconcernedabout.Withitsintuitive,thesystemiswidelyusedinmanyoccasions.Themainapplicationfieldsincludeeducationsystem,powersystem,publicsecuritysystem,theunitsystem,thebankingsystem,therailwaysystem,thetaxsystemandthemedicalsystem,almosteveryindustryhastheneeds.Features:standardization,scalability,availabilityandreliability,easeofuse,openarchitecture,integrity,andsoon.Thissystemissetinlaboratoryanddesignedofalaboratoryvideomonitor–localmonitorsystem,foritsvideocaptureandstoreplaybackfunctionrequirements,discussingmajortasksandsolutionsofsoftwaresystem.VideocapturefunctionsachievedbyOpenCVlibrary,monitoringcollectionofvideoiscodedbycompressionofthefollowingpredefined,oneoftoday'spopularfileformatMPEG4,VideoStoreachievedbyman-machinecommunicationinterfaceimplementation,playbackusingpartachievedbylocalplayersoftware.SystemsoftwarebasedonMicrosoftVisualStudioenvironment,usingQtDevelopment.MicrosoftVisualStudioasavisualintegrateddevelopmenttoolprovidedresourcesofsoftwareAutomaticCodeGenerationandvisualeditingcapabilities.Comparedwiththetraditionalprogrammingplatform,itenablessystemwithhighefficiencyandavailability.Thesystemenableslocalimageinformationcollection,recording,storageandplaybackfunction.Preliminaryexperimentalresultsshowthatthesystemonmainfunctionisapproachingthepracticalandeasytooperate,reliableandgoodprospect.KEYWORDS:videomonitor,OpenCV,imagecapture,storage目錄前言 1第1章 緒論 21.1視頻監(jiān)控系統(tǒng)現(xiàn)實狀況 21.2視頻監(jiān)控系統(tǒng)發(fā)展方向 31.3技術(shù)背景 41.3.1VisualStudio介紹 41.3.2Qt介紹 51.3.3OpenCV介紹 61.3.4Xvid介紹 71.3.5流媒體技術(shù) 8第2章需求分析 92.1項目概述 92.1.1項目目標(biāo) 92.1.2功效描述 92.1.3運行環(huán)境 102.2系統(tǒng)操作圖 102.3運行需求 112.3.1硬件接口 112.3.2軟件接口 11第3章概要設(shè)計 123.1功效劃分及模塊介紹 123.2視頻采集模塊實現(xiàn)方法 123.3編碼壓縮模塊實現(xiàn)方法 143.4用戶界面 18第4章具體設(shè)計 204.1程序描述 204.2程序?qū)崿F(xiàn) 204.2.1取得攝像頭驅(qū)動和版本號 214.2.2顯示圖像在用戶端 214.2.3初始化壓縮格式并開始壓縮 224.2.4回調(diào)函數(shù) 234.2.5保留文件 24結(jié)論 25謝辭 26參考文件 27前言在社會信息化日益發(fā)展今天,計算機技術(shù)、網(wǎng)絡(luò)技術(shù)、通信技術(shù)和多媒體技術(shù)己經(jīng)滲透到人類生存活動各個領(lǐng)域中。伴隨社會經(jīng)濟快速發(fā)展,社會公共安全也受到大家越來越多關(guān)注,安防產(chǎn)業(yè)作為一個新型產(chǎn)業(yè)發(fā)展很快速,也有好多IT企業(yè)轉(zhuǎn)型到安防產(chǎn)業(yè),使安防產(chǎn)業(yè)在技術(shù)上、可連續(xù)發(fā)展上有了堅實基礎(chǔ)。視頻監(jiān)控系統(tǒng)應(yīng)運而生。視頻監(jiān)控系統(tǒng)是安全防范系統(tǒng)關(guān)鍵組成部分,其信息流數(shù)字化、編碼壓縮、開放式協(xié)議,使智能網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)和安防系統(tǒng)中各個子系統(tǒng)間實現(xiàn)無縫連接如:防盜報警系統(tǒng)、門禁系統(tǒng)。前端設(shè)備輸出數(shù)字信號也可由多網(wǎng)合一方法,經(jīng)過網(wǎng)絡(luò)復(fù)用進(jìn)行傳輸并在同一平臺上進(jìn)行管理和控制。多年來,伴隨計算機網(wǎng)絡(luò)和圖像處理、傳輸技術(shù)飛速發(fā)展,視頻監(jiān)控制技術(shù)也有長足發(fā)展,而且也受到大家越來越多關(guān)注。它正從傳統(tǒng)安防監(jiān)控向管理、生產(chǎn)監(jiān)控發(fā)展,并逐步和管理信息系統(tǒng)相結(jié)合,達(dá)成資源共享,為管理者提供更直觀、更有效決議信息,視頻監(jiān)控不僅符合社會信息化發(fā)展趨勢,而且代表了監(jiān)控行業(yè)發(fā)展方向。視頻監(jiān)控系統(tǒng)通常過程是:在部分關(guān)鍵被監(jiān)控場所安放一個或若干個攝像機拍攝監(jiān)控現(xiàn)場,然后將視頻信號經(jīng)過傳輸網(wǎng)絡(luò)(線纜、無線、光纖或以太網(wǎng)),傳到指定視頻監(jiān)控中心,監(jiān)控中心能夠遠(yuǎn)程監(jiān)控現(xiàn)場圖像,并可經(jīng)過存放介質(zhì)保留現(xiàn)場視頻數(shù)據(jù)供以后查詢?nèi)∽C,同時還能夠依據(jù)不一樣需要和路徑在現(xiàn)場安裝其它探測裝置,作為視頻監(jiān)控系統(tǒng)輔助設(shè)備?,F(xiàn)在大家能夠很輕易地實現(xiàn)視頻信號傳送和處理,得益于數(shù)字壓縮技術(shù)日益成熟。沒有經(jīng)過壓縮數(shù)字圖象信號有二百多兆帶寬,模擬信號數(shù)字化以后,再經(jīng)過壓縮,能夠?qū)⑵鋷拤嚎s到幾十、幾百Kbps范圍內(nèi)。即使它們不能提供像電視那樣高幀率視頻圖象,但在大家能夠接收情況下,占用較小傳輸帶寬,提供實時高質(zhì)量圖象,足以滿足通常監(jiān)控場所要求。緒論視頻監(jiān)控系統(tǒng)是安全防范技術(shù)體系中一個關(guān)鍵組成部分,它經(jīng)過攝像機及其輔助設(shè)備將監(jiān)視場所監(jiān)控到圖像、聲音等信息傳送到監(jiān)控中心,實現(xiàn)對特定區(qū)域監(jiān)控,含有強烈安全防范能力1.1視頻監(jiān)控系統(tǒng)現(xiàn)實狀況在以前,關(guān)鍵是以模擬設(shè)備為主,含攝像機和磁帶錄像機全模擬電視監(jiān)控系統(tǒng),稱為第一代模擬監(jiān)控系統(tǒng),這一階段監(jiān)控系統(tǒng)中基礎(chǔ)不使用視頻監(jiān)控軟件。以后到現(xiàn)在,伴隨計算機處理能力提升和視頻技術(shù)發(fā)展,大家利用計算機高速數(shù)據(jù)處理能力進(jìn)行視頻采集和壓縮處理,利用顯示器高分辨率實現(xiàn)圖像多畫面顯示,大大提升了圖像質(zhì)量,因為傳輸依舊采取傳統(tǒng)模擬視頻電纜,所以就叫第二代半模擬半數(shù)字當(dāng)?shù)匾曨l監(jiān)控系統(tǒng),這一階段使用監(jiān)控軟件基礎(chǔ)上全部是PC單機DVR軟件。從開始,伴隨網(wǎng)絡(luò)帶寬提升和成本降低、硬盤容量加大和中心存放成本降低,和多種實用視頻處理技術(shù)出現(xiàn),視頻監(jiān)控步入了全數(shù)字化網(wǎng)絡(luò)時代,因為它從攝像機或網(wǎng)絡(luò)視頻服務(wù)器下來就直接進(jìn)入網(wǎng)絡(luò),以數(shù)字視頻壓縮、傳輸、存放和播放為基礎(chǔ),依靠強大平臺軟件實施管理,所以稱之為第三代全網(wǎng)絡(luò)視頻監(jiān)控管理系統(tǒng)。在第三代視頻監(jiān)控系統(tǒng)中,視頻監(jiān)控軟件是必不可缺,一般用戶需要使用視頻監(jiān)控軟件進(jìn)行日常監(jiān)控功效應(yīng)用,系統(tǒng)管理員更需要使用視頻監(jiān)控軟件對監(jiān)控系統(tǒng)中全部硬件軟件資源進(jìn)行全方面管理和維護(hù),能夠毫不夸張說,視頻監(jiān)控軟件是第三代視頻監(jiān)控系統(tǒng)關(guān)鍵。在中國外市場上,關(guān)鍵推出是數(shù)字控制模擬視頻監(jiān)控和數(shù)字視頻監(jiān)控兩類產(chǎn)品。前者技術(shù)發(fā)展已經(jīng)很成熟、性能穩(wěn)定,并在實際工程應(yīng)用中得到廣泛應(yīng)用,尤其是在大、中型視頻監(jiān)控工程中應(yīng)用尤為廣泛;后者是新近崛起以計算機技術(shù)及圖像視頻壓縮為關(guān)鍵新型視頻監(jiān)控系統(tǒng),該系統(tǒng)處理了模擬系統(tǒng)部分弊端而快速崛起,但仍需深入完善和發(fā)展。1.2視頻監(jiān)控系統(tǒng)發(fā)展方向前端一體化、視頻數(shù)字化、監(jiān)控網(wǎng)絡(luò)化、系統(tǒng)集成化、管理智能化是視頻監(jiān)控系統(tǒng)公認(rèn)發(fā)展方向,而數(shù)字化是網(wǎng)絡(luò)化前提,網(wǎng)絡(luò)化又是系統(tǒng)集成化基礎(chǔ),所以,視頻監(jiān)控發(fā)展最大特點就是數(shù)字化、網(wǎng)絡(luò)化、智能化、系統(tǒng)化。1.數(shù)字化視頻監(jiān)控系統(tǒng)數(shù)字化是系統(tǒng)中信息流(包含視頻、音頻、控制等)從模擬狀態(tài)轉(zhuǎn)為數(shù)字狀態(tài),改變了“傳統(tǒng)閉路電視系統(tǒng)是以攝像機成像技術(shù)為中心”結(jié)構(gòu),根本上改變視頻監(jiān)控系統(tǒng)從信息采集、數(shù)據(jù)處理、傳輸、系統(tǒng)控制等方法和結(jié)構(gòu)形式。信息流數(shù)字化、編碼壓縮、開放式協(xié)議,使視頻監(jiān)控系統(tǒng)和安防系統(tǒng)中其它各子系統(tǒng)間實現(xiàn)無縫連接,并在統(tǒng)一操作平臺上實現(xiàn)管理和控制,這也是系統(tǒng)集成化含義。2.網(wǎng)絡(luò)化視頻監(jiān)控系統(tǒng)網(wǎng)絡(luò)化將意味著系統(tǒng)結(jié)構(gòu)將由集總式向集散式系統(tǒng)過渡,集散式系統(tǒng)采取多層分級結(jié)構(gòu)形式,含有微內(nèi)核技術(shù)實時多任務(wù)、多用戶、分布式操作系統(tǒng)以實現(xiàn)搶先任務(wù)調(diào)度算法快速響應(yīng)。組成集散式監(jiān)控系統(tǒng)硬件和軟件采取標(biāo)準(zhǔn)化、模塊化和系列化設(shè)計,系統(tǒng)設(shè)備配置含有通用性強、開放性好、系統(tǒng)組態(tài)靈活、控制功效完善、數(shù)據(jù)處理方便、人機界面友好和系統(tǒng)安裝、調(diào)試和維修簡單化,系統(tǒng)運行互為熱備份,容錯可靠等功效。系統(tǒng)網(wǎng)絡(luò)化在某種程度上打破了布控區(qū)域和設(shè)備擴展地域和數(shù)量界限。系統(tǒng)網(wǎng)絡(luò)化將實現(xiàn)整個網(wǎng)絡(luò)系統(tǒng)硬件和軟件資源共享和任務(wù)和負(fù)載共享,這也是系統(tǒng)集成一個關(guān)鍵概念。3.智能化采取計算機為控制中心,經(jīng)過系統(tǒng)軟件實現(xiàn)控制界面可視化,控制環(huán)境多媒體化,能夠方便地實現(xiàn)對視頻切換、音頻切換、鏡頭云臺控制、報警輸入、行動輸出錄像智能化控制,進(jìn)而達(dá)成對事件分析、統(tǒng)計、處理,實現(xiàn)視頻監(jiān)控智能管理。4.系統(tǒng)化智能視頻綜合管理是用戶真正需求,依據(jù)不一樣行業(yè)、用戶不一樣,需求大致應(yīng)包含視頻監(jiān)控、數(shù)據(jù)采集、辦公信息、地理信息、告警聯(lián)動、數(shù)據(jù)圖像保留、網(wǎng)絡(luò)安全、數(shù)據(jù)安全及授權(quán)認(rèn)證等管理模塊,集成了通信技術(shù)、計算機網(wǎng)絡(luò)技術(shù)、圖像處理技術(shù)、自動化技術(shù)、模擬安防技術(shù)和系統(tǒng)管理軟件技術(shù)。1.3技術(shù)背景通常監(jiān)控系統(tǒng)是由前端設(shè)備、傳輸設(shè)備、多路視頻分配器、網(wǎng)絡(luò)視頻服務(wù)器、當(dāng)?shù)仫@示器、終端用戶機等部分組成。前端包含:攝像機、鏡頭、云臺、防護(hù)罩等設(shè)備。傳輸部分由視頻線纜、電源線纜、控制線纜和傳輸線纜等組成。web嵌入式視頻服務(wù)器連接多路視頻輸入,集監(jiān)視、錄像、多個畫面分割、畫面切換、回放檢索、打印、等功效于一體。終端用戶機實現(xiàn)遠(yuǎn)程視頻回放和對云臺監(jiān)控。下面針對系統(tǒng)中用到關(guān)鍵技術(shù)做簡明敘述。1.3.1VisualStudio介紹VisualStudio是微軟企業(yè)推出開發(fā)環(huán)境。是現(xiàn)在最流行Windows平臺應(yīng)用程序開發(fā)環(huán)境。現(xiàn)在已經(jīng)開發(fā)到9.0版本,也就是VisualStudio。它使開發(fā)人員能夠快速創(chuàng)建高質(zhì)量、用戶體驗豐富而又緊密聯(lián)絡(luò)應(yīng)用程序,充足展示了Microsoft開發(fā)智能用戶端應(yīng)用程序構(gòu)想。借助VisualStudio,采集和分析信息將變得更為簡單便捷,業(yè)務(wù)決議也會所以變得更為有效。任何規(guī)模組織全部能夠使用VisualStudio快速創(chuàng)建更安全、更易于管理而且更可靠應(yīng)用程序。VisualStudio提供了高級開發(fā)工具、調(diào)試功效、數(shù)據(jù)庫功效和創(chuàng)新功效,幫助在多種平臺上快速創(chuàng)建目前最優(yōu)異應(yīng)用程序。VisualStudio包含多種增強功效,比如可視化設(shè)計器、對Web開發(fā)工具大量改善,和能夠加速開發(fā)和處理全部類型數(shù)據(jù)語言增強功效。同時為開發(fā)人員提供了全部相關(guān)工具和框架支持。為了幫助開發(fā)人員快速創(chuàng)建優(yōu)異軟件,VisualStudio提供了改善語言和數(shù)據(jù)功效,比如語言集成查詢(LINQ),各個編程人員能夠利用這些功效更輕松地構(gòu)建處理方案以分析和處理信息。1.3.2Qt介紹Qt是一個多平臺C++圖形用戶界面應(yīng)用程序框架,它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級圖形用戶界面所需所用功效。Qt是完全方面向?qū)ο蠛茌p易擴展,而且許可真正地組件編程。Qt是挪威QtSoftware產(chǎn)品,6月17日被芬蘭諾基亞企業(yè)收購。Qt4.6對全新平臺提供支持,含有強大全新圖形處理能力并支持多點觸摸和手勢輸入,讓高級應(yīng)用程序和設(shè)備開發(fā)過程變得愈加輕松和愉快。自從1996年早些時候Qt進(jìn)入商業(yè)領(lǐng)域,它已經(jīng)成為全世界范圍內(nèi)數(shù)千種成功應(yīng)用程序基礎(chǔ)。含有以下優(yōu)點:1.優(yōu)良跨平臺特征Qt支持下列操作系統(tǒng):MicrosoftWindows95/98,MicrosoftWindowsNT,linux,Solaris,SunOS,HP-UX等等。2.面向?qū)ο驫t良好封裝機制使得Qt模塊化程度很高,可重用性很好,對于用戶開發(fā)來說是很方便,Qt提供了一個稱為signals/slots安全類型來替換callback,這使得各個元件之間協(xié)同工作變得十分簡單。3.豐富APIQt包含多達(dá)250個以上C++類,還替供基于模板collections,serialization,file,I/Odevice,directorymanagement,date/time類甚至還包含正則表示式處理功效。5.大量開發(fā)文檔6.XML支持1.3.3OpenCV介紹OpenCV是Intel資助開源計算機視覺庫。它由一系列C函數(shù)和少許C++類組成,實現(xiàn)了圖像處理和計算機視覺方面很多通用算法。OpenCV擁有包含300多個C/C++函數(shù)跨平臺中、高層API,它不依靠和其它外部庫,盡管也能夠使用一些外部庫。OpenCV對非商業(yè)應(yīng)用和商業(yè)應(yīng)用全部是無償?,F(xiàn)在OpenCV庫包含以下多個模塊:1.CxCore:包含部分基礎(chǔ)功效。從“core關(guān)鍵"名字能夠看出,該庫提供了全部OpenCV運行時部分最基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),包含矩陣,數(shù)組基礎(chǔ)運算,包含犯錯處理部分基礎(chǔ)函數(shù)。具體分為下面若干部分:(1)基礎(chǔ)結(jié)構(gòu)(2)數(shù)組操作(3)動態(tài)結(jié)構(gòu)(4)繪圖函數(shù)(5)數(shù)據(jù)保留和運行時類型信息(6)其它混合函數(shù)(7)錯誤處理和系統(tǒng)函數(shù)2.Cv:圖像處理和計算機視覺功效,這是關(guān)鍵函數(shù)庫,包含圖像處理、結(jié)構(gòu)分析、運動分析、物體跟蹤、模式識別和攝像機標(biāo)定等功效。3.CvAux:附加庫函數(shù),包含部分試驗性函數(shù)。4.HighGUI:交互部分,HighHGUI只是用來建立快速軟件原形或是試驗用。它設(shè)計意圖是為用戶提供簡單易用圖形用戶接口。通常,你需要讀入源圖像到你程序或輸出結(jié)果圖像到磁盤。另外,需要簡單方法顯示圖像到監(jiān)視器而且向許可(受限)用戶提供輸入。OpenCV功效關(guān)鍵包含以下:1.圖像數(shù)據(jù)操作包含分配、釋放、復(fù)制、設(shè)置和轉(zhuǎn)換。2.圖像和視頻輸入輸出I/O文包含件和攝像頭輸入、圖像和視頻文件輸出。3.矩陣和微量操作和線性代數(shù)算法程序包含矩陣積、解議程、特征值和奇異值等。4.各個動態(tài)數(shù)據(jù)結(jié)構(gòu)包含列表、隊列、集合、樹、圖等。5.數(shù)字圖像處理包含濾波、邊緣檢測、角點檢測、采樣和差值、色彩轉(zhuǎn)換、形態(tài)操作、直方圖、圖像金字塔等。6.結(jié)構(gòu)分析包含連接部件、輪廓處理、距離變換、各自距計算、模板匹配、Hough變換、多邊形迫近、直線擬合、橢圓擬合等。7.攝像頭定標(biāo)包含發(fā)覺和跟蹤定標(biāo)模式、定標(biāo)、矩陣估量、齊次矩陣估量、立體對應(yīng)。8.運動分析包含光流、運動分割、跟蹤。9.目標(biāo)識別如特征法、隱馬爾可夫模式。10.GUI實現(xiàn)圖像和視頻顯示、鍵盤和鼠標(biāo)事件處理、滾動條等和圖像標(biāo)注如線、二次曲線、多邊形、文字。1.3.4Xvid介紹Xvid(舊稱為XviD)是一個開放原始碼MPEG-4視頻編解碼器,它是基于OpenDivX而編寫,性能得到極大提升,被認(rèn)為是現(xiàn)在世界上速度最快mpeg4codec。Xvid特點:1.多個編碼模式2.單重固定碼流壓縮3.單重質(zhì)量模式動態(tài)碼流壓縮4.單重量化模式動態(tài)碼流壓縮5.雙重動態(tài)碼流壓縮模式,使視頻在占用空間及畫面質(zhì)量之間取得最好平衡6.量化方法和范圍控制7.運動偵測和曲線平衡分配8.多級運動偵測精度,半像素插值9.動態(tài)關(guān)鍵幀距10.心理視覺亮度修正xvid有兩種編碼方法:singlepass和twopass分別實現(xiàn)mpeg4標(biāo)準(zhǔn)中simpleprofile和advancedsimpleprofile兩種模式要求。1.3.5流媒體技術(shù)伴隨互聯(lián)網(wǎng)普及,利用網(wǎng)絡(luò)傳輸聲音和視頻信號需求也越來越大。廣播電視等媒體上網(wǎng)后,也全部期望經(jīng)過互聯(lián)網(wǎng)來公布自己音視頻節(jié)目。不過,音視頻在存貯時文件體積通常全部十分龐大。在網(wǎng)絡(luò)帶寬還很有限情況下,花幾十分鐘甚至更長時間等候一個音視頻文件傳輸,不能不說是一件讓人頭疼事。流媒體技術(shù)出現(xiàn),在一定程度上使互聯(lián)網(wǎng)傳輸音視頻難局面得到改善。傳統(tǒng)網(wǎng)絡(luò)傳輸音視頻等多媒體信息方法是完全下載后再播放,下載常常要花數(shù)分鐘甚至數(shù)小時。而采取流媒體技術(shù),就可實現(xiàn)流式傳輸,將聲音、影像或動畫由服務(wù)器向用戶計算機進(jìn)行連續(xù)、不間斷傳送,用戶無須等到整個文件全部下載完成,而只需經(jīng)過幾秒或十幾秒開啟延時即可進(jìn)行觀看。當(dāng)聲音視頻等在用戶機器上播放時,文件剩下部分還會從服務(wù)器上繼續(xù)下載。流式傳輸技術(shù)又分兩種,一個是次序流式傳輸,另一個是實時流式傳輸。次序流式傳輸是次序下載,在下載文件同時用戶能夠觀看,不過,用戶觀看和服務(wù)器上傳輸并不是同時進(jìn)行,用戶是在一段延時后才能看到服務(wù)器上傳出來信息,或說用戶看到總是服務(wù)器在若干時間以前傳出來信息。在這過程中,用戶只能觀看已下載那部分,而不能要求跳到還未下載部分。次序流式傳輸比較適合高質(zhì)量短片段,因為它能夠很好地確保節(jié)目播放最終質(zhì)量。因為它能夠很好地確保節(jié)目播放最終質(zhì)量。它適合于在網(wǎng)站上公布供用戶點播音視頻節(jié)目。在實時流式傳輸中,音視頻信息可被實時觀看到。在觀看過程中用戶可快進(jìn)或后退以觀看前面或后面內(nèi)容,不過在這種傳輸方法中,假如網(wǎng)絡(luò)傳輸情況不理想,則收到信號效果比較差。在利用流媒體技術(shù)時,音視頻文件要采取對應(yīng)格式,不一樣格式文件需要用不一樣播放器軟件來播放,所謂“一把鑰匙開一把鎖”。第2章需求分析視頻監(jiān)控系統(tǒng)是安防和信息技術(shù)相結(jié)合高科技產(chǎn)物,在安全防范,案件偵破,校園監(jiān)考,賽事督管方面作用突出。科技發(fā)展方向和水平是帶動整個市場需求和建設(shè)進(jìn)程原動力,進(jìn)而為社會平安,友好提供強有力保障。2.1項目概述本視頻監(jiān)控系統(tǒng)是用戶端軟件部分,是整個網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)一部分,在VisualStudio和Qt環(huán)境下編譯,運行,經(jīng)過OpenCV庫函數(shù)實現(xiàn)視頻采集,顯示,拍照功效,采取Xvid技術(shù)實現(xiàn)視頻壓縮存放。在Windows平臺下,用戶可經(jīng)過主界面菜單來實施操作,實現(xiàn)靜態(tài)畫面捕捉、視頻采集、存放和回放等功效。此部分也是最關(guān)鍵,因為只有有效控制采集跟壓縮,得到信息才會有價值,傳輸起來方便,快捷。2.1.1項目目標(biāo)計算機操作系統(tǒng),優(yōu)異開發(fā)平臺上,利用現(xiàn)有軟件,配置一定硬件,開發(fā)一個含有開放體系結(jié)構(gòu)、易擴充、易維護(hù)、含有良好人機交互界面視頻監(jiān)控系統(tǒng),實現(xiàn)視頻靜態(tài)畫面捕捉,視頻錄制等功效。2.1.2功效描述本系統(tǒng)從攝像頭實時采集視頻并顯示,相片拍照,預(yù)覽和管理。可將采集到視頻文件壓縮成MPEG4格式文件保留,并可播放保留MPEG4文件。用戶在主界面可直接看到采集窗口,顯示目前捕捉到畫面,更有快捷按鈕實現(xiàn)相片拍照,和視頻錄制開始和結(jié)束,也可自行設(shè)置相片存放路徑,大小,質(zhì)量等,錄制結(jié)束后視頻文件自動編碼壓縮存放在指定位置,在文件操作菜單中能夠打開并預(yù)覽照片和視頻,在主界面下方顯示拍攝相片,也可方便預(yù)覽,同時刪除變可視化,更人性化設(shè)計了退出系統(tǒng)操作菜單,避免因操作不妥引發(fā)瓦解。2.1.3運行環(huán)境首先硬環(huán)境方面計算機配置主流全部能夠滿足需求,外置攝像頭也很關(guān)鍵,性能要好,那樣畫面會更清楚。軟環(huán)境方面本系統(tǒng)是在VisualStudio和Qt環(huán)境下編譯運行。2.2系統(tǒng)操作圖進(jìn)入系統(tǒng)進(jìn)入系統(tǒng)是否進(jìn)入系統(tǒng)主界面是否開始視頻錄制拍照參數(shù)設(shè)置視頻回放圖2-1系統(tǒng)操作圖是否進(jìn)入系統(tǒng)是本系統(tǒng)運行首要條件,進(jìn)入后出現(xiàn)系統(tǒng)主界面,這里用戶可方便實現(xiàn)全部操作,包含靜態(tài)畫面捕捉、視頻采集、存放和回放等功效。2.3運行需求運行需求包含硬件接口和軟件接口。2.3.1硬件接口攝像頭:中星微ZC030XUSB攝像頭,CMOSOV511。嵌入式平臺:S3C2440ARM9開發(fā)板。2.3.2軟件接口在Windows系統(tǒng)下使用了OpenCV部分庫函數(shù)(cvCreateFileCapture,cvCreateCameraCapture,cvGrabFrame,cvQueryFrame)和封裝類(VideoCaptureDevice,V4L1VideoCaptureDevice,CvVideoCaptureDevic)功效實現(xiàn)攝像頭控制,使用XviD庫函數(shù)(xvid_global(),xvid_decore()和xvid_encore())進(jìn)行MPEG4視頻解壓縮:xvid_global()實現(xiàn)全局初始化,獲取XviD和硬件功效信息(全局信息),色場空間裝換功效;xvid_decore()為Xvid解碼關(guān)鍵函數(shù),xvid_encore()是對輸入原始圖像進(jìn)行編碼,輸出符合MPEG4標(biāo)準(zhǔn)要求碼流。第3章概要設(shè)計本章節(jié)是在系統(tǒng)需求分析基礎(chǔ)上,對視頻監(jiān)控系統(tǒng)做概要設(shè)計。關(guān)鍵處理了實現(xiàn)該系統(tǒng)需求程序模塊設(shè)計問題。包含怎樣把該系統(tǒng)劃分成若干個模塊、決定各個模塊之間接口、模塊之間傳輸信息。3.1功效劃分及模塊介紹1模塊名稱:視頻采集模塊模塊功效:從攝像頭實時采集畫面及視頻錄制模塊實現(xiàn):借助OpenCV庫函數(shù)(cvCreateFileCapture,cvCreateCameraCapture等)實現(xiàn)2模塊名稱:編碼壓縮模塊模塊功效:視頻壓縮存放模塊實現(xiàn):借助XviD三個關(guān)鍵接口函數(shù)(xvid_global(),xvid_decore()和xvid_encore())實現(xiàn)3.2視頻采集模塊實現(xiàn)方法本系統(tǒng)支持多平臺多操作系統(tǒng),對多個攝像頭采集方法支持,使用工廠模式進(jìn)行封裝,提供了統(tǒng)一攝像頭視頻采集接口。如有新采集方法,只需修改文件videocapturedevicefactory.cpp內(nèi)容即可。先將系統(tǒng)類層次結(jié)構(gòu)列出,下面將具體簡紹實現(xiàn)各個模塊功效第三方類庫。VideoCaptureDeviceVideoCaptureDeviceCvVideoCaptureDeviceV4L1VideoCaptureDeviceQWidgetVideoCaptureViewQMainWindowVMSMainWindowVideoCaptureDeviceFactoryCameraSettingsQDialogQToolButtonThumbButtonXvidVideoCaptureDeviceXvidEncode圖3-1類層次結(jié)構(gòu)視頻采集模塊功效關(guān)鍵經(jīng)過OpenCV第三方庫函數(shù)實現(xiàn),1.初始化從文件中獲取視頻,函數(shù)原型為:CvCapture*cvCreateFileCapture(constchar*filename);filename視頻文件名。函數(shù)cvCreateFileCapture給指定文件中視頻流分配和初始化CvCapture結(jié)構(gòu)。2.初始化從攝像頭中獲取視頻,函數(shù)原型為:CvCapture*cvCreateCameraCapture(intindex);index要使用攝像頭索引。假如只有一個攝像頭或用哪個攝像頭也無所謂,那使用參數(shù)-1應(yīng)該便能夠。函數(shù)cvCreateCameraCapture給從攝像頭視頻流分配和初始化CvCapture結(jié)構(gòu)?,F(xiàn)在在Windows下可使用兩種接口:VideoforWindows(VFW)和MatroxImagingLibrary(MIL);Linux下也有兩種接口:V4L和FireWire。3.釋放以上兩個結(jié)構(gòu),使用函數(shù)cvReleaseCapture,原型為:voidcvReleaseCapture(CvCapture**capture);capture視頻獲取結(jié)構(gòu)指針。函數(shù)cvReleaseCapture釋放由函數(shù)cvCreateFileCapture或cvCreateCameraCapture分配CvCapture結(jié)構(gòu)。4.從攝像頭或視頻文件中抓取幀,函數(shù)原型為:intcvGrabFrame(CvCapture*capture);capture視頻獲取結(jié)構(gòu)。函數(shù)cvGrabFrame從攝像頭或文件中抓取幀。被抓取幀在內(nèi)部被存放。這個函數(shù)目標(biāo)是快速抓取幀,這一點對同時從多個攝像頭讀取數(shù)據(jù)同時是很關(guān)鍵。5.取回由函數(shù)cvGrabFrame抓取圖像,函數(shù)原型為:IplImage*cvRetrieveFrame(CvCapture*capture);capture視頻獲取結(jié)構(gòu)。函數(shù)cvRetrieveFrame返回由函數(shù)cvGrabFrame抓取圖像指針。返回圖像不能夠被用戶釋放或修改。6.從攝像頭抓取并返回一幀函數(shù)原型為:IplImage*cvQueryFrame(CvCapture*capture);capture視頻獲取結(jié)構(gòu)。函數(shù)cvQueryFrame從攝像頭中抓取一幀,然后解壓并返回這一幀。這個函數(shù)僅僅是函數(shù)cvGrabFrame和函數(shù)cvRetrieveFrame在一起調(diào)用組合。返回圖像不能夠被用戶釋放或修改。抓取后,capture被指向下一幀,可用cvSetCaptureProperty調(diào)整capture到適宜幀。3.3編碼壓縮模塊實現(xiàn)方法編碼壓縮模塊經(jīng)過預(yù)定義Xvid編碼方法進(jìn)行壓縮,采取當(dāng)今流行MPEG4文件格式存放。之所以采取MPEG4文件格式是因為MPEG4在1995年7月開始研究,1998年11月被ISO/IEC同意為正式標(biāo)準(zhǔn),它不僅針對一定比特率下視頻編碼,愈加重視系統(tǒng)交互性和靈活性。MPEG4尤其針對低帶寬等條件設(shè)計算法,節(jié)省存放空間,而且圖像質(zhì)量好。對于MPEG4視頻編碼關(guān)鍵來說,XviD多種算法設(shè)計全部有代表性優(yōu)異意義。1.多個編碼模式:除了最原始單重估定碼流壓縮(1-passCBR)之外,XviD提供了包含:單重質(zhì)量模式動態(tài)碼流壓縮、單重量化(Quantization)模式動態(tài)碼流壓縮、和包含外部控制和內(nèi)部控制兩種雙重(2-pass)動態(tài)碼流壓縮模式。2.量化(Quantization)方法和范圍控制量化(Quantization),簡單說就是在編碼時經(jīng)過對時間或空間上相鄰畫面單元進(jìn)行同化、模糊細(xì)節(jié)程度,是對畫面質(zhì)量最基礎(chǔ)控制原因。除了量化方法選擇,XviD還提供了強大對壓縮過程中量化幅度范圍控制。用戶能夠選定壓縮時許可使用量化幅度范圍。3.心理視覺亮度修正除了基礎(chǔ)MPEG4編碼外,XviD還提供了不少附加功效。其中經(jīng)典就是心理視覺亮度修正。這個功效可能經(jīng)過去除肉眼不能分辨亮度信號和亮度差異,來提升壓縮效率。4.畫面優(yōu)化譯碼不僅在編碼上XivD擁有強大功效,在譯碼時畫面優(yōu)化方面,XviD也有很多新建樹。比如"Horizontaldeblock(Y)"能夠柔化水平方向亮度馬賽克;"Horizontaldeblock(C)"能夠柔化水平相色度馬賽克;"Deringing(Y)"能夠柔化環(huán)狀亮度色斑;"Deinging(C)"能夠柔化環(huán)狀色度色斑;"mosquito"能夠降低畫面中蚊狀噪斑。相信很快未來,XviD就能夠把MPEG4編碼優(yōu)勢發(fā)揮到極致,成為網(wǎng)上視頻統(tǒng)計格式盟主。XvidAPI接口定義很清楚,本模塊經(jīng)過其三個關(guān)鍵接口函數(shù)(xvid_global(),xvid_decore()和xvid_encore())實現(xiàn)上述功效。xvid_global()函數(shù)原型:intxvid_global(void*handle,intopt,void*param1,void*param2)功效:1.全局初始化2.獲取XviD和硬件功效信息(全局信息)3.色場空間裝換參數(shù)1.handle,是一個句柄,代表著一個XviDglobal操作實例2.opt,指定要實施操作,對應(yīng)上面三種功效,opt分別可取XVID_GBL_INIT、XVID_GBL_INFO、XVID_GBL_CONVERT這么三個值3.param1,是對應(yīng)操作入口參數(shù)或出口參數(shù)。當(dāng)opt為XVID_GBL_INIT時,param1是入口參數(shù),應(yīng)該為一個xvid_gbl_init_t類型指針;當(dāng)opt為XVID_GBL_INFO時,param1是出口參數(shù),應(yīng)該為一個xvid_gbl_info_t類型指針;當(dāng)opt為XVID_GBL_CONVERT時,param1是入口參數(shù),應(yīng)該為一個xvid_gbl_convert_t類型指針;4.param2,這個參數(shù)將被忽略,通常應(yīng)該設(shè)置為NULL.返回值:成功:返回0失?。悍祷貙?yīng)錯誤碼(<0)xvid_decore()此為Xvid解碼關(guān)鍵函數(shù),其函數(shù)原型為:Intxvid_decore(void*handle,intopt,void*param1,void*param2);參數(shù)1.handle,是一個句柄,用來代表一個Xvid解碼操作實例;2.opt,指定xvid_decore()函數(shù)要實施操作。Opt可取以下值之一;XVID_DEC_CREATE、XVID_DEC_DESTROY、XVID_DEC_DECORE。和xvid_global()函數(shù)不一樣,在實施解碼操作時,必需先創(chuàng)建一個Xvid解碼實例(XVID_DEC_CREATE),然后進(jìn)入解碼循環(huán)(XVID_DEC_DECODE),在解碼循環(huán)完成以后應(yīng)該銷毀一開始創(chuàng)建Xvid解碼實例(XVID_DEC_DESTORY)。3.param1,是一個通用指針類型,具體應(yīng)該指向什么依據(jù)opt參數(shù)取值而定,比如,當(dāng)opt取值為XVID_DECCREATE是,param1應(yīng)該指向一個xvid_dec_create_t類型結(jié)構(gòu)體。對于opt為XVID_DEC_CREATE和XVID_DEC_DECODE情形。param1

全部是必需參數(shù)。對于opt為XVID_DEC_DESTORY情況,param1參數(shù)將被忽略,通常設(shè)置為NULL即可。4.param2,是一個可選參數(shù),只在opt為XVID_DEC_DECODE時候有效,指向一個xvid_dec_stats_t類型結(jié)構(gòu)體。xvid_encore()函數(shù)xvid_encore()是對輸入原始圖像進(jìn)行編碼,輸出符合MPEG4標(biāo)準(zhǔn)要求碼流。和xvid_decore()函數(shù)工作步驟一樣:xvid_encore()函數(shù)使用方法也是先創(chuàng)建一個Xvid編碼實例;然后實施實際編碼操作;最終,在全部解碼過程全部結(jié)束以后,銷毀所創(chuàng)建Xvid實例。不過,和xvid_decore()相比,xvid_encore()函數(shù)使用要復(fù)雜部分,關(guān)鍵原因是編碼過程參數(shù)設(shè)置要麻煩部分,xvid_encore()函數(shù)原型定義以下:intxvid_encore(void*handle,intopt,void*param1,void*paeam2);參數(shù)1.handle,編碼實例句柄,用來代表一個xvid編碼實例;2.opt,指定xvid_encore()函數(shù)要實施操作。Opt可取以下值之一;XVID_ENC_CREATE、XVID_ENC_DESTORY、XVID_ENC_ENCORE。在實施編碼操作時,必需先創(chuàng)建一個XviD編碼實例(XVID_ENC_CREATE),然后進(jìn)入編碼循環(huán)(XVID_ENC_ENCORE),在編碼循環(huán)完成以后應(yīng)該銷毀所創(chuàng)建XviD編碼實例(XVID_ENC_DESTORY)。3.param1,是一個通用指針類型,具體應(yīng)該指向什么依據(jù)opt參數(shù)取值而定。當(dāng)opt值為XVID_ENC_CREATE時,param1應(yīng)該指向一個xvid_enc_create_t類型結(jié)構(gòu)體。對于opt為XVID_ENC_CREATE和XVID_ENC_ENODE情形,param1全部是必需參數(shù)。對于opt為XVID_ENC_DESTORY情況,param1應(yīng)該為NULL.4.Param2,是一個可選參數(shù),只在opt為XVID_ENC_ENCODE時候有效,指向一個xvid_dec_stats_t類型結(jié)構(gòu)體。返回值:成功:對于opt為XVID_ENC_CREATE和XVID_ENC_DESTORY情形,xvid_encore()函數(shù)返回0表示成功,對于opt為XVID_ENC_ENCODE情形,xvid_encore()函數(shù)返回輸出字節(jié)數(shù)表示實施成功;失敗:對于opt為XVID_ENC_CREATE和XVID_ENC_DESTORY情形,xvid_encore()函數(shù)返回小于0錯誤碼表示實施失敗,對于opt為XVID_ENC_ENCODE情形,xvid_encore()函數(shù)返回0表示該幀不應(yīng)該被寫入。3.4用戶界面圖3-1程序主界面實現(xiàn)系統(tǒng)全部功效包含視頻錄制,拍照,照片參數(shù)設(shè)置,和視頻回放主菜單操作說明:文件打開:打開已錄制MPEG4視頻文件并播放設(shè)置選擇:參數(shù)設(shè)置圖像采集拍照:拍照圖像采集刪除:刪除所選中圖片視頻錄制開始:開始錄制MPEG4視頻視頻錄制結(jié)束:停止錄制MPEG4視頻圖3-2設(shè)置對話框可由用戶自行設(shè)置存放路徑,相片大小及質(zhì)量操作菜單說明:存放路徑:相冊存放路徑尺寸:相片拍照大小質(zhì)量:相片質(zhì)量(JPEG格式)第4章具體設(shè)計本章節(jié)任務(wù)是在概要設(shè)計基礎(chǔ)上設(shè)計模塊程序步驟、算法和數(shù)據(jù)結(jié)構(gòu),和具體實現(xiàn)過程。4.1程序描述整個系統(tǒng)用戶界面是在Qt環(huán)境下設(shè)計實現(xiàn),外部經(jīng)過攝像頭采集信息,內(nèi)部經(jīng)過部分對象模型實現(xiàn)通信和事件觸發(fā)功效,這部分功效實現(xiàn)依靠于Qt部分特征,包含:1.一個相關(guān)無縫對象通訊被稱為信號和槽很強大機制2.可查詢和可設(shè)計屬性3.強大事件和事件過濾器4.依據(jù)上下文進(jìn)行國際化字符串翻譯其中最關(guān)鍵是信號和槽機制,信號和槽用于對象間通訊。信號/槽機制是Qt一個中心特征而且是Qt和其它工具包最不相同部分。在圖形用戶界面編程中,我們常常期望一個窗口部件一個改變被通知給另一個窗口部件。更通常地,我們期望任何一類對象能夠和其它對象進(jìn)行通訊。比如,假如我們正在解析一個XML文件,當(dāng)我們碰到一個新標(biāo)簽時,我們可能期望通知列表視圖我們正在用來表示XML文件結(jié)構(gòu)。此時我們使用信號和槽。當(dāng)一個特定事件發(fā)生時候,一個信號被發(fā)射。Qt窗口部件有很多預(yù)定義信號,不過我們總是能夠經(jīng)過繼承來加入我們自己信號。槽就是一個能夠被調(diào)用處理特定信號函數(shù)。Qt窗口部件又很多預(yù)定義槽,不過通常習(xí)慣是你能夠加入自己槽,這么你就能夠處理你所感愛好信號。4.2程序?qū)崿F(xiàn)這部分關(guān)鍵描述了系統(tǒng)部分功效具體實現(xiàn)方法。4.2.1取得攝像頭驅(qū)動和版本號取得視頻獲取結(jié)構(gòu)屬性,函數(shù)原型為:doublecvGetCaptureProperty(CvCapture*capture,intproperty_id);capture視頻獲取結(jié)構(gòu)。property_id屬性標(biāo)識。能夠是下面之一:CV_CAP_PROP_POS_MSEC-影片現(xiàn)在位置,為毫秒數(shù)或視頻獲取時間戳CV_CAP_PROP_POS_FRAMES-將被下一步解壓/獲取幀索引,以0為起點CV_CAP_PROP_POS_AVI_RATIO-視頻文件相對位置(0-影片開始,1-影片結(jié)尾)CV_CAP_PROP_FRAME_WIDTH-視頻流中幀寬度CV_CAP_PROP_FRAME_HEIGHT-視頻流中幀高度CV_CAP_PROP_FPS-幀率CV_CAP_PROP_FOURCC-表示codec四個字符CV_CAP_PROP_FRAME_COUNT-視頻文件中幀總數(shù)函數(shù)cvGetCaptureProperty取得攝像頭指定屬性,或視頻文件指定屬性。4.2.2顯示圖像在用戶端1.圖像載入函數(shù)函數(shù)cvLoadImage載入指定圖像文件,并返回指向該文件IplImage指針。函數(shù)支持bmp、jpg、png、tiff等格式圖像。其函數(shù)原型以下:IplImage*cvLoadImage(constchar*filename,intiscolor);其中,filename是待載入圖像名稱,包含圖像擴展名;iscolor是一個輔助參數(shù)項,可選正數(shù)、零和負(fù)數(shù)三種值,正數(shù)表示作為三通道圖像載入,零表示該圖像作為單通道圖像,負(fù)數(shù)表示載入圖像通道數(shù)由圖像文件本身決定。2.圖像顯示函數(shù)函數(shù)cvShowImage是在指定窗口中顯示圖像,其函數(shù)原型以下:voidcvShowImage(constchar*name,constCvArr*image);其中,name是窗口名稱,image是圖像類型指針,通常是IplImage指針。4.2.3初始化壓縮格式并開始壓縮先創(chuàng)建一個Xvid編碼實例,即初始化壓縮格式,然后實施實際編碼操作;創(chuàng)建解碼實例時,應(yīng)該將xvid_encore()函數(shù)param1參數(shù)設(shè)為一個xvid_enc_create_t類型結(jié)構(gòu)體地址。實例定義以下:xvid_enc_create_txvid_enc_create;intxerr;memset(&xvid_enc_create,0,sizeof(xvid_enc_create));xvid_enc_create.version=XVID_VERSION;xvid_enc_create.width=width;xvid_enc_create.height=height;xvid_enc_file=XVID_PROFILE_AS_L4;xvid_enc_create.fincr=1;xvid_enc_create.fbase=10;xerr=xvid_encore(0,XVID_ENC_CREATE,&xvid_enc_create,0);enc_handle=xvid_enc_create.handle;returnxerr;在創(chuàng)建了XviD解碼實例以后,緊接著事情就是進(jìn)行真正編碼工作了,這也經(jīng)過前面簡紹xvid_encore()函數(shù)完成了。為了完成編碼過程,xvid_encore()函數(shù)param1參數(shù)應(yīng)該設(shè)定為一個指向xvid_enc_frame_t類型結(jié)構(gòu)體,可選參數(shù)param2能夠指向一個xvid_enc_stats_t類型結(jié)構(gòu)體。xvid_encore()函數(shù)第一個參數(shù)handle通常應(yīng)該設(shè)置為創(chuàng)建XviD編碼實例以后得到句柄,而opt參數(shù)應(yīng)該指定為XVID_ENC_ENCODE()。xvid_enc_frame_txvid_enc_frame;xvid_enc_stats_txvid_enc_stats;memset(&xvid_enc_frame,0,sizeof(xvid_enc_frame));xvid_enc_frame.version=XVID_VERSION;memset(&xvid_enc_stats,0,sizeof(xvid_enc_stats));xvid_enc_stats.version=XVID_VERSION;xvid_enc_frame.bitstream=bitstream;xvid_enc_frame.length=-1;xvid_enc_frame.input.plane[0]=image;xvid_enc_frame.input.csp=XVID_CSP_BGRA;xvid_enc_frame.input.stride[0]=width*4;xvid_enc_frame.input.csp=0;xvid_enc_frame.vol_flags=0;xvid_enc_frame.vop_flags=0;xvid_enc_frame.type=XVID_TYPE_AUTO;xvid_enc_frame.quant=0;xvid_enc_frame.motion=0;xvid_encore(enc_handle,XVID_ENC_ENCODE,&xvid_enc_frame,&xvid_enc_stats);在上述代碼中,image中保留是輸入圖像,bitstream用于保留編碼后碼流,大部分xvid_enc_frame中組員全部采取默認(rèn)設(shè)置,實際上設(shè)置工作集中在設(shè)定輸入圖像和輸出流上。設(shè)置好xvid_enc_frame以后,調(diào)用xvid_encore()函數(shù),其中第一個參數(shù)enc_handle是創(chuàng)建XviD編碼實例后返回實例句柄,編碼狀態(tài)經(jīng)過xvid_enc_stats返回。4.2.4回調(diào)函數(shù)所謂回調(diào)函數(shù)就是根據(jù)一定形式由你定義并編寫實現(xiàn)內(nèi)容,當(dāng)發(fā)生某種事件時,而由系統(tǒng)或其它函數(shù)來調(diào)用函數(shù)。使用回調(diào)函數(shù)實際上就是在調(diào)用某個函數(shù)(通常是API函數(shù))時,將自己編寫一個函數(shù)(也就是回調(diào)函數(shù))地址作為參數(shù)傳輸給那個函數(shù)。而那個函數(shù)在需要時候,也就是某種事情發(fā)生時候,利用傳輸函數(shù)地址調(diào)用回調(diào)函數(shù),這時你能夠利用這個機會在回調(diào)函數(shù)中處理消息或完成一定操作?;卣{(diào)函數(shù)只能是全局函數(shù),或是靜態(tài)函數(shù),因為這個函數(shù)只是在這個類中使用,所以為了維護(hù)類完整性,我們用類靜態(tài)組員函數(shù)來做回調(diào)函數(shù)?;卣{(diào)函數(shù)是一個經(jīng)過函數(shù)指針調(diào)用函數(shù)。假如把函數(shù)指針(地址)作為參數(shù)傳輸給另一個函數(shù),當(dāng)這個指針被用為調(diào)用它所指向函數(shù)時,我們就說這是回調(diào)函數(shù)?;卣{(diào)函數(shù)能夠把調(diào)用者和被調(diào)用者分開,調(diào)用者不關(guān)心誰是被調(diào)用者,全部它需知道,只是存在一個含有某種特定原型、一些限制條件(如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論