摘要:隨著數(shù)字化時(shí)代的來臨,遠(yuǎn)程監(jiān)控管理已成為一種潛在的趨勢。本文基于三星S3C2440嵌入式ARM9微處理器,結(jié)合嵌入式Linux開源系統(tǒng)把視頻圖像數(shù)據(jù)使用H.264視頻壓縮算法進(jìn)行壓縮。基于以太網(wǎng)通信,通過TCP/IP協(xié)議的socket編程,采用C/S(Client/Server)結(jié)構(gòu)實(shí)現(xiàn)視頻遠(yuǎn)程實(shí)時(shí)傳輸。
關(guān)鍵詞:視頻采集;嵌入式;H.264算法;遠(yuǎn)程監(jiān)控
中圖分類號(hào):TP303 文獻(xiàn)標(biāo)識(shí)碼:A
1引言
近幾年來視頻監(jiān)控領(lǐng)域在飛速的發(fā)展,廣泛應(yīng)用在銀行、校園、交通管理系統(tǒng)等個(gè)個(gè)領(lǐng)域,對(duì)建設(shè)良好的社會(huì)治安環(huán)境起著重要的作用。但是目前許多領(lǐng)域的視頻監(jiān)控采集系統(tǒng)都是基于同軸電纜架設(shè),由于監(jiān)控系統(tǒng)鋪設(shè)范圍廣,架設(shè)結(jié)構(gòu)復(fù)雜,施工工程浩大,使視頻監(jiān)運(yùn)用控成本大大提高,嚴(yán)重限制了視頻監(jiān)控的推廣與發(fā)展。隨著嵌入式與網(wǎng)絡(luò)技術(shù)應(yīng)用的發(fā)展,視頻監(jiān)控系統(tǒng)向著前端一體化、視頻數(shù)字化、監(jiān)控網(wǎng)絡(luò)化、系統(tǒng)集成化方向發(fā)展,而數(shù)字化是網(wǎng)絡(luò)化的前提,網(wǎng)絡(luò)化又是系統(tǒng)集成化的基礎(chǔ)[1]。因而誕生出各色各樣網(wǎng)絡(luò)攝像機(jī)等遠(yuǎn)程視頻監(jiān)控采集設(shè)備,由于其安裝方便、性價(jià)比高、靈活性強(qiáng)等特點(diǎn),被廣泛的運(yùn)用于各行各業(yè)。本嵌入式遠(yuǎn)程視頻監(jiān)控采集系統(tǒng)正是以ARM9微處理器為核心。由攝像機(jī)經(jīng)過H.264視頻壓縮算法采集視頻數(shù)據(jù),通過網(wǎng)卡,把圖像數(shù)據(jù)經(jīng)過TCP/IP標(biāo)準(zhǔn)協(xié)議,使用socket構(gòu)造編程,傳送到客戶端。通過這種方式網(wǎng)絡(luò)中心控制器以及多個(gè)前端網(wǎng)絡(luò)視頻監(jiān)控器就組成了一個(gè)聯(lián)動(dòng)的物聯(lián)網(wǎng)傳感網(wǎng)絡(luò)[2]。從而實(shí)現(xiàn)遠(yuǎn)程視頻監(jiān)控采集,并且具有開發(fā)簡單,使用方便,性能優(yōu)異等特點(diǎn)。
2系統(tǒng)設(shè)計(jì)與硬件平臺(tái)介紹
2.1控制核心簡介
系統(tǒng)采用Samsung公司的S3C2440A作為核心處理器,使用ARM公司ARM920T內(nèi)核,最高主頻可達(dá)533MHz。S3C2440[3]是一款內(nèi)部集成了ARM公司ARM920T內(nèi)核的16/32位RISC嵌入式微處理器,具有16KB指令Cache和16KB數(shù)據(jù)Cache。結(jié)合嵌入式Linux開源操作系,憑借其出色的MMU(存儲(chǔ)器管理單元)與多任務(wù)處理技術(shù),確保了整個(gè)大系統(tǒng)的穩(wěn)定運(yùn)行,統(tǒng)構(gòu)成一個(gè)穩(wěn)定低價(jià),低功耗,高性能的核心控制核心。
2.2系統(tǒng)構(gòu)成
系統(tǒng)由視頻數(shù)據(jù)采集模塊,數(shù)字圖像壓縮模塊,以太網(wǎng)控制模塊,數(shù)據(jù)收發(fā)模塊等四大模塊作為系統(tǒng)核心,視頻數(shù)據(jù)采集模塊通過Linux操作系統(tǒng)實(shí)現(xiàn)攝像頭的驅(qū)動(dòng),實(shí)現(xiàn)視頻圖像采集。數(shù)字圖像壓縮模塊主要由H.264視頻編碼壓縮算法進(jìn)行管理與控制,由兩個(gè)標(biāo)準(zhǔn)ITU-T和ISO/IEC組成[4]。可在小帶寬網(wǎng)絡(luò)或多點(diǎn)監(jiān)控采集中實(shí)現(xiàn)快速傳輸。以太網(wǎng)控制模塊,使用安全可靠的TCP/IP協(xié)議,實(shí)現(xiàn)通信。通過嵌入式web服務(wù)器實(shí)現(xiàn)與遠(yuǎn)程監(jiān)控主機(jī)之間的通信[5],配合獨(dú)自編寫一個(gè)以socket編程方式的客戶端與服務(wù)器程序,采用C/S架構(gòu)方案,實(shí)時(shí)地進(jìn)行圖像數(shù)據(jù)傳輸,并實(shí)現(xiàn)遠(yuǎn)程監(jiān)控?cái)?shù)據(jù)。
2.3硬件系統(tǒng)設(shè)計(jì)
由s3c2440結(jié)合64MB SDRAM與256MB Nand Flash作為控制核心,作為整個(gè)系統(tǒng)的心臟負(fù)責(zé)著視頻采集系統(tǒng)的實(shí)時(shí)視頻采集控制,圖像數(shù)據(jù)編碼壓縮,數(shù)據(jù)傳輸控制等控制操作,保證內(nèi)外器件的穩(wěn)定運(yùn)作。配合DM9000EP以太網(wǎng)芯片實(shí)現(xiàn)傳輸,通過RS232串口實(shí)現(xiàn)控制交互,使得系統(tǒng)內(nèi)部操作變得一目了然,開發(fā)調(diào)試更加便捷。使用JATG接口實(shí)現(xiàn)仿真與燒錄,為達(dá)到視頻采集的需要系統(tǒng)一共設(shè)計(jì)多個(gè)USB接口,使用AY7C68013A芯片控制,速度可達(dá)12Mbit/s,最多可連接127個(gè)USB設(shè)備,實(shí)現(xiàn)視頻數(shù)據(jù)接收。系統(tǒng)采用中星微301P芯片的數(shù)字?jǐn)z像頭,通過編碼壓縮后經(jīng)自編socket服務(wù)器把數(shù)據(jù)傳到主機(jī)客戶端。硬件系統(tǒng)結(jié)構(gòu)如下圖1所示。
3軟件平臺(tái)搭建
3.1交叉編譯環(huán)境建立
由于嵌入式開發(fā)板的資源有限,所以嵌入式的開發(fā)、調(diào)試往往是在PC機(jī)上完成的,但是PC機(jī)使用的核心架構(gòu)是X86架構(gòu)和ARM的核心架構(gòu)是有著本質(zhì)上的區(qū)別的。未解決架構(gòu)之間的阻礙,這就需要我們構(gòu)建一個(gè)交叉編譯鏈,交叉編譯鏈可以實(shí)現(xiàn)跨平臺(tái)的嵌入式開發(fā)與調(diào)試,大大加快了產(chǎn)品開發(fā)的速度與降低了嵌入式開發(fā)難度,使得在X86架構(gòu)的PC機(jī)上編寫并編譯通過的程序一樣能在嵌入式設(shè)備上運(yùn)行,本系統(tǒng)使用的是3.4.1版本的交叉編譯鏈,成功安裝交叉編譯鏈后,可以通過如下代碼修改profile文件改變交叉編譯鏈的版本。
3.2Linux內(nèi)核配置
作為一個(gè)操作系統(tǒng)的核心,它決定了操作系統(tǒng)的穩(wěn)定性與性能,并且為各種應(yīng)用程序提供對(duì)設(shè)備硬件的安全訪問的一部分軟件。所以嵌入式設(shè)備為了節(jié)省資源,內(nèi)核都是經(jīng)過設(shè)計(jì)與裁剪的,本視頻采集監(jiān)控系統(tǒng)使用的Linux內(nèi)核版本為2.6.30.4。PC機(jī)采用VMware構(gòu)建Red Hat Linux系統(tǒng),在PC機(jī)的Linux操作系統(tǒng)中定制設(shè)備獨(dú)特的內(nèi)核,加載USB接口,串口通信,網(wǎng)卡,USB攝像頭等所有視頻采集監(jiān)控系統(tǒng)所需要的所有設(shè)備驅(qū)動(dòng)。在內(nèi)核目錄內(nèi)使用“make menuconfig”命令,啟動(dòng)圖形化內(nèi)核配置界面配置。這樣就可以開始設(shè)計(jì)視頻監(jiān)控系統(tǒng)的內(nèi)核,加載各類的驅(qū)動(dòng)。
3.3USB攝像頭加載
設(shè)備采用中星微301P芯片的USB數(shù)字?jǐn)z像頭,解決了模擬攝像頭需要特定的視頻采集卡轉(zhuǎn)換為數(shù)字信號(hào),才能進(jìn)行存儲(chǔ)等處理問題,有效節(jié)省S3C2440微處理器的資源[6]。設(shè)備采用USB并行通信的方法比傳統(tǒng)串行端口通信快出100倍。由于攝像頭采用的是V4L(Video for Linux)標(biāo)準(zhǔn)方案,所以Linux內(nèi)核必須對(duì)V4L實(shí)現(xiàn)支持。使用“make menuconfig”命令進(jìn)入內(nèi)核配置環(huán)境,進(jìn)入“Device Drivers”設(shè)備驅(qū)動(dòng)配置選項(xiàng),靜態(tài)加載“Video For Linux”并加載“Omini Vision Camera Chip support”完成對(duì)V4L方案攝像頭的支持。配置好攝像頭的驅(qū)動(dòng),我還必須加載設(shè)備對(duì)USB接口的支持,選擇“USB Support” 靜態(tài)加載“USB OV511 Camera support”和“USB SPCA5XX Sunplux/Vimicro/Sonixjpeg Camera”。至此視頻采集系統(tǒng)的USB攝像頭才能正常的工作,實(shí)現(xiàn)對(duì)圖像數(shù)據(jù)采集。保存配置后,根目錄就會(huì)多出“.config”這內(nèi)核配置文件。使用“make zImage”命令,開始編譯配置好的內(nèi)核。把內(nèi)核移植從PC機(jī)移植到硬件設(shè)備就可以進(jìn)行視頻的采集工作。
4視頻數(shù)據(jù)采集與過程
H.264壓縮算法處理
設(shè)備從攝像頭采集到數(shù)字圖像信號(hào),視頻編解碼標(biāo)準(zhǔn)為M-JPEG,其占用的通信帶寬過大,容易造成網(wǎng)絡(luò)擁堵[7]。為了實(shí)現(xiàn)視頻快速傳輸,滿足遠(yuǎn)程用戶帶寬限制得問題,對(duì)數(shù)學(xué)圖像信號(hào)經(jīng)過H.264編碼壓縮算法編碼壓縮,在對(duì)圖像質(zhì)量影響最小的條件下,對(duì)圖像進(jìn)行最大限度的壓縮與編碼。而且H.264標(biāo)準(zhǔn)中的UMHexagonS算法相對(duì)于快速全搜索算法更可節(jié)約90%以上的運(yùn)算量,同時(shí)能保持較好的率失真性能[8]。H.264的工作流程是從配置好的攝像設(shè)備中采集的一幀圖像進(jìn)行宏塊Slice和Slice Groupde劃分,判斷編碼是否完成,完成就對(duì)圖像進(jìn)行重構(gòu),插入1/4像素差值,從而建立參考幀,發(fā)送至socket服務(wù)器端。一改以往使用M-JPEG標(biāo)準(zhǔn)的視頻解碼方式嚴(yán)重占用通信帶寬的缺點(diǎn),大大減少網(wǎng)絡(luò)擁堵的情況,使得多路視頻圖像傳輸依然暢通,更好的利用了帶寬資源。編碼流程如圖2所示。
5遠(yuǎn)程監(jiān)控采集
5.1嵌入式遠(yuǎn)程web服務(wù)器的實(shí)現(xiàn)
嵌入式WEB服務(wù)器可實(shí)現(xiàn)網(wǎng)絡(luò)客戶的訪問請(qǐng)求。Web 客戶端發(fā)送的連接請(qǐng)求通過TCP/IP協(xié)議經(jīng)由Internet發(fā)送到服務(wù)器端,服務(wù)器檢查請(qǐng)求合法之后,便建立與客戶端的TCP/IP連接[9]。嵌入式系統(tǒng)通常用Boa Web服務(wù)器,因?yàn)檫@款服務(wù)器體積小,可執(zhí)行代碼不足60KB。能依次完成網(wǎng)絡(luò)用戶的請(qǐng)求:boa主要由兩部分組成,嵌入式WEB Server和CGI程序。前者負(fù)責(zé)監(jiān)聽請(qǐng)求。當(dāng)客戶向系統(tǒng)發(fā)送訪問請(qǐng)求時(shí),WEB Server馬上調(diào)動(dòng)相應(yīng)的CGI程序,負(fù)責(zé)在服務(wù)器與客戶端之間的識(shí)別格式轉(zhuǎn)換。嵌入式Web技術(shù)以其良好的用戶界面、統(tǒng)一的客戶端軟件、方便的遠(yuǎn)程交互能力而成為嵌入式系統(tǒng)網(wǎng)絡(luò)化、信息化的重要手段[10]。
5.2編寫socket視頻監(jiān)控程序
視頻監(jiān)控設(shè)備的網(wǎng)絡(luò)傳輸主要是在Linux系統(tǒng)中通過網(wǎng)絡(luò)編程——Socket(套接字)實(shí)現(xiàn)的,本監(jiān)控的設(shè)備通過安全可靠的TCP協(xié)議編寫一套客戶端和服務(wù)器程序。利用嵌入式 LINUX 操作系統(tǒng)自帶的TCP/IP協(xié)議棧提供的SOCKET編程接口設(shè)計(jì)一個(gè)簡單的嵌入式WEB服務(wù)器[11]。在服務(wù)器代碼中,調(diào)用socket()函數(shù)建立一個(gè)socket,使用bing()綁定IP地址端口等信息到socket上,調(diào)用listen()實(shí)現(xiàn)最大客戶端連接數(shù)量,然后使用accept()等待來自客戶端的請(qǐng)求,當(dāng)連接構(gòu)成時(shí),調(diào)用send_void()函數(shù)把經(jīng)過H.264壓縮編碼算法出來過的圖像發(fā)送到客戶端中,最后關(guān)閉網(wǎng)絡(luò)連接。
6系統(tǒng)測試及結(jié)果分析
連接好視頻監(jiān)控系統(tǒng)的所有設(shè)備,上電并啟動(dòng),PC機(jī)打開串口工具——AbsoluteTelnet,連接到視頻監(jiān)控開發(fā)板。進(jìn)入嵌入式linux操作系統(tǒng)配置工作環(huán)境,確保平臺(tái)順利運(yùn)行。輸入ifconfig命令觀察設(shè)備IP地址,使用ifconfig eth0 XXX.XXX.XXX.XXX配置IP。使ping XXX.XXX.XXX.XXX命令查看網(wǎng)卡工作是否正常,并且是否與監(jiān)控端主機(jī)連接成功。輸入命令,啟動(dòng)USB視頻監(jiān)控程序。在監(jiān)控主機(jī)中開啟自編的監(jiān)控軟件,配置好目標(biāo)監(jiān)控點(diǎn)的IP地址與監(jiān)控端口便可實(shí)現(xiàn)監(jiān)控。由于設(shè)備采用H.264視頻壓縮算法進(jìn)行圖像數(shù)據(jù)壓縮處理,一改傳統(tǒng)監(jiān)控流量巨大,必須占用大量帶寬等不足,因此視頻監(jiān)控流能達(dá)到10fps甚至更小,但卻可最大限度的保證了視頻監(jiān)控的質(zhì)量,圖像處理前后效果對(duì)比如圖4所示,使得智能手機(jī)、平板電腦等手持移動(dòng)設(shè)備安裝上監(jiān)控端軟件也能實(shí)現(xiàn)視頻監(jiān)控,更大地拓寬了視頻監(jiān)控領(lǐng)域的市場。7結(jié)語
基于ARM s3c2440微處理芯片的嵌入式遠(yuǎn)程視頻監(jiān)控采集系統(tǒng),有效的脫離了傳統(tǒng)同軸電纜鋪設(shè)視頻監(jiān)控系統(tǒng)的不足,最大限度的利用網(wǎng)絡(luò)傳輸,降低了施工難度,而且有效的實(shí)現(xiàn)了視頻的實(shí)時(shí)監(jiān)控。使用s3c2440芯片,使視頻采集系統(tǒng)很好的做到了低功耗,高速度和良好的移植性與穩(wěn)定性。通過H.264壓縮編碼算法,快速的實(shí)現(xiàn)的視頻圖像的壓縮,在對(duì)圖像質(zhì)量影響最小的條件下實(shí)現(xiàn)了最大的壓縮,使得網(wǎng)絡(luò)傳輸速度更快。使得小帶寬用戶也能流暢的實(shí)現(xiàn)視頻監(jiān)控,大大降低了遠(yuǎn)程視頻監(jiān)控的推廣難度。
參考文獻(xiàn)
[1]張多英,申晨,劉偉平,等.嵌入式視頻監(jiān)控傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,04:724-728.
[2]曹鋒,張敏明,劉德明,等.適用于物聯(lián)網(wǎng)的網(wǎng)絡(luò)視頻監(jiān)控器的設(shè)計(jì)[J].電視技術(shù),2011,01:103-106.
[3]Min Zhang, Jinguang Sun, Shi Wang. Research and Implementation of the CMOS Camera Device Driver Based on S3C2440[C]. ICICTA '10 Proceedings of the 2010 International Conference on Intelligent Computation Technology and AutomationVolume 02.2010: 1039-1042.
[4]Pengyu Liu,Kebin Jia.A Self-Adaptive and Fast Motion Estimation Search Method for H.264/AVC[C].IIH-MSP '10 Proceedings of the 2010 Sixth International Conference on Intelligent Information Hiding and Multimedia Signal Processing.2010:651-654.
[5]姚雷,盧曉東,萬江文.光伏發(fā)電監(jiān)控系統(tǒng)中嵌入式Web服務(wù)器的實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2012.09:3397-3401.
[6]Yu Fanhua,Wu Dengfeng,Zhao Hongwei,Zhen Zhiqiang. Video Image Acquisition System Based on Embedded Linux[C].ICDMA '10 Proceedings of the 2010 International Conference on Digital Manufacturing AutomationVolume 02,2010:907-909.
[7]彭鐵鋼,劉國繁,曹少坤,等.基于ARM的嵌入式視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010.06:1191-1194.
[8]李玉峰,肖菊飛,沈連豐.基于H.264視頻編碼的運(yùn)動(dòng)估計(jì)算法研究[J].電信科學(xué),2012.08:58-62.
[9]王莉,周偉.基于ARM的嵌入式Web 服務(wù)器設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2012.14:90-93.
[10]潘琢金,王秋實(shí).嵌入式Web服務(wù)器中動(dòng)態(tài)Web技術(shù)的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2010.18:3975-3978.
[11]周若谷,丁峰,魯力.視頻監(jiān)控系統(tǒng)中嵌入式Web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2011.05:236-239.