鄧麗萍



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