摘要:視頻監(jiān)控系統(tǒng)隨著嵌入式技術(shù)、多媒體技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的快速發(fā)展也在不斷地更新。本文設(shè)計(jì)實(shí)現(xiàn)了一個(gè)基于嵌入式處理器ARM9的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。利用linux操作系統(tǒng)提供的V4L2 API實(shí)現(xiàn)對視頻設(shè)備的視頻數(shù)據(jù)采集;使用Libjpeg進(jìn)行視頻壓縮,實(shí)現(xiàn)了視頻數(shù)據(jù)的網(wǎng)絡(luò)傳送和遠(yuǎn)程監(jiān)控。基于嵌入式技術(shù)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)與傳統(tǒng)的視頻監(jiān)控系統(tǒng)相比具有體積小、成本低、穩(wěn)定性高、實(shí)時(shí)性好等優(yōu)點(diǎn),具有廣闊的應(yīng)用前景。
關(guān)鍵詞:ARM9;Linux;視頻監(jiān)控;WEB服務(wù)器
中圖分類號:TP277 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 23-0000-02
1 前言
隨著網(wǎng)絡(luò)帶寬的提高和成本的降低以及各種實(shí)用視頻處理技術(shù)的出現(xiàn),視頻監(jiān)控步入了全數(shù)字化的網(wǎng)絡(luò)時(shí)代。近兩年隨著遠(yuǎn)程監(jiān)控系統(tǒng)應(yīng)用于各個(gè)領(lǐng)域,對視頻監(jiān)控系統(tǒng)的要求也更高:操作簡單、實(shí)時(shí)可靠、多功能、數(shù)字化、經(jīng)濟(jì)實(shí)用的視頻監(jiān)控系統(tǒng)的開發(fā)和設(shè)計(jì)越來越多地受到人們的矚目?;谇度胧郊夹g(shù)的網(wǎng)絡(luò)化視頻監(jiān)控系統(tǒng)應(yīng)運(yùn)而生?;谇度胧絎EB監(jiān)控系統(tǒng)由于把視頻處理和WEB功能集成到一個(gè)體積很小的設(shè)備內(nèi),能連入以太網(wǎng),達(dá)到即插即看,安裝方便,用戶界面通過WWW瀏覽器實(shí)現(xiàn),不必是專門的網(wǎng)絡(luò)硬件環(huán)境也無需專用軟件。
2 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)拓?fù)浣Y(jié)構(gòu)如圖1。系統(tǒng)采用B/S架構(gòu)。視頻由USB攝像頭輸入,支持YUYV和MJPEG的攝像頭。視頻數(shù)據(jù)通過USB傳輸?shù)絘rm開發(fā)板。開發(fā)板與客戶端通過互聯(lián)網(wǎng)連通。用戶在瀏覽器地址欄輸入網(wǎng)址和端口,登錄后可以在瀏覽器頁面看到監(jiān)控的視頻畫面,同時(shí)支持多個(gè)瀏覽器同時(shí)顯示。
3 視頻采集的實(shí)現(xiàn)
3.1 視頻采集。攝像頭采集到的視頻數(shù)據(jù)并不能直接發(fā)送給瀏覽器顯示,需要進(jìn)行圖像格式,文件格式等轉(zhuǎn)換后才能傳送給瀏覽器顯示,為了減少碼流通常還需要圖像壓縮。大多數(shù)攝像頭都是以MJPG/YUV格式輸出視頻。本設(shè)計(jì)中需要將攝像頭輸出的YUV格式的圖像數(shù)據(jù),通過libjpeg壓縮為JPEG。libjpeg 是一個(gè)完全用C語言編寫的庫,包含了被廣泛使用的JPEG解碼、JPEG編碼和其他的JPEG功能的實(shí)現(xiàn)。但是libjpeg不支持直接壓縮YUV,因此先將YUV數(shù)據(jù)轉(zhuǎn)換成RGB再調(diào)用libjpeg庫來壓縮成JPEG。
3.2 Socket編程。視頻的傳送需要遵照一定的協(xié)議才能正確實(shí)現(xiàn)數(shù)據(jù)發(fā)送,包括網(wǎng)絡(luò)通信協(xié)議TCP/IP,以及Linux操作系統(tǒng)中的網(wǎng)絡(luò)編程即Socket編程。
在Linux中的網(wǎng)絡(luò)編程是通過Socket接口來進(jìn)行的。它是一種特殊的I/O接口,也是一種常用的進(jìn)程之間的通信機(jī)制,通過它不僅能實(shí)現(xiàn)本地機(jī)器上的進(jìn)程之間的通信,而且通過網(wǎng)絡(luò)能夠?qū)崿F(xiàn)在不同機(jī)器上不同進(jìn)程之間進(jìn)行通信。
Socket信息保存在sockaddr_in結(jié)構(gòu)中。在Linux中所有設(shè)備都看作文件,創(chuàng)建Socket后,返回描文件描述符,隨后的連接、數(shù)據(jù)收發(fā)等操作都是通過該文件描述符操作的。本系統(tǒng)使用TCP協(xié)議作為傳輸層協(xié)議。
TCP協(xié)議socket編程流程如圖2。首先服務(wù)器端和客戶端都必須創(chuàng)建Socket,它是通信的基礎(chǔ)。服務(wù)器綁定了IP和端口等之后,執(zhí)行監(jiān)聽,接著調(diào)用accept等待客戶端發(fā)送連接請求。此時(shí),客戶端可以跳過綁定,直接向服務(wù)器發(fā)送連接請求connect,雙方便建立通信連接。若連接成功,雙方就可以實(shí)現(xiàn)收發(fā)數(shù)據(jù)。通信結(jié)束后雙方都要關(guān)閉Socket,并釋放Socket結(jié)構(gòu)。
3.3 測試結(jié)果。(1)在瀏覽器地址欄輸入:http://172.16.64.119:8080/,其中172.16.64.119為arm的IP地址,8080為端口號,在output_init函數(shù)中指定。輸入用戶名和密碼,如圖3。(2)登錄后即可看到攝像頭捕獲的圖像,效果如圖4。
4 結(jié)束語
上述基于ARM的遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì),獲得了較好的圖像和視頻的監(jiān)控效果,在圖像壓縮時(shí)采用的Libjpeg的壓縮效率不是很高,今后考慮移植效率更高的壓縮庫。
智能監(jiān)控是視頻監(jiān)控未來的發(fā)展方向。下一步考慮通過ARM的遠(yuǎn)程視頻監(jiān)控,對視頻進(jìn)行智能行為識別算法的研究,對監(jiān)控場景中的人或車輛的行為進(jìn)行識別、判斷,從而實(shí)現(xiàn)智能化。
參考文獻(xiàn):
[1]周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社.2005.
[2]田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用[M].北京:北京航空航大人學(xué)出版社.2004.
[3]周強(qiáng),費(fèi)章君,王強(qiáng),楊仕友.基于H.264的嵌入式網(wǎng)絡(luò)視頻服務(wù)器的設(shè)計(jì)與開發(fā)[J].計(jì)算機(jī)應(yīng)用.2010(02)
[4]陳炳文,王文偉,秦前清.多攝像機(jī)目標(biāo)跟蹤系統(tǒng)綜述[J].微型機(jī)與應(yīng)用.2010(17)
*基金項(xiàng)目:湖南省高等學(xué)校科學(xué)研究項(xiàng)目(11C0368)資助。
[作者簡介]
吳樂(1981-),女,湖南人,碩士研究生,講師。研究方向:計(jì)算機(jī)應(yīng)用技術(shù)。
計(jì)算機(jī)光盤軟件與應(yīng)用2012年23期