摘 要: 提出了一種通用的基于4G網(wǎng)絡視頻監(jiān)控系統(tǒng)的設計與實現(xiàn)方法,介紹了系統(tǒng)的軟、硬件構成,重點研究了視頻采集、視頻解碼、圖像實時顯示、存儲和播放等關鍵視頻技術,同時給出了Windows平臺下基于OpenCV的播放器設計和基于MFC的軟件界面設計的具體實現(xiàn)方法。與傳統(tǒng)的監(jiān)控系統(tǒng)相比,采用4G網(wǎng)絡傳輸確保了視頻的清晰度和流暢性,移動物體檢測報警功能可防止監(jiān)控人員錯過重要信息,具有廣闊的應用前景。
關鍵詞: 4G網(wǎng)絡;視頻監(jiān)控;移動檢測;異常報警
0 引言
自2013年12月4日中國移動獲得中國國內第一個4G牌照以來,我國絕大部分城市的居民已經(jīng)可以享受到LTE技術帶來的便利。隨著4G網(wǎng)絡的普及和流量資費的不斷降低,無線視頻監(jiān)控能夠在特殊押運、資源監(jiān)控、安防監(jiān)控等眾多領域為人們提供更好、更優(yōu)質的服務[1-3]。本文所研究的內容正是利用目前最新的4G通信網(wǎng)絡,實現(xiàn)遠程視頻監(jiān)控和移動物體報警功能。與其他的無線監(jiān)控系統(tǒng)相比,4G網(wǎng)絡的高速數(shù)據(jù)傳輸能力確保了視頻的清晰度和流暢性,移動物體檢測報警功能可以防止監(jiān)控人員因疲勞、暫離崗位等原因錯過重要信息。除攝像頭之外,用戶也可根據(jù)需要外掛不同的傳感設備,通過二次開發(fā)來滿足自身需求。
1 系統(tǒng)總體設計
本系統(tǒng)基于現(xiàn)有的移動4G網(wǎng)絡,實現(xiàn)對遠程監(jiān)控點的實時視頻監(jiān)控,主要由支持4G的監(jiān)控終端和監(jiān)控中心軟件兩部分組成。系統(tǒng)的整體結構框圖如圖1所示。監(jiān)控終端通過攝像頭采集現(xiàn)場圖像,一方面在圖像序列中檢測是否有移動物體,另一方面將圖像數(shù)據(jù)進行壓縮處理后發(fā)送到監(jiān)控中心。監(jiān)控中心的上位機承擔服務器和播放器的雙重功能,軟件接收到監(jiān)控終端傳來的視頻流數(shù)據(jù)后,進行解碼、顯示、存儲和播放等,同時根據(jù)接收到的報警信息觸發(fā)報警功能。
信息采集端由低功耗、易安裝的嵌入式系統(tǒng)完成,主要包括嵌入式處理器、電源模塊、攝像頭、存儲設備、復位模塊等。在硬件平臺上搭載Linux嵌入式操作系統(tǒng),既降低了軟件的開發(fā)難度,也可以方便地擴展其他功能。
監(jiān)控中心軟件在Windows平臺下設計完成,主要包括H.264視頻流接收、解碼、緩存、播放器的設計以及報警等功能。借助域名服務器、FFmpeg、OpenCV等開發(fā)工具自主設計視頻播放軟件,使得整個系統(tǒng)更加完善。具體的功能要求和應用場景使得應用軟件能在最小的資源要求下為用戶提供良好的監(jiān)控畫面,簡潔的用戶管理系統(tǒng)提升了系統(tǒng)的安全性和保密性[4-5]。
2 嵌入式監(jiān)控設備設計
2.1 硬件平臺設計
監(jiān)控終端采用三星公司的S5PV210作為主處理器,該芯片運行主頻可高達1 GHz,內部集成了PowerVR SGX540高性能圖像引擎,能流暢地運行Android、Linux和WinCE等操作系統(tǒng)。4G模塊為中興公司生產(chǎn)的ME3760,該模塊是一款基于MiniPCI Express接口的多模無線上網(wǎng)模塊,支持TD-LTE/LTE-FDD/TD-SCDMA網(wǎng)絡,可提供移動環(huán)境下的高速數(shù)據(jù)接入服務,4G環(huán)境下最大下行速率可達100 Mb/s。百萬高清松翰SN9C291+OV9712網(wǎng)絡監(jiān)控專用攝像頭組成了系統(tǒng)的視頻采集模塊。OV9712 CameraChip圖像傳感器體積小、工作電壓低等特點,可以輸出整幀、子采樣、取窗口等方式的各種分辨率8 bit影像數(shù)據(jù)。USB2.0的攝像頭控制器采用SN9C291,該芯片具有超強的圖像信號處理能力,可以確保圖像的質量和讀取速度。此外,高性能的Motion-JPEG/H.264壓縮技術可以滿足不同帶寬的需求、低電壓工作狀態(tài)并支持圖像縮放非常適合嵌入式應用[6-7]。
2.2 嵌入式軟件設計
嵌入式系統(tǒng)的軟件設計主要包括驅動的移植和應用程序的設計兩部分。驅動移植是根據(jù)Linux內核版本的不同更新或者替換原驅動中的功能函數(shù)。應用程序通過調用驅動程序實現(xiàn)對硬件設備的控制,這樣的分層機制體現(xiàn)了軟件、硬件分離的思想,大大提升了嵌入式應用的開發(fā)速度[8]。
本系統(tǒng)在開發(fā)Linux系統(tǒng)基礎上,移植了ME3760通信模塊和USB攝像頭的驅動程序,完善了PPPOE撥號功能,并完成了相應的程序設計。驅動程序分層示意圖如圖2所示。
驅動移植是為應用程序服務的,應用程序通過接口訪問、控制硬件設備來實現(xiàn)特定的功能,進而將各種功能函數(shù)有序地組合來完成系統(tǒng)功能的設計。視頻監(jiān)控系統(tǒng)嵌入式端的程序設計流程圖如圖3所示。
各部分具體功能如下:
?。?)系統(tǒng)初始化將攝像頭、網(wǎng)絡模塊等切換到工作狀態(tài),申請需要的內存空間,通過PPP撥號接入移動網(wǎng)絡,并建立TCP連接;
?。?)從攝像頭讀取原始圖像,父進程將圖像原始數(shù)據(jù)壓縮編碼后送給網(wǎng)絡緩沖區(qū),子進程通過背景差法分析監(jiān)控畫面中是否闖入了移動物體,并根據(jù)檢測結果決定是否設置報警信息;
(3)網(wǎng)絡傳輸將壓縮后的視頻數(shù)據(jù)分包后發(fā)送到移動網(wǎng)絡,子進程將通過網(wǎng)絡傳輸服務將報警信息發(fā)送給監(jiān)控端。
以USB攝像頭驅動的移植為例,首先將攝像頭的產(chǎn)品ID添加到Linux UVC(USB Video Class)驅動的device_ID列表中,當設備接入開發(fā)板時系統(tǒng)通過USB讀取設備信息。根據(jù)信息內容調用UVC驅動常見設備節(jié)點/dev/video,當查詢到設備節(jié)點后就可以利用V4L2(Video 4 for Linux 2)驅動架構對攝像頭進行操作了,V4L2操作函數(shù)如表1所示,在V4L2驅動中可以看到針對USB免驅攝像頭可實現(xiàn)的基本操作。
3 監(jiān)控軟件設計
3.1 播放器功能實現(xiàn)
監(jiān)控端軟件的設計實現(xiàn)了在PC端從網(wǎng)絡上接收視頻數(shù)據(jù)并播放、存儲等功能,在此基礎上根據(jù)實際需要添加了用戶管理和報警提示的功能,改善了系統(tǒng)的實際應用效果。
3.1.1 基于FFmpeg的視頻流解碼
Windows下視頻流解碼的方法有很多,開源的FFmpeg程序是較為常用的一種。FFmpeg是一個開源免費跨平臺的視頻和音頻流方案,采用LGPL或GPL許可證,提供錄制、轉換以及流化音視頻的完整解決方案,使用方便、可靠性高,在Windows平臺下有廣泛的應用。
FFmpeg包含了libavcodec庫、libavformat庫和ffmpeg轉換程序等。FFmpeg編譯成功后獲得FFMPEG庫,包含了編程需要的頭文件,lib運行庫和許多的DLL批處理命令。通過配置計算機的環(huán)境變量,就可以在Windows下使用FFmpeg庫。
FFmpeg視頻流解碼流程可分為以下幾個步驟:
?。?)定義變量,申請內存空間為解碼器運行做好準備工作;
?。?)初始化解碼器,注冊編碼器、復用器等;
?。?)打開視頻流文件,取出包含在文件中的流信息;
?。?)找到視頻流起始位置,并記錄該流的編碼信息;
?。?)尋找匹配的視頻流的解碼器,系統(tǒng)只用到了 H.264的解碼函數(shù);
?。?)進行解碼并根據(jù)需要轉換解碼后的圖片格式。
3.1.2 基于OpenCV的播放器設計
OpenCV是Inter公司的開源計算機視覺庫,它是輕量級而且高效,它由一系列的C函數(shù)和少量的C++類構成,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法[9-10]。OpenCV開發(fā)包提供了讀取各種類型的圖像文件、視頻內容以及攝像機輸入的功能。在屏幕上顯示一張圖像可以通過編寫以下程序實現(xiàn)。
#include"highgui.h"
int main(int argc,char**argv)
{cvNamedWindow("Example",CV_WINDOW_AUTOSIZE);
CvCapture*capture=cvCreateFileCapture(argv[1]);
IplImage*frame;
while(1){
frame=cvQueryFrame(capture);
if(!frame)break;
cvShowImage("Example",frame);
char c=cvWaitKey(33);
if(c==27)break;}
cvReleaseCapture(&capture);
cvDestroyWindow("Example");}
3.2 軟件界面設計
微軟基礎類庫(Microsoft Foundation Classes,MFC)是一個微軟公司提供的類庫,以C++類的形式封裝了Windows API,包含一個應用程序框架,以減少應用程序開發(fā)人員的工作量。本文用戶登錄界面采用基于對話框的設計模式,每個交互界面都是一個窗口,它們都繼承自MFC的基礎對話框類Cdialog并且都與一個相關的資源類綁定。該程序的主要功能是根據(jù)用戶輸入的用戶名和密碼信息,判定用戶是否具有該系統(tǒng)的使用權限,系統(tǒng)的用戶登錄界面如圖4所示。
視頻監(jiān)控界面的設計以播放器為主體內容,添加了系統(tǒng)LOGO和報警指示。報警指示以圖片插件為基礎,當收到報警信息后,黃、紅兩張圖片順序切換展現(xiàn)出指示燈閃爍的效果,并且通過PC音頻設備播放警報聲引起監(jiān)控人員的注意。監(jiān)控人員收到報警信息后可以通過停止按鍵終止此次報警,再進行相應的處理。監(jiān)控系統(tǒng)的實際運行效果如圖5所示。
4 結論
結合當前的監(jiān)控技術和無線通信技術,實現(xiàn)了一套基于4G無線技術的視頻監(jiān)控系統(tǒng)的設計。通過裝載了Linux系統(tǒng)的嵌入式終端和Windows桌面控制軟件完成了視頻監(jiān)控、移動物體報警等功能,系統(tǒng)涵蓋了無線監(jiān)控系統(tǒng)的最新技術的實現(xiàn),應用于實驗研究或者教學中可以起到很好的啟發(fā)作用,有很好的推廣價值。在以后的研究過程中將進一步完善系統(tǒng)功能,提高系統(tǒng)的可擴展性。
參考文獻
[1] 范泳文,官洪運,蔣靜學,等.基于3G網(wǎng)絡的智能交通視頻監(jiān)控系統(tǒng)[J].電視技術,2012,36(5):103-109.
[2] 董向華,楊勇.基于網(wǎng)絡的視頻監(jiān)控系統(tǒng)的設計與實現(xiàn)[J].通信技術,2013,46(2):64-66.
[3] 江潮,蘇祥芳,劉立海,等.基于網(wǎng)絡的數(shù)字視頻監(jiān)控系統(tǒng)[J].武漢大學學報(自然科學版),2000,46(5):608-612.
[4] 毛劍飛,張杰,蔣莉,等.基于改進的H.264的視頻監(jiān)控系統(tǒng)[J].計算機系統(tǒng)應用,2014,23(4):84-90.
[5] 朱厲洪,周詮.基于編碼的視頻嵌入視頻方法的研究[J].電子技術應用,2013,39(10):65-68.
[6] 李輝.基于RTP的H.264視頻傳輸系統(tǒng)的設計與實現(xiàn)[D].吉林:吉林大學,2013.
[7] 蔣維,孟利民.3G網(wǎng)絡H.264視頻監(jiān)控系統(tǒng)的設計和實現(xiàn)[J].杭州電子科技大學學報,2011,31(5):71-74.
[8] 王旭,張自嘉,王慧敏.基于ARM11的塔吊監(jiān)控系統(tǒng)設計[J].電子技術應用,2013,39(10):29-32.
[9] 彭濤,趙麗萍.OpenCV在視頻監(jiān)控系統(tǒng)中的應用[J].通信與廣播電視,2012(4):30-35.
[10] 岑銀.基于OpenCV的智能視頻監(jiān)控設計[J].電子元器件應用,2010,12(7):47-48.