高建輝,黃世震
(福州大學 物理與信息工程學院,福建 福州 350116)
基于H264的遠程視頻監控系統設計與實現
高建輝,黃世震
(福州大學 物理與信息工程學院,福建 福州 350116)
為滿足嵌入式設備在日常家居監控中的應用需求,設計了一種嵌入式視頻監控系統。該系統通過調用Linux的V4L2接口完成視頻圖像數據的采集,使用H264標準對視頻圖像進行編碼后,利用網絡把視頻圖像傳送到客戶端,客戶端調用解碼程序播放視頻。實驗結果表明,該系統視頻傳輸性能高效,能夠滿足視頻監控基本需求。
視頻監控;視頻編碼;網絡傳輸;嵌入式
視頻監控是保障家居安全的有效手段之一,也是后續視頻中運行目標檢測、識別、跟蹤的基礎。視頻監控技術通過多年的發展,已經普遍使用,在各個場合都可以看到監控的身影,同時對監控性能也提出了更高要求,不斷追求數字化和高清化。另一方面,嵌入式技術發展迅猛,其產品具備體積小、耗能低的優點,利用嵌入式進行視頻監控是一大發展方向。一般監控系統大多只實現基本視頻監控功能,而且布線繁瑣、體積量大。本文設計了一種基于嵌入式的遠程監控系統,輕便且容易安裝,采用H264標準編碼視頻中采集的圖像,提高視頻傳輸質量,給日常視頻監控帶來了很大的益處。
本文設計的是一個運行在嵌入式ARM平臺的視頻監控系統,該系統分為4個部分[1]:前端USB攝像頭圖像采集、ARM板上H264圖像編碼、網絡傳輸數據和PC端視頻圖像解碼觀看。系統整體架構如圖1所示。

圖1 系統整體架構
USB攝像頭作為整個系統的前端進行視頻圖像采集,插在開發板的USB口上,將采集的圖像傳送到開發板,其中涉及到V4L2接口使用和攝像頭驅動程序的移植。系統整體控制程序包括視頻圖像壓縮編碼和視頻數據傳輸,在開發板上編碼視頻數據后,通過網絡把數據傳送到Windows客戶端,其中涉及H264編碼庫移植和使用??蛻舳藢σ曨l圖像接收后,將數據解碼并顯示觀看,達到視頻實時監控的目的。
本視頻監控系統的硬件主要是ARM開發板和USB攝像頭。ARM開發板包括底板和核心板,核心板采用S3C2440作為主控制器,主頻可以達到400 MHz,運算速度可以達到450 MIPS。底板硬件資源包括3.5英寸LCD屏幕、COM接口電路、USB host、USB slave、音頻接口電路、CMOS攝像頭接口電路和JTAG仿真電路等[2]。豐富的接口為開發板的功能擴展提供了強大的支持,充足的容量保障了程序運行的流暢性、實現系統開發的可行性。
3.1視頻圖像采集

圖2 視頻采集流程
由前端攝像頭對監控視頻進行圖像采集,其中主要的就是V4L2(Video for Linux2)的使用和攝像頭驅動代碼的移植。圖像采集的具體過程如圖2所示。首先調用程序將攝像頭開啟,即操控video0這個設備文件,然后查找自己使用的攝像頭支持的圖片格式,包括感光度和對比度等。之后根據查詢到的圖像格式設置對應的格式,設置好后需要分配圖像的存儲空間,最后采集圖像,并對采集到的圖像進行一定的處理,整個過程結束。
V4L2標準是Linux系統專門為攝像頭采集圖像制定的統一接口,有了該標準,無論使用哪種攝像頭,只需要更改底層攝像頭驅動程序,上層應用程序只要使用一套就可以操縱各種類型的攝像頭,極大地方便用戶進行程序開發,增加程序移植的便利性,縮短程序開發時間。V4L2提供了許多函數接口供用戶調用,通過open和close來打開和關閉,通過read和write進行讀寫,mmap進行映射等。其中最重要的就是ioctl函數,該函數的第二個參數是命令控制參數,其中包含大量操控攝像頭的命令,用戶就是通過這些命令來實現對攝像頭的控制。由于本文所使用的攝像頭是內核支持的,所以對于攝像頭驅動代碼的移植,需要對內核進行配置[3],然后再次編譯內核,將生成的內核下載到ARM板中,這樣就能驅動攝像頭采集圖像。
3.2視頻圖像編碼
攝像頭采集的數據就是一幀幀的圖片,每一幀圖片占用空間都比較大,如果不進行壓縮編碼就傳輸,會造成占用帶寬大,極其消耗網絡資源,不利于客戶端的查看,系統實時性也大為下降,所以對視頻圖像進行編碼是非常有用的。H264是一種高性能的壓縮編碼方法,視頻的壓縮率可以達到150倍,擁有比MPEG更好的壓縮質量,帶寬占用量更小,使傳輸性能和實時性大幅度提高,對于資源較為匱乏的系統,采用H264編碼標準不僅能提升系統整體性能,還能使系統更加實用,便于應用到生活中。
編碼工作中最重要的就是H264庫源碼的移植和應用程序的編寫。H264編解碼庫的移植步驟大致如下:首先到其官方網站下載H264的源碼,目前開源代碼庫包含T264和X264(本文選擇T264的源碼庫),下載后在Linux系統下解壓,進入build目錄下的linux目錄中,可以看到里面包含makefile文件,修改文件中的編譯器為Linux下的arm-linux-gcc[4],然后在該目錄下執行make命令,對應目錄下便可生成H264所需的目標文件,最后將這些文件包含到應用程序中,即可實現調用。
H264編碼程序的編寫主要涉及到編碼庫函數的使用,首先利用init_param函數進行編碼參數初始化,然后使用T264_open函數打開編碼器,之后利用T264_malloc函數進行內存分配,用于數據的存放,最后對圖像數據使用T264_encode函數進行編碼。
3.3視頻圖像傳輸

圖3 視頻傳輸過程
本文利用網絡將編碼后的視頻圖像傳送到客戶端,客戶端與服務器之間的數據傳輸采用RTP(Real-time Transport Protocol)協議進行通信[5]。RTP是一種實時通信協議,傳輸效率高,但是其底層應用的還是UDP協議,所以也是無連接,數據傳輸不可靠,其廣泛應用于音視頻傳輸中。整個傳輸過程的流程如圖3所示。
由圖3可知首先要對RTP協議的參數進行初始化,然后建立連接并進行數據傳輸,傳輸完成后對傳輸情況進行判斷,如果傳輸的數據都接收完畢,就關閉連接,結束傳輸,否則繼續傳輸。由于其下層應用的是UDP協議,所以需要建立套接字進行通信。
3.4視頻圖像顯示
對于圖像的顯示,是在PC端建立一個應用程序作為客戶端,接收開發板傳輸過來的每一幀圖像數據,然后對圖像數據進行解碼并顯示,用戶就可以通過該客戶端實時查看視頻監控的情況。該客戶端是PC上的應用程序,采用微軟的集成開發環境進行開發,利用Visual Basic語言進行程序設計。
為了驗證系統的運行狀況,對其進行了兩方面測試。第一是編碼測試,第二是最終圖像顯示測試。編碼結果如圖4所示,可以看出編碼前每幀圖像大小為38 016 B,編碼后每幀圖像大小為幾百字節,極大地提高了壓縮性能。最終顯示的圖像截圖如圖5所示,表明系統能夠穩定地運作,滿足視頻監控的需要。

圖4 編碼效果

圖5 解碼后視頻圖像
本文基于嵌入式平臺設計了遠程視頻監控系統,采用H264編碼標準進行視頻數據的編碼和解碼,完成了視頻中圖像的采集、編碼、傳輸、解碼以及顯示的整套過程。整個系統運行穩定,實時性好,具有廣闊的發展前景,也為后續視頻中目標的檢測和識別打下了良好的基礎。
[1] 吳進進. 基于Web技術的嵌入式無線網絡視頻監控系統的設計[D].南京:南京師范大學,2012.
[2] 王龍興. 嵌入式智能家居系統的設計與研究[D].鄭州:鄭州大學,2015.
[3] 程凡. 基于ARM智能家居遠程視頻監控系統設計與實現[D].西安:西安電子科技大學,2015.
[4] 艾紅,錢運鍇. 嵌入式遠程視頻監控與數據傳輸系統研究[J]. 儀表技術與傳感器,2015(6):66-70.
[5] 褚典. 基于SIP和RTP/RTCP協議的視頻監控系統的研究與實現[D].成都:電子科技大學,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的遠程視頻監控系統設計與實現[J].微型機與應用,2017,36(19):93-94,98.
2017-04-12)
高建輝(1992-),男,碩士研究生,主要研究方向:嵌入式系統。黃世震(1968-),男,博士,高級工程師,主要研究方向:集成電路設計、嵌入式系統。