基于網(wǎng)絡和H.264的視頻監(jiān)控系統(tǒng)設計
隨著公眾安全防護意識的越來越強,視頻安全監(jiān)控系統(tǒng)因其直觀,便利,信息內(nèi)容含量豐富等特征而被廣泛應用。市面上的監(jiān)控設施大部分采用網(wǎng)絡作為傳輸媒介。本文在網(wǎng)絡通信技術的基礎上設計了一種視頻監(jiān)控系統(tǒng)方案,該系統(tǒng)由前端視頻服務器終端外加網(wǎng)絡絡和視頻監(jiān)控中心3部分組成。視頻服務器端使用攝像頭記錄視頻數(shù)據(jù),經(jīng)過DM643 7DSP進行H.264硬件編碼壓縮,RTP封包后經(jīng)網(wǎng)絡傳輸。當視頻監(jiān)控中心接收到網(wǎng)絡傳來的RTP封包后,將其傳輸給監(jiān)控中心的上位機進行軟件解碼處理,最后實時顯示視頻。網(wǎng)絡視頻監(jiān)控的顯著特征就是具有廣泛的分布范圍,能夠便捷地在居民住宅區(qū),工廠企業(yè),大型商場,醫(yī)院等場所設置,組建網(wǎng)絡化監(jiān)控系統(tǒng)。
1 系統(tǒng)總體設計
系統(tǒng)總體結(jié)構(gòu)如圖1所示。
硬件設計部分有包含視頻記錄模塊和DM6437DSP模塊。其中,DM6437 DSP模塊為此硬件系統(tǒng)設計的關鍵,這個模塊承擔整個嵌入式系統(tǒng)的控制與調(diào)度任務。通電后,DM6437 DSP自動引導有關的外圍硬件設備驅(qū)動,用于控制視頻記錄模塊實時獲取視頻數(shù)據(jù)流,并對錄制的視頻數(shù)據(jù)以網(wǎng)絡抽象層單元的形式進行H.264硬件編碼操作,然后對其進行RTP封包操作并通過RJ45網(wǎng)絡接口傳送至網(wǎng)絡進行傳輸。軟件設計工程可分解為前端視頻服務器軟件開發(fā)和視頻監(jiān)控中心軟件開發(fā)兩部分。前端視頻服務器軟件開發(fā)設計包括建立CCS開發(fā)環(huán)境,在CCS下編寫攝像頭和網(wǎng)卡等有關外圍設備驅(qū)動程序,以及編寫視頻數(shù)據(jù)記錄和H.264壓縮編碼代碼,編寫通信代碼模塊等。監(jiān)控中心的軟件設計工程包含網(wǎng)絡數(shù)據(jù)的接收和解包模塊代碼,視頻數(shù)據(jù)的解碼模塊代碼以及界面顯示代碼。系統(tǒng)軟件流程如圖2所示。
2 系統(tǒng)硬件設計
DM6437 DSP模塊硬件電路設計結(jié)構(gòu)如圖3所示。
系統(tǒng)主控芯片采用TT公司基于第三代高性能VelociTI超長指令字架構(gòu)的DM6437 DSP,這是一種功耗低,性價比高的定點DSP,擁有內(nèi)部存儲資源和強大的視頻處理能力。DM64 37另外增加了視頻處理模塊以方便視頻前端的預處理和視頻后端的顯示,同時也減少了DSP核心的運算量。NAND Flash使用存儲空間為512 MB的K9F2G08UOM模塊,用于存儲啟動文件、軟件內(nèi)核、根文件系統(tǒng)以及應用程序。SDRAM采用兩片存儲空間為128 MB的K4X51163PC芯片,該芯片工作電壓范圍為1.8~3.3 V,用于存儲和讀取系統(tǒng)運行時的程序和程序運行時產(chǎn)生的數(shù)據(jù)。網(wǎng)絡卡芯片使用Davicom公司設計的10/100 Mbit·s-1支持網(wǎng)速自適應的網(wǎng)絡卡芯片DM9000AE,因此網(wǎng)絡物理層和數(shù)據(jù)鏈路層的通信得以實現(xiàn)。
3 系統(tǒng)軟件設計
系統(tǒng)軟件設計按功能劃分為前端視頻服務器終端軟件設計以及視頻監(jiān)控中心軟件設計兩部分。
3.1 視頻服務器終端軟件設計
視頻服務器終端的軟件系統(tǒng)設計主要包含微軟Windows XP系統(tǒng)配置和應用程序開發(fā)組成。該系統(tǒng)使用Windows XP作為硬件平臺的操作系統(tǒng),借助對核心程序的調(diào)整去掉與系統(tǒng)不相關的外圍硬件驅(qū)動,并安裝了USB攝像頭驅(qū)動程序和DM9000AE網(wǎng)卡驅(qū)動程序等,共同組成應用程序正常運行所需要的軟件操作環(huán)境。應用程序的設計是軟件模塊設計的關鍵,共包含視頻數(shù)據(jù)的記錄、H.264硬件編碼壓縮和RTP協(xié)議打包發(fā)送3個模塊。
3.1.1 視頻數(shù)據(jù)采集
在Windows操作系統(tǒng)中,TI公司的DSP軟件開發(fā)工具CCS為用戶空間提供了一套完整的接口函數(shù)API,通過調(diào)用這些接口函數(shù)可對視頻記錄設備進行打開、采集和關閉等操作,視頻采集流程如圖4所示。在進行其他操作前,應先調(diào)用接口函數(shù)open()以阻塞方式啟動攝像頭設備,設備名稱為“video0”。然后借助ioctl()函數(shù)調(diào)整視頻采集參數(shù),包括圖像尺寸、幀率、視頻格式等,例如將視頻格式設置為YUV422。CCS支持兩類視頻數(shù)據(jù)記錄方式:一種是通過使用read()函數(shù)直接讀取攝像頭;另一種是通過調(diào)用內(nèi)存映射函數(shù)mmap()將采集到的視頻數(shù)據(jù)存儲到對應的用戶緩沖區(qū)再進行讀取。第二種更加快捷便利,所以本文采用此方式讀取記錄視頻數(shù)據(jù)。記錄到的視頻數(shù)據(jù)為YUV422格式,但H.264編碼器匹配的輸入視頻格式卻為YUV420P,所以為了將已經(jīng)記錄的視頻數(shù)據(jù)傳送至H.264編碼器進行編碼,還需將YUV422格式的視頻數(shù)據(jù)轉(zhuǎn)換為YUV420P格式。視頻格式的轉(zhuǎn)換過程使用FFmpeg開源庫提供的API函數(shù)完成。
3.1.2 H.264編碼
DM6437 DSP內(nèi)部集成有多媒體硬件編解碼模塊,該模塊支持MPEG-4,H.263以及H.264編解碼方案,具備優(yōu)異的編解碼性能。該方案通過該多媒體硬件編解碼模塊模塊進行H.264硬件編碼。當操作系統(tǒng)加載了多媒體硬件編解碼模塊驅(qū)動后,應用程序主進程可以調(diào)用多媒體硬件編解碼模塊函數(shù)接口實現(xiàn)視頻數(shù)據(jù)的H.264硬件編碼。
3.1.3 RTP協(xié)議打包及傳輸
經(jīng)H.264編碼后的視頻數(shù)據(jù)通常分為兩個不同的層:視頻編碼層(Video Coding Layer,VCL)和網(wǎng)絡適配層(Network Adaptation Layer,NAL)。這兩個層各有分工,視頻編碼層主要功能是以H.264規(guī)定的編碼方式表示視頻信息,而網(wǎng)絡適配層則負責根據(jù)網(wǎng)絡實際情況對數(shù)據(jù)進行封包,目的是使視頻編碼層數(shù)據(jù)的格式方便網(wǎng)絡傳輸。根據(jù)RFC3984,H.2 64視頻流的封包模式可有以下3種形式:單一網(wǎng)絡適配層單元模式,組合封包模式以及分片封包模式。(1)對于長度
3.2 監(jiān)控中心軟件設計
監(jiān)控中心系統(tǒng)主要負責H.264編碼后的視頻數(shù)據(jù)流接收,軟件解碼以及界面顯示。解碼后的數(shù)據(jù)通過網(wǎng)絡接收,使用UDP Socket編程;而H.264視頻流的軟件解碼使用開源的FFmpeg函數(shù)編寫實現(xiàn),界面顯示通過使用開源跨平臺的多媒體庫,即SDL(Simple DirectMedie Layer)實現(xiàn)。監(jiān)控中心軟件流程如圖5所示。
4 系統(tǒng)測試及分析
在實驗室內(nèi)進行系統(tǒng)綜合測試,在視頻監(jiān)控前端采用設定的視頻服務器終端,對應的監(jiān)控主機使用臺式PC機。監(jiān)控前端設置的視頻記錄像素分辨率為1 024×768,視頻傳輸速率為30 Sample·s-1,按順序先后運行服務器端程序以及客戶端程序。記錄到的視頻監(jiān)控系統(tǒng)運行效果如圖6所示,截圖畫面顯示視頻播放流暢、清晰度高,較好地滿足了系統(tǒng)設計要求。
5 結(jié)束語
結(jié)合網(wǎng)絡通信技術和流媒體技術,基于DM6437DSP和嵌入式Windows操作系統(tǒng),設計并實現(xiàn)了一種可通過網(wǎng)絡傳輸?shù)囊曨l監(jiān)控系統(tǒng),并將此方案在實驗室內(nèi)進行了網(wǎng)絡驗證。實驗結(jié)果表明,這種方案工作正常,較好地滿足了設計要求。