鄧麗萍
DOI:10.16644/j.cnki.cn33-1094/tp.2016.09.010
摘 要: 采用分布式存儲和模塊化結(jié)構(gòu)研發(fā)出視頻監(jiān)控系統(tǒng)是未來的發(fā)展方向。本文研究并設(shè)計的基于嵌入式Web服務(wù)器的遠(yuǎn)程視頻監(jiān)控系統(tǒng),解決了以往視頻監(jiān)控系統(tǒng)單機(jī)客戶端無法聯(lián)網(wǎng)、需要使用大量存儲空間等問題。系統(tǒng)通過嵌入式Web服務(wù)器技術(shù)完成了視頻的采集、處理、傳輸、存儲及非法入侵自動報警等功能。實驗證明,該系統(tǒng)的實時性、交互性較好,開發(fā)成本較低,可以廣泛地應(yīng)用于遠(yuǎn)程視頻監(jiān)控。
關(guān)鍵詞: B/S; 嵌入式技術(shù); 遠(yuǎn)程; 視頻; 監(jiān)控; Web服務(wù)器
中圖分類號:TP3 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2016)09-37-04
Development of remote video monitoring system based on embedded Web server
Deng Liping
(Fujian Agricultural Vocation-Technical College, Fuzhou, Fujian 350007, China)
Abstract: To research and develop the video monitoring system with distributed storage and modular structure are the future development direction. This paper studies and designs a remote video monitoring system based on embedded Web server, solves the problems, which cannot be connected with the Internet and need to use a large amount of storage space, of the previous video monitoring system. Using the embedded Web server technology, the system realizes the video capture, processing, transmission, storage and automatic intrusion alarm and other functions. Experimental results show that the system has better real-time performance, better interaction and lower development cost. It can be widely used in remote video surveillance.
Key words: B/S; embedded technology; remote; video; monitoring; Web server
0 引言
以往的視頻監(jiān)控系統(tǒng)存在眾多的局限性:傳輸距離短、無法連接Internet、存儲量大、取證查詢難。本文設(shè)計的遠(yuǎn)程視頻監(jiān)控系統(tǒng)主要基于嵌入式Web服務(wù)器,將Web技術(shù)和嵌入式技術(shù)相結(jié)合,結(jié)合ARM9硬件系統(tǒng)和Linux軟件系統(tǒng),是嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)。
系統(tǒng)采用嵌入式Linux操作系統(tǒng),嵌入內(nèi)置的Web服務(wù)器。攝像頭送來的視頻信號經(jīng)過編碼器壓縮,通過視頻傳輸協(xié)議傳輸,網(wǎng)絡(luò)用戶可以使用瀏覽器直接查看視頻圖像,實現(xiàn)目標(biāo)場所的實時視頻監(jiān)控,以及識別非法闖入并報警,用戶不需要單獨的一臺PC機(jī)用于監(jiān)控,只要保證在網(wǎng)絡(luò)連通,就可進(jìn)行對現(xiàn)場的監(jiān)控和相關(guān)的控制操作。
1 開發(fā)技術(shù)介紹
嵌入式技術(shù)的飛速發(fā)展不單使之成為當(dāng)前計算機(jī)技術(shù)中的重要分支,同時也使計算機(jī)的分類變?yōu)榱送ㄓ糜嬎銠C(jī)和嵌入式系統(tǒng)之分。嵌入式系統(tǒng)的應(yīng)用更是涉及信息家電、網(wǎng)絡(luò)、金融、醫(yī)療、工業(yè)控制等各個領(lǐng)域,一些學(xué)者甚至認(rèn)為嵌入式技術(shù)必將成為今后PC時代的主宰者。
而對于Web技術(shù),則有以下特點。
⑴ 大量的視頻、音頻和圖形信息會占用相當(dāng)多磁盤空間。然而對于Web而言,信息可以放置在不同站點上,只需在瀏覽器中指明該站點路徑。在用戶看來這些信息是一體化的。
⑵ Web是動態(tài)、交互的,表現(xiàn)在其超鏈接上。用戶的瀏覽完全由自己決定。另外通過表單的形式可以獲得動態(tài)的信息。用戶通過填寫表單可以向服務(wù)器發(fā)送請求,服務(wù)器根據(jù)用戶的請求信息進(jìn)行相應(yīng)。
本系統(tǒng)結(jié)合了嵌入式技術(shù)和Web技術(shù)的各自優(yōu)點,將它們結(jié)合在一起,引入到系統(tǒng)研究中,發(fā)揮了最大的效率。
2 系統(tǒng)總體設(shè)計
本系統(tǒng)是基于視頻處理技術(shù),結(jié)合RAM9嵌入式硬件系統(tǒng)和Linux軟件系統(tǒng),以及嵌入式相關(guān)技術(shù),設(shè)計并開發(fā)出的一套實用的嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng),主要包括視頻采集、視頻處理、視頻存儲、視頻傳輸、圖像識別報警、瀏覽器訪問等六個功能模塊。本系統(tǒng)結(jié)構(gòu)圖如圖1所示。
本系統(tǒng)在總體布局上分為遠(yuǎn)程監(jiān)控端(瀏覽器端)和現(xiàn)場采集端(服務(wù)器端)兩個部分。
遠(yuǎn)程監(jiān)控端運行于控制中心,它實時接收和顯示視頻數(shù)據(jù),并且可以通過發(fā)出相應(yīng)命令來控制現(xiàn)場的相關(guān)信息。本監(jiān)控系統(tǒng)的節(jié)點運行于現(xiàn)場的遠(yuǎn)端,節(jié)點包括視頻采集和處理兩部分,負(fù)責(zé)視頻信息的采集、處理并將視頻數(shù)據(jù)通過網(wǎng)絡(luò)向監(jiān)控端發(fā)送。
節(jié)點控制處理器采用MINI2440系統(tǒng)板,它是基于S3C2440 處理器的開發(fā)系統(tǒng)板,系統(tǒng)用到的外設(shè)接口有:RS-232串口(COM1)、USB HOST接口、USB Slave B型接口、SD卡存儲接口、10M以太網(wǎng)接口。通過RS-232接口連接到宿主機(jī)上,通過在USB接口上外接攝像頭,將采集到的視頻圖像數(shù)據(jù)傳輸緩沖區(qū)中,然后運行圖像處理程序,并通過以太網(wǎng)傳到遠(yuǎn)端,歷史視頻記錄保存到SD卡。系統(tǒng)硬件框架如圖2所示。
本系統(tǒng)基于B/S模式的結(jié)構(gòu),服務(wù)器端包括 USB攝像頭驅(qū)動、視頻采集、視頻處理、RTP/RTCP流媒體實時傳輸、圖像識別自動報警等控制程序,遠(yuǎn)程監(jiān)控端只需要安裝播放器和JDK即可。系統(tǒng)軟件層次如圖3所示。
3 視頻監(jiān)控系統(tǒng)的實現(xiàn)
3.1 環(huán)境配置
本系統(tǒng)的主機(jī)采用x86體系結(jié)構(gòu)的Linux系統(tǒng)。目標(biāo)系統(tǒng)是三星的S3C2440A處理器,需要在主機(jī)上搭建交叉編譯環(huán)境。交叉編譯流程如圖4所示。
由于系統(tǒng)前臺的一些操作,如用戶登錄、注冊等需要應(yīng)用到perl編程,而開發(fā)板上使用的Linux內(nèi)核是不支持perl程序的運行,因此要在Mini2440上搭建perl環(huán)境,即將perl移植到mini2440上,使得系統(tǒng)能運行perl腳本語言程序。
3.2 驅(qū)動加載
本系統(tǒng)平臺上運行的是ARM Linux,在啟動后,啟用了內(nèi)存管理單元,系統(tǒng)進(jìn)入保護(hù)模式,應(yīng)用程序不能直接讀寫外設(shè)的I/O區(qū)域(包括I/O端口和I/O內(nèi)存),這時就要借助于外設(shè)的驅(qū)動來進(jìn)入內(nèi)核完成工作,因此,必須設(shè)計驅(qū)動并將其加載到內(nèi)核中。
本系統(tǒng)主要用到了攝像頭驅(qū)動,因此在進(jìn)行應(yīng)用程序開發(fā)之前,需將攝像頭驅(qū)動加載到嵌入式Linux內(nèi)核中。在臺式機(jī)上一般采用動態(tài)加載的方式,但本系統(tǒng)是嵌入式產(chǎn)品,因此設(shè)計時先用動態(tài)加載的方式來對驅(qū)動進(jìn)行調(diào)試,調(diào)試完畢后再編譯到內(nèi)核里。即先進(jìn)行動態(tài)加載調(diào)試,后將其靜態(tài)加載到內(nèi)核中。利用交叉編譯工具編譯、鏈接驅(qū)動程序,生成驅(qū)動模塊文件,利用insmod命令將其動態(tài)加載到內(nèi)核,進(jìn)行調(diào)試,正確后,在將其靜態(tài)加載到內(nèi)核。
3.3 Linux內(nèi)核配置與移植
由于考慮到嵌入式資源和性能的特殊要求,必須對Linux進(jìn)行裁剪,使得嵌入式Linux既能滿足系統(tǒng)需求,也可滿足資源要求,因此在做了驅(qū)動加載后,還必須對Linux內(nèi)核進(jìn)行重新配置并將其移植到開發(fā)板上。根據(jù)設(shè)計需求,必須配置USB模塊以及video4linux的支持。
進(jìn)入Linux內(nèi)核文件,在終端中輸入命令:
make menuconfig:
Device Drivers→Multimedia devices→<*>Video For Linux,
Device Drivers→USB support→<*> USB OV511
Camera support,
保存并退出后重新編譯內(nèi)核,運行命令:make dep和make zImage,即可生成配置好的內(nèi)核映像文件。
3.4 實時視頻監(jiān)控
將視頻采集和傳輸統(tǒng)一成一個應(yīng)用程序,即實時視頻,程序內(nèi)創(chuàng)建兩個線程,一個用來進(jìn)行影像采集,采集的影像是JPEG格式;另外一個用來傳輸視頻,然后配合JDK遠(yuǎn)程執(zhí)行兩個java程序:JWEBCAMPLAYER和SWINGWORKER以及JWEBCAMPLAYER.JAR,即可實現(xiàn)實時監(jiān)控。
為了提高采集和傳輸效率,需實時監(jiān)控,系統(tǒng)開辟了四個圖像幀緩沖區(qū)(即OUTFRMNUMB=4)輪流進(jìn)行采集,在緩沖區(qū)滿后完成本次采集過程。隨后攝像頭重新回到預(yù)設(shè)狀態(tài),發(fā)送信號喚醒圖像處理程序,利用jpeg壓縮庫(jpeglib)進(jìn)行壓縮編碼,同時采集程序獲得的幀圖像并覆蓋保存至另一個緩沖內(nèi),四個緩沖區(qū)輪流使用,不丟棄任何無用的幀,而且只傳輸JPEG文件的數(shù)據(jù),頭文件確保只傳輸一次,這樣保證了傳輸?shù)男?,并且圖像采集與傳輸同步。根據(jù)以上的基本設(shè)計思路,畫出程序設(shè)計流程圖如圖5所示。
采集程序使用了Video4Linux API,其中V4L為兩層式架構(gòu),上層為V4L 驅(qū)動程序,下層是USB攝像頭驅(qū)動程序。正確添加V4L和USB攝像頭驅(qū)動后,系統(tǒng)會產(chǎn)生設(shè)備文件,即可進(jìn)行視頻采集。流程如圖6。
[開始][獲取設(shè)備信息和圖像信息VIDIOCGCAP、VIDIOCGPICT][圖像參數(shù)設(shè)定VIDIOCSPICT][內(nèi)存映射MMAP][視頻采集VIDIOCCAPTRUE][等待采集完成VIDIOSYNC][本緩沖區(qū)滿] [發(fā)送信號喚醒圖像處理進(jìn)程][指向下一個緩沖區(qū)
Fbuffer_counter=(fbuffer_counter+1)%OUTBUFNUM][停止采集?] [關(guān)閉視頻設(shè)備][結(jié)束] [否][否]
圖6 視頻采集流程圖
系統(tǒng)結(jié)合影像采集程序和視頻傳輸程序,采用多線程編程機(jī)制,將影像采集和視頻傳輸分別在兩個不同的線程內(nèi)實現(xiàn),通過信號量和相關(guān)線程鎖的控制,解決了視頻采集和傳輸同步問題,提高了系統(tǒng)的實時性。并且設(shè)計時利用JDK軟件遠(yuǎn)程加載對相關(guān)java小程序,將本地IP與服務(wù)器進(jìn)行了連接,實現(xiàn)了雙方間的網(wǎng)絡(luò)通信,保證了視頻流的傳輸。而且系統(tǒng)可以通過網(wǎng)頁上的控制按鈕,來改變視頻的亮度。
3.5 視頻存儲
此模塊應(yīng)用了強(qiáng)大的ffmpeg開源代碼實現(xiàn),ffmpeg能夠快速實現(xiàn)音視頻格式轉(zhuǎn)換,也能從音視頻源獲取數(shù)據(jù)并將其保存。系統(tǒng)通過設(shè)置ffmpeg命令行的參數(shù)來控制音視頻數(shù)據(jù)。由于嵌入式系統(tǒng)與PC上的CPU體系結(jié)構(gòu)是不一致的,如在Mini2440試驗系統(tǒng)上的CPU是基于ARM9的三星S3C2440處理器,而主機(jī)上的CPU為Intel X86體系結(jié)構(gòu)的。ffmpeg針對X86體系結(jié)構(gòu)下的Linux操作系統(tǒng)是可以直接編譯通過并安裝的,而在ARM體系結(jié)構(gòu)下是需要交叉編譯后才能使用。因此根據(jù)需求和ffmpeg內(nèi)容,編寫并修改Makefile文件,即可利用Make管理ffmpeg項目。
3.6 圖像識別報警
此模塊檢測是否有不明物體進(jìn)入監(jiān)控現(xiàn)場,如果有,就驅(qū)動蜂鳴器響,實現(xiàn)當(dāng)場報警。
[開始][打開視頻設(shè)備][設(shè)置采集圖片參數(shù)][是否打開成功] [采集BMP圖片][打開服務(wù)器套接字
建立網(wǎng)絡(luò)連接][與背景圖片進(jìn)行比對
提取相差部分][是否超過閥值] [驅(qū)動蜂鳴器報警][延續(xù)10秒的報警時間][報警結(jié)束,繼續(xù)檢測][關(guān)閉攝像設(shè)備][結(jié)束] [是] [否] [否][是]
圖7 報警流程圖
通過采集圖片的程序,將攝像頭直對的某個區(qū)域靜止情況采集下來,保存成一張bmp圖片(當(dāng)作背景圖片)(應(yīng)該適時更新),然后啟動另一個程序,隔一段時間采集一張此時情況下的圖片,然后分別對兩張圖片進(jìn)行二值化處理,加上系統(tǒng)的容錯數(shù)據(jù),即可檢測是否有不明物體進(jìn)入現(xiàn)場,即實現(xiàn)了自動報警。根據(jù)這一設(shè)計思想設(shè)計出報警檢測流程圖,如圖7所示。
4 系統(tǒng)測試
4.1 實時監(jiān)控測試
打開服務(wù)器,搭建好系統(tǒng),設(shè)置瀏覽器端與服務(wù)器的網(wǎng)絡(luò)連通,即可進(jìn)行系統(tǒng)功能和性能測試。
4.2 視頻保存功能測試
將采集的視頻保存為文件video.avi,將其拷貝到PC機(jī)上,通過暴風(fēng)影音等播放器,即可觀看采集下來的歷史視頻記錄。
4.3 自動報警功能測試
將物體或者人放在監(jiān)控鏡頭的各個位置,判斷此刻監(jiān)控鏡頭中是否有不明物體出現(xiàn)。
測試條件:
⑴ 無物/人:表示此刻監(jiān)控鏡頭沒有任何物體存在,沒人;
⑵ 有物:表示此刻監(jiān)控鏡頭有物體進(jìn)入,但不是人;
⑶ 有人:表示此刻監(jiān)控鏡頭有人存在。
5 結(jié)論
本系統(tǒng)設(shè)計的重點是在處理將采集來的影像通過網(wǎng)絡(luò)暢通的傳輸?shù)竭h(yuǎn)程監(jiān)控端,因為視頻流的暢通傳輸決定了本系統(tǒng)的性能,如果不能解決好此問題,整個系統(tǒng)是難以實現(xiàn)。針對這些問題,在視頻采集時使用了四個緩沖區(qū)來存儲采集的信號,四個緩沖區(qū)輪流使用,不丟棄任何幀,而且傳輸?shù)臅r候只傳輸JPEG文件的數(shù)據(jù),頭文件只傳輸一次,這樣保證了傳輸?shù)男?,并且圖像采集與傳輸同步進(jìn)行。
從總體上看,本系統(tǒng)實現(xiàn)基于嵌入式Web的遠(yuǎn)程視頻監(jiān)控這一基本功能以及其他一般監(jiān)控所具有的功能,并具有很強(qiáng)的交互性及實時性,開發(fā)成本低等特點,可以廣泛地應(yīng)用于遠(yuǎn)程視頻監(jiān)控。但是,系統(tǒng)仍然存在一些需要改進(jìn)的地方,例如由于攝像頭是普通的攝像頭,性能存在不足,會影響最后的觀察效果;另外,各模塊之間存在結(jié)合不緊密的缺點。這些問題有待改進(jìn)。
參考文獻(xiàn)(References):
[1] 周小仨.基于嵌入式的多路視頻監(jiān)控傳輸系統(tǒng)研究[J].信息
與電腦,2015.4:1-2
[2] 伊國棟.ARM的嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計[J].電子技
術(shù)與軟件工程,2014.15:149-149
[3] 張桐.基于Linux的嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)設(shè)計[D].重慶大
學(xué),2013.
[4] 劉金梅.基于B/S架構(gòu)的嵌入式Web遠(yuǎn)程監(jiān)控系統(tǒng)的研究
與實現(xiàn)[D].內(nèi)蒙古大學(xué),2012.
[5] 朱兆祺,李強(qiáng),袁晉蓉.嵌入式Linux開發(fā)實用教程[M].人民郵
電出版社,2014.
[6] 蔡麗艷.嵌入式Web視頻監(jiān)控系統(tǒng)研究[J].計算機(jī)技術(shù)與發(fā)
展,2013.5:192-194,198
[7] 王峰,劉蓓莉,馮玉森.基于Hi3516的Web視頻監(jiān)控系統(tǒng)的
設(shè)計與實現(xiàn)[J].電子科技,2013.10:62-63,66
[8] 邸煒?biāo)?基于嵌入式Linux的溫室遠(yuǎn)程監(jiān)控系統(tǒng)的研究[D].天
津理工大學(xué),2015.