一種嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的硬件設(shè)計(jì)
為保證視頻采集質(zhì)量,監(jiān)控系統(tǒng)選用了羅技等高端品牌的產(chǎn)品,然后攝像頭通過專用的USB集線器與處理器單元的USB接口連接。在實(shí)時(shí)監(jiān)控狀態(tài)下,各個(gè)攝像頭上捕獲的圖像數(shù)據(jù)通過USB集線器傳輸?shù)揭曨l監(jiān)控系統(tǒng)的USB主控制器模塊上,然后再由USB主控制器模塊交由AT91RM9200處理器集中處理。AT91RM9200對采集到的圖像進(jìn)行實(shí)時(shí)編碼壓縮,編碼之后的碼流直接傳輸?shù)桨l(fā)送緩沖區(qū)中,等候發(fā)送。最后由上層應(yīng)用程序?qū)⑻幚砗蟮囊曨l數(shù)據(jù)通過以太網(wǎng)口進(jìn)行發(fā)送。本文引用地址:http://m.butianyuan.cn/article/151766.htm
四、軟件方案
系統(tǒng)的應(yīng)用軟件建立在Linux操作系統(tǒng)之上,嵌入式Linux具有許多優(yōu)點(diǎn),如開放源碼,功能強(qiáng)大的內(nèi)核,支持多用戶、多線程、多進(jìn)程、實(shí)時(shí)性好、功能強(qiáng)大穩(wěn)定;大小功能可定制等。本系統(tǒng)采用的嵌入式Linux系統(tǒng)是基于2.6.21的內(nèi)核,支持了內(nèi)核搶占式調(diào)度,同時(shí)調(diào)度周期為1ms,因此大大保證了系統(tǒng)的實(shí)時(shí)性。此外,系統(tǒng)內(nèi)嵌的嵌入式Linux系統(tǒng)實(shí)現(xiàn)了對所有硬件設(shè)備的驅(qū)動(dòng)支持,如基于Flash的文件系統(tǒng)、網(wǎng)卡驅(qū)動(dòng)程序、USB驅(qū)動(dòng)程序等等,完全保證了系統(tǒng)的可用性。
在本系統(tǒng)中,軟件設(shè)計(jì)可分為3部分:視頻圖像數(shù)據(jù)采集、圖像數(shù)據(jù)的JPEG壓縮以及系統(tǒng)平臺的網(wǎng)絡(luò)通信。
1、視頻圖像數(shù)據(jù)采集的實(shí)現(xiàn)
首先加載USB攝像頭驅(qū)動(dòng)程序,接著就是編寫一個(gè)對視頻流采集的應(yīng)用程序。攝像頭中的各種I/O口的控制主要依靠Vide04Linux提供的應(yīng)用程序接口函數(shù)實(shí)現(xiàn),主要有Open、Read、Write等。V4L下的視頻采集1。在本系統(tǒng)中,將有關(guān)攝像頭的各種數(shù)據(jù)和結(jié)構(gòu)封裝成了一個(gè)類,主要用到的一些系統(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ù)進(jìn)行壓縮處理。在本系統(tǒng)中,攝像頭采集過來的圖像數(shù)據(jù)格式為RGB24,通過調(diào)用Linux下的Libjpeg庫來實(shí)現(xiàn)視頻數(shù)據(jù)的編碼,把RGB24圖像數(shù)據(jù)轉(zhuǎn)換為JPEG格式。下面簡述下整個(gè)壓縮處理過程:首先初始化JPEG壓縮的圖片格式,調(diào)用jpeg_set―defauhs(cmjpeg),接著初始化JPEG壓縮圖片質(zhì)量,通過jpeg_set―ratio(cmjpeg,ratio,7rURE)實(shí)現(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標(biāo)記了緩沖區(qū)中視頻數(shù)據(jù)的實(shí)際長度。
3、系統(tǒng)網(wǎng)絡(luò)通訊的實(shí)現(xiàn)
本系統(tǒng)采用B/S(瀏覽器/服務(wù)器)模式的通信構(gòu)架。用戶只需在遠(yuǎn)程客戶機(jī)安裝一個(gè)普通的瀏覽器軟件,其他大部分工作由Web服務(wù)器完成。B/S模式開發(fā)的監(jiān)控軟件,降低了對系統(tǒng)軟件的要求,避免了用戶對客戶端的安裝和設(shè)置,實(shí)現(xiàn)了軟件安裝的簡單化、自由化。
視頻監(jiān)控系統(tǒng)實(shí)現(xiàn)了對USB攝像頭的驅(qū)動(dòng)程序,這樣上層視頻采集程序可以直接通過標(biāo)準(zhǔn)的Video4Linux接口函數(shù)訪問USB攝像頭設(shè)備,捕獲實(shí)時(shí)的視頻流,放入上層緩沖區(qū),同時(shí)通知上層服務(wù)器軟件處理。
系統(tǒng)中內(nèi)置了一個(gè)完整的基于網(wǎng)絡(luò)的多用戶視頻服務(wù)器軟件,這樣當(dāng)服務(wù)器軟件監(jiān)聽到有網(wǎng)絡(luò)客戶連接時(shí),立即啟動(dòng)采集進(jìn)程從緩沖區(qū)中把處理后的視頻流數(shù)據(jù)讀出,然后發(fā)送給相應(yīng)的客戶連接。同時(shí)為了保證監(jiān)控客戶端的簡單性與統(tǒng)一性,本系統(tǒng)中的客戶端可以直接使用IE軟件,即用戶打開PC端的IE軟件后,直接在地址欄內(nèi)輸入需要訪問的設(shè)備IP地址或者域名,如192.168.0.5,此時(shí)就可以在IE瀏覽器中顯示當(dāng)前的實(shí)時(shí)采集圖像。
五、結(jié)論
本系統(tǒng)采用嵌入式Linux,操作系統(tǒng)和ARM核處理器的硬件平臺相結(jié)合,視頻信號從前端圖像采集設(shè)備輸出時(shí)即為數(shù)字信號,以網(wǎng)絡(luò)為傳輸媒介,并基于國際通用的TCP/IP協(xié)議,使用流媒體技術(shù)實(shí)現(xiàn)視頻信號在網(wǎng)絡(luò)上的傳輸,構(gòu)成了一個(gè)高質(zhì)量、監(jiān)控方式靈活、可靠性好和具有易于擴(kuò)展架構(gòu)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。ARM處理核和Linux。相結(jié)合,很好地體現(xiàn)了整個(gè)監(jiān)控小型化、數(shù)字化、網(wǎng)絡(luò)化、低功耗的優(yōu)點(diǎn)。系統(tǒng)電路板現(xiàn)已成功配置和運(yùn)行,調(diào)試結(jié)果表明,整個(gè)系統(tǒng)具有穩(wěn)定可靠、安裝簡便、成本低廉等特點(diǎn),可廣泛使用在家庭、銀行、超市、公共場所等。
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論