主頁(http://www.130131.com):一種嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的硬件設(shè)計(2)
![]() 圖5視頻采集電路原理框圖 4、外圍電路模塊 本設(shè)計用到的外設(shè)有USB接口,網(wǎng)卡接口,串行接口和JTAG接口。同時為保證系統(tǒng)將來的可擴展性,系統(tǒng)還預(yù)留了PC104接口和大量的GPIO接口。AT91RM9200處理器的片內(nèi)以太網(wǎng)卡端口和網(wǎng)絡(luò)物理層芯片DM9161E 的MII 接口通信。而且片內(nèi)以太網(wǎng)卡內(nèi)置了獨立的雙緩沖的讀寫DMA 通道,這樣大大提供了數(shù)據(jù)的發(fā)送速度,同時不影響AT91RM9200 的正常運行。 為保證視頻采集質(zhì)量,監(jiān)控系統(tǒng)選用了羅技等高端品牌的產(chǎn)品,然后攝像頭通過專用的USB集線器與處理器單元的USB接口連接。在實時監(jiān)控狀態(tài)下,各個攝像頭上捕獲的圖像數(shù)據(jù)通過USB集線器傳輸?shù)揭曨l監(jiān)控系統(tǒng)的USB主控制器模塊上,然后再由USB主控制器模塊交由AT91RM9200處理器集中處理。AT91RM9200對采集到的圖像進行實時編碼壓縮,編碼之后的碼流直接傳輸?shù)桨l(fā)送緩沖區(qū)中,等候發(fā)送。最后由上層應(yīng)用程序?qū)⑻幚砗蟮囊曨l數(shù)據(jù)通過以太網(wǎng)口進行發(fā)送。 四、軟件方案 系統(tǒng)的應(yīng)用軟件建立在Linux操作系統(tǒng)之上,嵌入式Linux具有許多優(yōu)點,如開放源碼,功能強大的內(nèi)核,支持多用戶、多線程、多進程、實時性好、功能強大穩(wěn)定;大小功能可定制等。本系統(tǒng)采用的嵌入式Linux系統(tǒng)是基于2.6.21的內(nèi)核,支持了內(nèi)核搶占式調(diào)度,同時調(diào)度周期為1ms,因此大大保證了系統(tǒng)的實時性。此外,系統(tǒng)內(nèi)嵌的嵌入式Linux系統(tǒng)實現(xiàn)了對所有硬件設(shè)備的驅(qū)動支持,如基于Flash的文件系統(tǒng)、網(wǎng)卡驅(qū)動程序、USB驅(qū)動程序等等,完全保證了系統(tǒng)的可用性。 在本系統(tǒng)中,軟件設(shè)計可分為3部分:視頻圖像數(shù)據(jù)采集、圖像數(shù)據(jù)的JPEG壓縮以及系統(tǒng)平臺的網(wǎng)絡(luò)通信。 1、視頻圖像數(shù)據(jù)采集的實現(xiàn) 首先加載USB攝像頭驅(qū)動程序,接著就是編寫一個對視頻流采集的應(yīng)用程序。攝像頭中的各種I/O口的控制主要依靠Vide04Linux提供的應(yīng)用程序接口函數(shù)實現(xiàn),主要有Open、Read、Write等。V4L下的視頻采集1。在本系統(tǒng)中,將有關(guān)攝像頭的各種數(shù)據(jù)和結(jié)構(gòu)封裝成了一個類,主要用到的一些系統(tǒng)調(diào)用函數(shù)定義如下: open(“/dev/vide00”,O—RDWR):設(shè)備的打開。 close(fd):設(shè)備的關(guān)閉。 mmap(void+addr,size—t len,int prot,int flags,int fd,off__t offset): 設(shè)備緩沖區(qū)到內(nèi)存空間的映射。 munmap(void*addr,size t len):采集工作結(jié)束后取消mmap和mbuf的綁定。 ioctl(int Rl,jnt cmd...,):控制I/O的通道。 2、Linux下圖象數(shù)據(jù)的JPEG壓縮 由于視頻信息數(shù)據(jù)量過大,因此必須在視頻傳輸前對圖像數(shù)據(jù)進行壓縮處理。在本系統(tǒng)中,攝像頭采集過來的圖像數(shù)據(jù)格式為RGB24,通過調(diào)用Linux下的Libjpeg庫來實現(xiàn)視頻數(shù)據(jù)的編碼,把RGB24圖像數(shù)據(jù)轉(zhuǎn)換為JPEG格式。下面簡述下整個壓縮處理過程:首先初始化JPEG壓縮的圖片格式,調(diào)用jpeg_set—defauhs(&cmjpeg),接著初始化JPEG壓縮圖片質(zhì)量,通過jpeg_set—ratio(&cmjpeg,ratio,7rURE)實現(xiàn)。 開始壓縮:jpeg_start—compress(&cmjpeg,TURE);for(i--0,line--buf;i<_height;i++,line+=_width*3)jpeg_write—seanlines(&cmjpeg,&line,1); 壓縮完成:jpeg_finish—eompress(&cmjpeg); 將壓縮得到的數(shù)據(jù)拷貝到j(luò)peg數(shù)據(jù)變量中: memepy(new一>buf 0。((_dst_ptr)cmjpeg.dest)一>buffer,size); 釋放內(nèi)存并銷毀cmjpeg變量:jpeg_destory_compress(&cmjpeg) jpeg_buff_free(&emjpeg); 最后返回return size;返回值size標記了緩沖區(qū)中視頻數(shù)據(jù)的實際長度。 3、系統(tǒng)網(wǎng)絡(luò)通訊的實現(xiàn) 本系統(tǒng)采用B/S(瀏覽器/服務(wù)器)模式的通信構(gòu)架。用戶只需在遠程客戶機安裝一個普通的瀏覽器軟件,其他大部分工作由Web服務(wù)器完成。B/S模式開發(fā)的監(jiān)控軟件,降低了對系統(tǒng)軟件的要求,避免了用戶對客戶端的安裝和設(shè)置,實現(xiàn)了軟件安裝的簡單化、自由化。 視頻監(jiān)控系統(tǒng)實現(xiàn)了對USB攝像頭的驅(qū)動程序,這樣上層視頻采集程序可以直接通過標準的Video4Linux接口函數(shù)訪問USB攝像頭設(shè)備,捕獲實時的視頻流,放入上層緩沖區(qū),同時通知上層服務(wù)器軟件處理。 系統(tǒng)中內(nèi)置了一個完整的基于網(wǎng)絡(luò)的多用戶視頻服務(wù)器軟件,這樣當服務(wù)器軟件監(jiān)聽到有網(wǎng)絡(luò)客戶連接時,立即啟動采集進程從緩沖區(qū)中把處理后的視頻流數(shù)據(jù)讀出,然后發(fā)送給相應(yīng)的客戶連接。同時為了保證監(jiān)控客戶端的簡單性與統(tǒng)一性,本系統(tǒng)中的客戶端可以直接使用IE軟件,即用戶打開PC端的IE軟件后,直接在地址欄內(nèi)輸入需要訪問的設(shè)備IP地址或者域名,如192.168.0.5,此時就可以在IE瀏覽器中顯示當前的實時采集圖像。 五、結(jié)論 本系統(tǒng)采用嵌入式Linux,操作系統(tǒng)和ARM核處理器的硬件平臺相結(jié)合,視頻信號從前端圖像采集設(shè)備輸出時即為數(shù)字信號,以網(wǎng)絡(luò)為傳輸媒介,并基于國際通用的TCP/IP協(xié)議,使用流媒體技術(shù)實現(xiàn)視頻信號在網(wǎng)絡(luò)上的傳輸,構(gòu)成了一個高質(zhì)量、監(jiān)控方式靈活、可靠性好和具有易于擴展架構(gòu)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。ARM處理核和Linux。相結(jié)合,很好地體現(xiàn)了整個監(jiān)控小型化、數(shù)字化、網(wǎng)絡(luò)化、低功耗的優(yōu)點。系統(tǒng)電路板現(xiàn)已成功配置和運行,調(diào)試結(jié)果表明,整個系統(tǒng)具有穩(wěn)定可靠、安裝簡便、成本低廉等特點,可廣泛使用在家庭、銀行、超市、公共場所等。 (中國集群通信網(wǎng) | 責(zé)任編輯:陳曉亮) |





