趙傳躍,彭 宏
(浙江工業(yè)大學(xué)信息學(xué)院,浙江杭州310023)
DVR 系統(tǒng)中視頻采集壓縮的軟件設(shè)計(jì)
趙傳躍,彭 宏
(浙江工業(yè)大學(xué)信息學(xué)院,浙江杭州310023)
視頻采集和壓縮是數(shù)字錄像機(jī)系統(tǒng)的核心內(nèi)容,其效果直接影響整個(gè)系統(tǒng)的性能。該文介紹了基于GM8180+TW 2835的Linux嵌入式DVR系統(tǒng)的硬件框架,提出了切實(shí)可行的視頻采集壓縮方案。對嵌入式DVR的開發(fā)有一定的參考價(jià)值。
嵌入式;數(shù)字錄像機(jī);視頻采集;視頻壓縮
DVR(數(shù)字錄像機(jī),DigitalVideo Record)監(jiān)控管理系統(tǒng)集先進(jìn)的計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)和通信技術(shù)于一體,不僅能夠完全實(shí)現(xiàn)傳統(tǒng)模擬設(shè)備的功能,還大大增強(qiáng)了系統(tǒng)的穩(wěn)定性和擴(kuò)展能力,提高了圖像顯示的清晰度和數(shù)據(jù)安全性,更為重要的是,它利用當(dāng)前流行的H.264壓縮技術(shù)可以將大量的錄像數(shù)據(jù)保存,為遠(yuǎn)程網(wǎng)絡(luò)瀏覽、錄像查詢回放提供了方便[1]。本文介紹了嵌入式DVR系統(tǒng)的硬件框架,視頻數(shù)據(jù)的格式和流向。提出可行的視頻采集壓縮軟件方案,實(shí)際測試的結(jié)果證明,本系統(tǒng)的采集壓縮效果很好,回放出來的圖像畫面清晰。
DVR系統(tǒng)硬件主要由視頻采集模塊、視頻處理模塊和存儲(chǔ)模塊三部分組成,如圖1所示。
圖1 DVR系統(tǒng)的硬件框架圖
模擬視頻信號從攝像頭采集進(jìn)來,經(jīng)過視頻采集模塊的處理后以標(biāo)準(zhǔn)BT.656格式的數(shù)字信號輸入到視頻處理模塊中。視頻處理模塊捕捉到一幀的視頻數(shù)據(jù)后,通過內(nèi)部的壓縮模塊將視頻幀壓縮成一幀H.264格式的視頻幀,然后將該幀數(shù)據(jù)輸入到存儲(chǔ)模塊,由存儲(chǔ)模塊將數(shù)據(jù)存放到相應(yīng)位置,這樣就完成了一幀數(shù)據(jù)的處理過程。
視頻采集模塊:主要的功能是接收4路攝像頭的模擬視頻數(shù)據(jù),經(jīng)過模數(shù)轉(zhuǎn)換后形成4路D1大小的視頻流,然后通過特殊的算法處理,將4路D1大小的視頻數(shù)據(jù)合成為1路D1大小的視頻數(shù)據(jù),即一個(gè)D1的視頻畫面中呈現(xiàn)出4個(gè)CIF大小的視頻畫面。其中關(guān)鍵的視頻采集芯片為TW2835。
視頻處理模塊:主要的功能是能同時(shí)捕捉兩路D1大小的視頻流,按照H.264標(biāo)準(zhǔn)壓縮不同格式大小的視頻數(shù)據(jù),并向存儲(chǔ)模塊寫入數(shù)據(jù)。其中關(guān)鍵的視頻處理芯片是GM 8180。存儲(chǔ)模塊:主要的功能是將視頻文件保存到大容量硬盤中,建立有效的文件列表,保證能隨時(shí)找到需要回放的視頻文件。
DVR系統(tǒng)主要由視頻采集模塊和視頻處理模塊構(gòu)成。該系統(tǒng)的視頻采集模塊選擇了Techwell公司的TW 2835芯片,而視頻處理模塊選擇了臺(tái)灣的FARADAY技術(shù)公司設(shè)計(jì)的GM8180芯片,其中CPU就集成在該模塊中。TW2835芯片是Techwell公司近年來新推出的一款4信道視頻和音頻控制器。它包括4個(gè)高質(zhì)量的NTSC/PAL視頻解碼器、4個(gè)音頻模擬數(shù)字轉(zhuǎn)換器、1個(gè)音頻復(fù)用器、雙色顯示控制器、雙視頻解碼器以及一個(gè)先進(jìn)的OSD[1]。主要實(shí)現(xiàn)了將4路視頻輸入合成為1路視頻輸出的功能,能夠滿足DVR在視頻采集端的要求。GM 8180是高度集成的編解碼系統(tǒng)單芯片,支持H.264、MPEG-4以及JPEG編解碼,可以應(yīng)用于視頻分析、對象偵測、目標(biāo)應(yīng)用鎖定、網(wǎng)絡(luò)串流媒體以及網(wǎng)絡(luò)監(jiān)控等[2]。GM 8180集成各種存儲(chǔ)方式接口和圖形輸出接口。最重要的亮點(diǎn)是該系統(tǒng)支持高清影像傳輸接口,集成H.264硬件編解碼,在高分辨率下的H.264壓縮效能可以達(dá)到30幀。H.264壓縮比MEPG-4節(jié)省了1/3的頻寬,能夠降低頻寬以及在儲(chǔ)存上所需花費(fèi)的成本[3]。CPU采用的是FA626,FA626是GM 8180的控制核心,是智原科技新近推出的ARM 9芯片。FA626主要是針對下一代網(wǎng)絡(luò)、對媒體和網(wǎng)絡(luò)應(yīng)用所設(shè)計(jì),采用0.13μm工藝,時(shí)鐘速度可達(dá)到533MHz,執(zhí)行速度為650MIPS,包含4向32KB的指令快取以及數(shù)據(jù)快取。
CPU和各模塊都掛載在AHB總線上,通過AHB控制器控制,如圖2所示:
圖2 CPU和各模塊連接圖
Linux操作系統(tǒng)作為一種多任務(wù)、穩(wěn)定可靠、內(nèi)核可裁剪的系統(tǒng)可以運(yùn)行在多種硬件平臺(tái)上,是開發(fā)嵌入式軟硬件產(chǎn)品的優(yōu)秀平臺(tái)。裁剪和優(yōu)化后的Linux體積更小,性能更加穩(wěn)定,而且源代碼本身是免費(fèi)的。這大大減少了開發(fā)商的成本,使其更具市場競爭力。同時(shí),由于遍布全球的眾多Linux愛好者又能給予Linux開發(fā)者強(qiáng)大的技術(shù)支持,所以眾多商家紛紛轉(zhuǎn)向嵌入式Linux的開發(fā)。本系統(tǒng)也選擇了嵌入式linux操作系統(tǒng),內(nèi)核版本采用的是Linux2.6.14。
本系統(tǒng)要實(shí)現(xiàn)的功能有:(1)實(shí)現(xiàn)4路25幀/s的采集用于本地存儲(chǔ),其中3路CIF、1路D1;(2)實(shí)現(xiàn)1路6幀/s的采集用于網(wǎng)絡(luò)傳輸,格式為QCIF。本系統(tǒng)所用的視頻采集芯片TW2835支持4路模擬輸入和4路數(shù)字輸入,視頻數(shù)據(jù)處理芯片GM8180采用硬件壓縮,最大能同時(shí)支持2路D1格式的壓縮,在數(shù)據(jù)處理能力等方面完全可以滿足系統(tǒng)的需求。
首先要初始化硬件,主要是初始化視頻采集芯片TW2835,按需求設(shè)置寄存器。創(chuàng)建3個(gè)線程,分別用于一路D1、三路CIF、一路QCIF圖像的采集和壓縮。其中D1和CIF數(shù)據(jù)用于本地存儲(chǔ),壓縮完寫入文件存儲(chǔ),QCIF數(shù)據(jù)用于網(wǎng)絡(luò)傳輸,壓縮后放到共享內(nèi)存中,用于網(wǎng)絡(luò)發(fā)送進(jìn)程來讀取視頻數(shù)據(jù)并發(fā)送到客戶端。主程序流程如圖3所示:
圖3 程序流程框圖
視頻采集和壓縮線程是本系統(tǒng)軟件的核心部分,其流程如圖4所示:
圖4 視頻采集和壓縮線程的流程圖
(1)視頻采集
視頻采集主要包括3部分:設(shè)備初始化、內(nèi)存映射、視頻采集。
設(shè)備初始化:首先打開視頻設(shè)備,GM8180能同時(shí)處理兩路視頻數(shù)據(jù),所以有兩個(gè)設(shè)備文件分別是/dev/video1和/dev/video2。采用系統(tǒng)調(diào)用函數(shù)fd=open(”/dev/video*”,O_RDWR),fd是設(shè)備打開后返回的文件描述符(打開失敗則返回-1),以后的ioctl函數(shù)就是使用這個(gè)文件描述符對視頻設(shè)備進(jìn)行相應(yīng)的操作的。接著調(diào)用ioctl(fd,VIDIOCGCAP,&capability)函數(shù)讀取有關(guān)攝像頭的信息[4]。此函數(shù)成功返回后,系統(tǒng)將這些信息從內(nèi)核空間拷貝到用戶程序的capability各成員變量中。應(yīng)用程序能了解攝像頭的具體參數(shù)并允許進(jìn)行修改。內(nèi)存映射:首先調(diào)用ioctl(i_video_fd,VIDIOCGMBUF,&gb_buffers)函數(shù)獲取攝像頭存儲(chǔ)緩沖區(qū)的幀信息[4]。接著調(diào)用mmap()函數(shù)把視頻設(shè)備對應(yīng)的設(shè)備文件映射到內(nèi)存區(qū),該映射內(nèi)容可讀寫并可在進(jìn)程間共享。視頻采集:首先調(diào)用ioctl(i_video_fd,VIDIOCMCAPTURE,&mmap)來捕獲視頻幀,接著調(diào)用ioctl(i_Video_fd,VIDIOCSYNC,&frame)函數(shù)來判斷該幀圖像是否截取完畢。之后就可以對原始的圖像數(shù)據(jù)進(jìn)行處理了。
(2)視頻壓縮
初始化編碼模塊:H.264壓縮模塊在設(shè)備中的設(shè)備文件名為/dev/f264enc。首先打開H.264壓縮設(shè)備,將這些參數(shù)寫入到ENC_DEV格式的結(jié)構(gòu)體中,然后調(diào)用驅(qū)動(dòng)命令FAVC_IOCTL_ENCODE_INIT初始化H.264壓縮設(shè)備[5]。開始壓縮:合理初始化壓縮模塊的各個(gè)參數(shù)之后,直接調(diào)用驅(qū)動(dòng)命令FAVC_IOCTL_ENCODE_FRAME進(jìn)行壓縮。
回放壓縮后圖像的效果如圖5所示,測試結(jié)果證明,上述的采集和壓縮程序?qū)崿F(xiàn)了一路D1、三路CIF和一路QCIF格式的數(shù)據(jù)的采集和壓縮,并且效果良好。
圖5 效果圖
[1]付英華,傅爾勝.DVR音視頻壓縮卡及其Linux驅(qū)動(dòng)[J].陜西科技大學(xué)學(xué)報(bào),2005,10(2):25-27.
[2]吳才章.基于ARM的圖像采集與顯示系統(tǒng)設(shè)計(jì)[J].自動(dòng)化技術(shù)與應(yīng)用,2006,29(3):118-122.
[3]張杰.視頻編碼新標(biāo)準(zhǔn)H.264/AVC中的重要技術(shù)[J].現(xiàn)代電子技術(shù),2004,8(6):104-106.
[4]Techwell.Techwell TW2835(4 Channel Video and Audio Controller For Secyrity Application)datesheet[EB/CD].http://www.techwell.com:Techwell,Inc,2004-01-03.
[5]劉偉平,毛玉良,潘純,等.嵌入式Linux下驅(qū)動(dòng)程序的開發(fā)[J].航空精密制造技術(shù),2003,39(3):23-25.
Software Design and Implementation of Video Capture and Compression in Digital Video Record ZHAO Chuan-yue,PENG Hong
(Collegeof Communication Engineering,Zhejiang University of Technology,Hangzhou Zhejiang310023,China)
The coreof digitalvideo record system is video capture and compression thatwould affect thesystem.In this paper,we demonstrate a feasiblemethod for video capture and compression,basing on theplatform ofGM8180 and TW2835.Have some reference value on the development of embedded DVR.
embedded;DVR;video capture;video compression
TN401
A
1001-9146(2010)05-0145-04
2010-07-20
趙傳躍(1984-),男,安徽宿州人,在讀研究生,寬帶接入網(wǎng).