<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的硬件設(shè)計

          一種嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的硬件設(shè)計

          作者: 時間:2010-06-28 來源:網(wǎng)絡(luò) 收藏

          為保證視頻采集質(zhì)量,選用了羅技等高端品牌的產(chǎn)品,然后攝像頭通過專用的USB集線器與處理器單元的USB接口連接。在實時監(jiān)控狀態(tài)下,各個攝像頭上捕獲的圖像數(shù)據(jù)通過USB集線器傳輸?shù)揭曨l的USB主控制器模塊上,然后再由USB主控制器模塊交由AT91RM9200處理器集中處理。AT91RM9200對采集到的圖像進(jìn)行實時編碼壓縮,編碼之后的碼流直接傳輸?shù)桨l(fā)送緩沖區(qū)中,等候發(fā)送。最后由上層應(yīng)用程序?qū)⑻幚砗蟮囊曨l數(shù)據(jù)通過以太網(wǎng)口進(jìn)行發(fā)送。

          本文引用地址:http://www.ex-cimer.com/article/151766.htm


          四、軟件方案


          系統(tǒng)的應(yīng)用軟件建立在Linux操作系統(tǒng)之上,Linux具有許多優(yōu)點,如開放源碼,功能強大的內(nèi)核,支持多用戶、多線程、多進(jìn)程、實時性好、功能強大穩(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)中,軟件可分為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ù)進(jìn)行壓縮處理。在本系統(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標(biāo)記了緩沖區(qū)中視頻數(shù)據(jù)的實際長度。

          3、系統(tǒng)網(wǎng)絡(luò)通訊的實現(xiàn)
          本系統(tǒng)采用B/S(瀏覽器/服務(wù)器)模式的通信構(gòu)架。用戶只需在遠(yuǎn)程客戶機安裝一個普通的瀏覽器軟件,其他大部分工作由Web服務(wù)器完成。B/S模式開發(fā)的監(jiān)控軟件,降低了對系統(tǒng)軟件的要求,避免了用戶對客戶端的安裝和設(shè)置,實現(xiàn)了軟件安裝的簡單化、自由化。
          視頻實現(xiàn)了對USB攝像頭的驅(qū)動程序,這樣上層視頻采集程序可以直接通過標(biāo)準(zhǔn)的Video4Linux接口函數(shù)訪問USB攝像頭設(shè)備,捕獲實時的視頻流,放入上層緩沖區(qū),同時通知上層服務(wù)器軟件處理。
          系統(tǒng)中內(nèi)置了一個完整的基于網(wǎng)絡(luò)的多用戶視頻服務(wù)器軟件,這樣當(dāng)服務(wù)器軟件監(jiān)聽到有網(wǎng)絡(luò)客戶連接時,立即啟動采集進(jìn)程從緩沖區(qū)中把處理后的視頻流數(shù)據(jù)讀出,然后發(fā)送給相應(yīng)的客戶連接。同時為了保證監(jiān)控客戶端的簡單性與統(tǒng)一性,本系統(tǒng)中的客戶端可以直接使用IE軟件,即用戶打開PC端的IE軟件后,直接在地址欄內(nèi)輸入需要訪問的設(shè)備IP地址或者域名,如192.168.0.5,此時就可以在IE瀏覽器中顯示當(dāng)前的實時采集圖像。
          五、結(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)的監(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)定可靠、安裝簡便、成本低廉等特點,可廣泛使用在家庭、銀行、超市、公共場所等。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();