高建輝,黃世震
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350116)
基于H264的遠(yuǎn)程視頻監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)
高建輝,黃世震
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350116)
為滿足嵌入式設(shè)備在日常家居監(jiān)控中的應(yīng)用需求,設(shè)計了一種嵌入式視頻監(jiān)控系統(tǒng)。該系統(tǒng)通過調(diào)用Linux的V4L2接口完成視頻圖像數(shù)據(jù)的采集,使用H264標(biāo)準(zhǔn)對視頻圖像進(jìn)行編碼后,利用網(wǎng)絡(luò)把視頻圖像傳送到客戶端,客戶端調(diào)用解碼程序播放視頻。實驗結(jié)果表明,該系統(tǒng)視頻傳輸性能高效,能夠滿足視頻監(jiān)控基本需求。
視頻監(jiān)控;視頻編碼;網(wǎng)絡(luò)傳輸;嵌入式
視頻監(jiān)控是保障家居安全的有效手段之一,也是后續(xù)視頻中運行目標(biāo)檢測、識別、跟蹤的基礎(chǔ)。視頻監(jiān)控技術(shù)通過多年的發(fā)展,已經(jīng)普遍使用,在各個場合都可以看到監(jiān)控的身影,同時對監(jiān)控性能也提出了更高要求,不斷追求數(shù)字化和高清化。另一方面,嵌入式技術(shù)發(fā)展迅猛,其產(chǎn)品具備體積小、耗能低的優(yōu)點,利用嵌入式進(jìn)行視頻監(jiān)控是一大發(fā)展方向。一般監(jiān)控系統(tǒng)大多只實現(xiàn)基本視頻監(jiān)控功能,而且布線繁瑣、體積量大。本文設(shè)計了一種基于嵌入式的遠(yuǎn)程監(jiān)控系統(tǒng),輕便且容易安裝,采用H264標(biāo)準(zhǔn)編碼視頻中采集的圖像,提高視頻傳輸質(zhì)量,給日常視頻監(jiān)控帶來了很大的益處。
本文設(shè)計的是一個運行在嵌入式ARM平臺的視頻監(jiān)控系統(tǒng),該系統(tǒng)分為4個部分[1]:前端USB攝像頭圖像采集、ARM板上H264圖像編碼、網(wǎng)絡(luò)傳輸數(shù)據(jù)和PC端視頻圖像解碼觀看。系統(tǒng)整體架構(gòu)如圖1所示。
圖1 系統(tǒng)整體架構(gòu)
USB攝像頭作為整個系統(tǒng)的前端進(jìn)行視頻圖像采集,插在開發(fā)板的USB口上,將采集的圖像傳送到開發(fā)板,其中涉及到V4L2接口使用和攝像頭驅(qū)動程序的移植。系統(tǒng)整體控制程序包括視頻圖像壓縮編碼和視頻數(shù)據(jù)傳輸,在開發(fā)板上編碼視頻數(shù)據(jù)后,通過網(wǎng)絡(luò)把數(shù)據(jù)傳送到Windows客戶端,其中涉及H264編碼庫移植和使用??蛻舳藢σ曨l圖像接收后,將數(shù)據(jù)解碼并顯示觀看,達(dá)到視頻實時監(jiān)控的目的。
本視頻監(jiān)控系統(tǒng)的硬件主要是ARM開發(fā)板和USB攝像頭。ARM開發(fā)板包括底板和核心板,核心板采用S3C2440作為主控制器,主頻可以達(dá)到400 MHz,運算速度可以達(dá)到450 MIPS。底板硬件資源包括3.5英寸LCD屏幕、COM接口電路、USB host、USB slave、音頻接口電路、CMOS攝像頭接口電路和JTAG仿真電路等[2]。豐富的接口為開發(fā)板的功能擴展提供了強大的支持,充足的容量保障了程序運行的流暢性、實現(xiàn)系統(tǒng)開發(fā)的可行性。
3.1視頻圖像采集
圖2 視頻采集流程
由前端攝像頭對監(jiān)控視頻進(jìn)行圖像采集,其中主要的就是V4L2(Video for Linux2)的使用和攝像頭驅(qū)動代碼的移植。圖像采集的具體過程如圖2所示。首先調(diào)用程序?qū)z像頭開啟,即操控video0這個設(shè)備文件,然后查找自己使用的攝像頭支持的圖片格式,包括感光度和對比度等。之后根據(jù)查詢到的圖像格式設(shè)置對應(yīng)的格式,設(shè)置好后需要分配圖像的存儲空間,最后采集圖像,并對采集到的圖像進(jìn)行一定的處理,整個過程結(jié)束。
V4L2標(biāo)準(zhǔn)是Linux系統(tǒng)專門為攝像頭采集圖像制定的統(tǒng)一接口,有了該標(biāo)準(zhǔn),無論使用哪種攝像頭,只需要更改底層攝像頭驅(qū)動程序,上層應(yīng)用程序只要使用一套就可以操縱各種類型的攝像頭,極大地方便用戶進(jìn)行程序開發(fā),增加程序移植的便利性,縮短程序開發(fā)時間。V4L2提供了許多函數(shù)接口供用戶調(diào)用,通過open和close來打開和關(guān)閉,通過read和write進(jìn)行讀寫,mmap進(jìn)行映射等。其中最重要的就是ioctl函數(shù),該函數(shù)的第二個參數(shù)是命令控制參數(shù),其中包含大量操控攝像頭的命令,用戶就是通過這些命令來實現(xiàn)對攝像頭的控制。由于本文所使用的攝像頭是內(nèi)核支持的,所以對于攝像頭驅(qū)動代碼的移植,需要對內(nèi)核進(jìn)行配置[3],然后再次編譯內(nèi)核,將生成的內(nèi)核下載到ARM板中,這樣就能驅(qū)動攝像頭采集圖像。
3.2視頻圖像編碼
攝像頭采集的數(shù)據(jù)就是一幀幀的圖片,每一幀圖片占用空間都比較大,如果不進(jìn)行壓縮編碼就傳輸,會造成占用帶寬大,極其消耗網(wǎng)絡(luò)資源,不利于客戶端的查看,系統(tǒng)實時性也大為下降,所以對視頻圖像進(jìn)行編碼是非常有用的。H264是一種高性能的壓縮編碼方法,視頻的壓縮率可以達(dá)到150倍,擁有比MPEG更好的壓縮質(zhì)量,帶寬占用量更小,使傳輸性能和實時性大幅度提高,對于資源較為匱乏的系統(tǒng),采用H264編碼標(biāo)準(zhǔn)不僅能提升系統(tǒng)整體性能,還能使系統(tǒng)更加實用,便于應(yīng)用到生活中。
編碼工作中最重要的就是H264庫源碼的移植和應(yīng)用程序的編寫。H264編解碼庫的移植步驟大致如下:首先到其官方網(wǎng)站下載H264的源碼,目前開源代碼庫包含T264和X264(本文選擇T264的源碼庫),下載后在Linux系統(tǒng)下解壓,進(jìn)入build目錄下的linux目錄中,可以看到里面包含makefile文件,修改文件中的編譯器為Linux下的arm-linux-gcc[4],然后在該目錄下執(zhí)行make命令,對應(yīng)目錄下便可生成H264所需的目標(biāo)文件,最后將這些文件包含到應(yīng)用程序中,即可實現(xiàn)調(diào)用。
H264編碼程序的編寫主要涉及到編碼庫函數(shù)的使用,首先利用init_param函數(shù)進(jìn)行編碼參數(shù)初始化,然后使用T264_open函數(shù)打開編碼器,之后利用T264_malloc函數(shù)進(jìn)行內(nèi)存分配,用于數(shù)據(jù)的存放,最后對圖像數(shù)據(jù)使用T264_encode函數(shù)進(jìn)行編碼。
3.3視頻圖像傳輸
圖3 視頻傳輸過程
本文利用網(wǎng)絡(luò)將編碼后的視頻圖像傳送到客戶端,客戶端與服務(wù)器之間的數(shù)據(jù)傳輸采用RTP(Real-time Transport Protocol)協(xié)議進(jìn)行通信[5]。RTP是一種實時通信協(xié)議,傳輸效率高,但是其底層應(yīng)用的還是UDP協(xié)議,所以也是無連接,數(shù)據(jù)傳輸不可靠,其廣泛應(yīng)用于音視頻傳輸中。整個傳輸過程的流程如圖3所示。
由圖3可知首先要對RTP協(xié)議的參數(shù)進(jìn)行初始化,然后建立連接并進(jìn)行數(shù)據(jù)傳輸,傳輸完成后對傳輸情況進(jìn)行判斷,如果傳輸?shù)臄?shù)據(jù)都接收完畢,就關(guān)閉連接,結(jié)束傳輸,否則繼續(xù)傳輸。由于其下層應(yīng)用的是UDP協(xié)議,所以需要建立套接字進(jìn)行通信。
3.4視頻圖像顯示
對于圖像的顯示,是在PC端建立一個應(yīng)用程序作為客戶端,接收開發(fā)板傳輸過來的每一幀圖像數(shù)據(jù),然后對圖像數(shù)據(jù)進(jìn)行解碼并顯示,用戶就可以通過該客戶端實時查看視頻監(jiān)控的情況。該客戶端是PC上的應(yīng)用程序,采用微軟的集成開發(fā)環(huán)境進(jìn)行開發(fā),利用Visual Basic語言進(jìn)行程序設(shè)計。
為了驗證系統(tǒng)的運行狀況,對其進(jìn)行了兩方面測試。第一是編碼測試,第二是最終圖像顯示測試。編碼結(jié)果如圖4所示,可以看出編碼前每幀圖像大小為38 016 B,編碼后每幀圖像大小為幾百字節(jié),極大地提高了壓縮性能。最終顯示的圖像截圖如圖5所示,表明系統(tǒng)能夠穩(wěn)定地運作,滿足視頻監(jiān)控的需要。
圖4 編碼效果
圖5 解碼后視頻圖像
本文基于嵌入式平臺設(shè)計了遠(yuǎn)程視頻監(jiān)控系統(tǒng),采用H264編碼標(biāo)準(zhǔn)進(jìn)行視頻數(shù)據(jù)的編碼和解碼,完成了視頻中圖像的采集、編碼、傳輸、解碼以及顯示的整套過程。整個系統(tǒng)運行穩(wěn)定,實時性好,具有廣闊的發(fā)展前景,也為后續(xù)視頻中目標(biāo)的檢測和識別打下了良好的基礎(chǔ)。
[1] 吳進(jìn)進(jìn). 基于Web技術(shù)的嵌入式無線網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的設(shè)計[D].南京:南京師范大學(xué),2012.
[2] 王龍興. 嵌入式智能家居系統(tǒng)的設(shè)計與研究[D].鄭州:鄭州大學(xué),2015.
[3] 程凡. 基于ARM智能家居遠(yuǎn)程視頻監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2015.
[4] 艾紅,錢運鍇. 嵌入式遠(yuǎn)程視頻監(jiān)控與數(shù)據(jù)傳輸系統(tǒng)研究[J]. 儀表技術(shù)與傳感器,2015(6):66-70.
[5] 褚典. 基于SIP和RTP/RTCP協(xié)議的視頻監(jiān)控系統(tǒng)的研究與實現(xiàn)[D].成都:電子科技大學(xué),2014.
Design and implementation of remote video surveillance system based on H264
Gao Jianhui, Huang Shizhen
(College of Physics and Information Engineering, Fuzhou University, Fuzhou 350116, China)
In order to meet the demand of the embedded device in daily home surveillance, an embedded video surveillance system is designed. The system uses V4L2 interface of Linux to accomplish acquisition of video image data, uses H264 standard to code video image, and transmits video image to client via network. The client calls decoder to play video. The experimental results demonstrate that the system has high performance of video transmission and can satisfy the basic needs of video surveillance.
video surveillance; video coding; network transmission; embedded
TP277
A
10.19358/j.issn.1674- 7720.2017.19.027
高建輝,黃世震.基于H264的遠(yuǎn)程視頻監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2017,36(19):93-94,98.
2017-04-12)
高建輝(1992-),男,碩士研究生,主要研究方向:嵌入式系統(tǒng)。黃世震(1968-),男,博士,高級工程師,主要研究方向:集成電路設(shè)計、嵌入式系統(tǒng)。