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

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > Cortex-A8和H.264的無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)

          Cortex-A8和H.264的無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)

          作者: 時間:2016-10-16 來源:網(wǎng)絡(luò) 收藏

          引言

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

          隨著現(xiàn)代科學(xué)技術(shù)和居民生活水平的提高,以及人們對安全問題的日益重視,在緊急救援和安防系統(tǒng)中得到了廣泛應(yīng)用。無線技術(shù)的發(fā)展解決了傳統(tǒng)有線的布線復(fù)雜,網(wǎng)絡(luò)結(jié)構(gòu)不靈活等技術(shù)問題。無線技術(shù)對于特殊監(jiān)控環(huán)境有著很好的親和性,且移動通信網(wǎng)和無線局域網(wǎng)的快速建設(shè)為的設(shè)計(jì)提供了技術(shù)支持,其中無線局域網(wǎng)WLAN的組建快捷、靈活性強(qiáng)、受環(huán)境限制小、方便網(wǎng)絡(luò)重組和擴(kuò)展。

          國際電信聯(lián)盟對于視頻編碼壓縮制定了H.264/AVC視頻編碼壓縮標(biāo)準(zhǔn),H.264加強(qiáng)了對IP、移動網(wǎng)絡(luò)的丟包、誤碼情況處理,保證了在不同信道中進(jìn)行傳輸?shù)囊曨l圖像質(zhì)量。隨著H.264編碼技術(shù)的提出與應(yīng)用,大大提高了視頻數(shù)據(jù)的壓縮率,減少傳輸時所用的網(wǎng)絡(luò)帶寬,并促進(jìn)了無線網(wǎng)絡(luò)的發(fā)展,同時H.264編碼的網(wǎng)絡(luò)傳輸提取層設(shè)計(jì),可以使視頻數(shù)據(jù)在不同網(wǎng)絡(luò)里進(jìn)行傳輸且適應(yīng)性良好。

          嵌入式芯片功能的增強(qiáng)和開源Linux操作系統(tǒng)的成熟使得基于嵌入式系統(tǒng)的具有更好的穩(wěn)定性和實(shí)時性,結(jié)合無線網(wǎng)絡(luò)技術(shù)使系統(tǒng)具有成本低、組網(wǎng)便捷和實(shí)際應(yīng)用性強(qiáng)等優(yōu)點(diǎn),可以廣泛地應(yīng)用于民用與工用安防系統(tǒng)。

          本文將技術(shù)、圖像壓縮技術(shù)與基于嵌入式視頻監(jiān)控系統(tǒng)相結(jié)合,采用嵌入式ARM Cortex—A8高性能處理器芯片和Linux操作系統(tǒng),將COMS攝像頭采集的視頻流經(jīng)H.264編碼壓縮后由無線網(wǎng)絡(luò)傳輸?shù)奖O(jiān)控端,通過PC監(jiān)控端的FFMPEG模塊和SDL播放模塊完成監(jiān)控視頻數(shù)據(jù)的實(shí)時顯示。

          1 視頻監(jiān)控系統(tǒng)框圖設(shè)計(jì)

          系統(tǒng)采用ARM Cortex—A8內(nèi)核的芯片作為視頻采集端的中央處理器,該處理器運(yùn)行穩(wěn)定時主頻可達(dá)1 GHz,具有MMU功能、64位內(nèi)部總線架構(gòu)、可擴(kuò)展的DRAM內(nèi)存接口、1 G的NAND Flash和DDR2、3通道I2C總線接口、4個USB接口、4路HS-MMC/SD/SDIO/接口等。同時其內(nèi)部集成MFC視頻編解碼器,支持多格式編解碼包含MPEG-4/H.264編碼,且Cortex-A8處理器應(yīng)用NEON信號處理擴(kuò)展指令集提高了H.264和MP3等媒體編碼效率。工作流程為:首先OV3640攝像頭采集圖像信息并通過I2C總線與處理器通信,處理器通過內(nèi)部集成的MFC多格式編碼器將圖像信息進(jìn)行H.264編碼壓縮,視頻圖像再基于USB無線網(wǎng)卡構(gòu)建的WLAN網(wǎng)絡(luò)和實(shí)時傳輸協(xié)議RTP發(fā)送給視頻監(jiān)控PC客戶端,由客戶端進(jìn)行解碼和顯示。系統(tǒng)的軟件結(jié)構(gòu)包含應(yīng)用層程序、設(shè)備驅(qū)動程序和嵌入式Linux操作系統(tǒng)。系統(tǒng)工作時會先執(zhí)行Bootloader引導(dǎo)加載程序進(jìn)行硬件設(shè)備初始化并引導(dǎo)加載Linux 2.6.35內(nèi)核,再加載設(shè)備驅(qū)動程序(包括攝像頭驅(qū)動、驅(qū)動、Nand Flash驅(qū)動等),最后為用戶區(qū)應(yīng)用層程序的執(zhí)行,其中包含視頻采集模塊、H.264編解碼模塊、WiFi無線傳輸模塊和RTP實(shí)時傳輸協(xié)議模塊。系統(tǒng)整體框圖如圖1所示。

          Cortex-A8和H.264的無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)

          2 視頻采集端和無線傳輸設(shè)計(jì)

          2.1 視頻數(shù)據(jù)采集

          在視頻采集端,原始視頻數(shù)據(jù)的采集是通過OV3640圖像傳感器模塊完成,該攝像頭支持300萬像素并支持輸出YUV420圖像數(shù)據(jù),SP5V210處理器通過I2C總線訪問與修改OV3640內(nèi)部寄存器來控制攝像頭功能。

          在Linux操作系統(tǒng)中,通過應(yīng)用Video4Linux(V4L)來實(shí)現(xiàn)視頻采集設(shè)備的各種功能。在Linux內(nèi)核中定義了視頻設(shè)備的統(tǒng)一接口V4L,由統(tǒng)一的API接口庫函數(shù)控制視頻設(shè)備各種功能。其中,V4L2是V4L的升級版,具有更好的兼容性和擴(kuò)展性。V4L2采集視頻信息的流程為:通過ope nVideo()函數(shù)先打開視頻采集設(shè)備文件;初始化設(shè)備信息包括獲得視頻設(shè)備支持的功能屬性和設(shè)置其采集視頻格式;向內(nèi)核申請幀緩存內(nèi)存空間,并將其映射到用戶空間,開始發(fā)送采集信號;讀取視頻緩存幀數(shù)據(jù),可以根據(jù)需求進(jìn)行數(shù)據(jù)的處理;發(fā)送采集停止信號,釋放內(nèi)存映射,關(guān)閉視頻設(shè)備。數(shù)據(jù)采集流程如圖2所示。

          Cortex-A8和H.264的無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)

          2.2 H.264編碼壓縮

          視頻圖像畫面用4:2:0格式存儲,每幀的數(shù)據(jù)大小為1.2 Mb,對于25~30 fps的實(shí)時硬件編碼,其碼流將達(dá)到了30~36 Mbps,無線網(wǎng)絡(luò)帶寬和存儲空間難以承受,需采用H.264壓縮編碼技術(shù)將大數(shù)據(jù)量的視頻數(shù)據(jù)進(jìn)行壓縮。SP5V210內(nèi)部集成了多格式的視頻編解碼器(MFC),支持H.264的硬件編解碼且速度最高可達(dá)到30 fps,可以很好地滿足系統(tǒng)對視頻數(shù)據(jù)壓縮和處理速度的要求。采用MFC硬件編解碼模塊完成視頻數(shù)據(jù)編解碼的程序時,既可以調(diào)用MFC編解碼中的API庫函數(shù),又可以采用MFC中的I/O接口函數(shù),MFC編解碼中的底層驅(qū)動接口封裝實(shí)際上就是API庫函數(shù)。SP5V210的MFC編解碼軟件架構(gòu)如圖3所示。

          Cortex-A8和H.264的無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)

          通過硬件編解碼模塊MFC的API接口函數(shù)實(shí)現(xiàn)H.264視頻編碼壓縮,具體的流程為:

          ①建立H.264編碼器實(shí)例,設(shè)置MFC編碼器的參數(shù)并對其進(jìn)行初始化設(shè)置。

          ②獲取編碼器的輸入緩沖區(qū)地址,讀取視頻數(shù)據(jù),發(fā)送到編碼器的輸入緩沖空間。

          ③進(jìn)行H.264壓縮編碼,獲取編碼后的輸出緩沖區(qū),并對編碼數(shù)據(jù)進(jìn)行相應(yīng)處理。

          ④判斷編碼是否結(jié)束,結(jié)束則釋放編碼器的資源,編碼器關(guān)閉,否則進(jìn)入第2步循環(huán)運(yùn)行。

          2.3 視頻數(shù)據(jù)無線傳輸

          系統(tǒng)的傳輸網(wǎng)絡(luò)是通過USB無線網(wǎng)卡構(gòu)建無線局域網(wǎng)的方式完成,利用無線的信道來傳輸編碼后的視頻數(shù)據(jù),WiFi(Wireless Fidelity)通信網(wǎng)絡(luò)標(biāo)準(zhǔn)分別支持IEEE802.11g、IEEE 802.11b和IEEE 802.11a協(xié)議,具有傳輸速率高(11~54 MDps)、安裝便捷和受環(huán)境限制小等優(yōu)點(diǎn)。

          USB無線網(wǎng)卡通過USB接口與SP5V210通信,需要完成USB設(shè)備、無線網(wǎng)卡設(shè)備的驅(qū)動和移植,無線網(wǎng)卡設(shè)備驅(qū)動為應(yīng)用層提供協(xié)議棧接口,在下層通過USB總線訪問無線網(wǎng)卡設(shè)備寄存器。無線網(wǎng)卡在Linux操作系統(tǒng)上的移植,先要下載對應(yīng)驅(qū)動工具包并將其復(fù)制到根目錄下完成驅(qū)動,通過串口工具輸入Scan-wifi進(jìn)行搜索無線網(wǎng)絡(luò)信號,再通過start-wifi命令打開無線網(wǎng)絡(luò)并建立連接。

          無線網(wǎng)絡(luò)傳輸視頻數(shù)據(jù)時,必須要遵循約定的網(wǎng)絡(luò)傳輸協(xié)議。一般常用的網(wǎng)絡(luò)傳輸協(xié)議有RTP/RTCP、TCP/IP和UDP,本系統(tǒng)中視頻數(shù)據(jù)的傳輸是基于RTP/RTCP實(shí)時傳輸協(xié)議的,RTP/RTCP協(xié)議實(shí)現(xiàn)的開源庫有JRTPLIB、LIBRTP、ORTP等,本文采用基于C++的開源庫JRTPLIB,支持Linux和Windows操作系統(tǒng)平臺,且操作便捷,封裝性好。為了實(shí)現(xiàn)基于RTP/RTCP實(shí)時傳輸協(xié)議的視頻數(shù)據(jù)傳輸,先要完成JRTPLIB的交叉編譯和到Linux系統(tǒng)平臺移植等工作。

          采用JRTPLIB開源庫中的接口函數(shù)完成無線視頻數(shù)據(jù)傳輸?shù)木唧w流程如下:

          ①初始化并生成RTP會話。采用JRTPLIB開源庫傳輸視頻數(shù)據(jù)前,要先創(chuàng)建一個RTPSession實(shí)例用來代表RPT會話,并利用RTPSession Par ams對象設(shè)置時間戳的單位,再調(diào)用RTPSession實(shí)例中的成員函數(shù)Create()生成RPT會話并同時初始化。

          ②設(shè)置接收端目標(biāo)地址。在生成RTP會話后傳輸視頻數(shù)據(jù)前,首先調(diào)用RTPSession實(shí)例中的成員函數(shù)AddDestination()來設(shè)置數(shù)據(jù)發(fā)送時的目標(biāo)地址(接收端地址)。在RTP協(xié)議中可以根據(jù)需要設(shè)置指定多個目標(biāo)地址于同一會話中,其中函數(shù)SetDefaultPayloadType(96)用于設(shè)定RPT負(fù)載H.264編碼數(shù)據(jù);voidClearDestinations()用于清除所有的地址;函數(shù)DeleteDestination()為刪除指定地址。

          ③發(fā)送視頻數(shù)據(jù)到目標(biāo)地址。設(shè)置好數(shù)據(jù)發(fā)送目標(biāo)地址之后,使用RTPSession實(shí)例中成員函數(shù)SendPacket(),將編碼好的H.264數(shù)據(jù)包發(fā)送到一個或多個目標(biāo)地址。由于每一幀視頻的數(shù)據(jù)量較大,RTP數(shù)據(jù)包以分片傳輸方式傳輸以保證視頻數(shù)據(jù)的可靠性。SendPacket()函數(shù)中,mark為1代表該RTP包為完整包,為0代表分割包。

          ④RTP會話結(jié)束。調(diào)用BYEDestroy()函數(shù)結(jié)束此次RTP會話。

          3 視頻監(jiān)控PC客戶端設(shè)計(jì)

          接收端將分片數(shù)據(jù)包重新組裝成為幀,得到H.264格式的壓縮編碼視頻,交付給視頻監(jiān)控PC客戶端處理,這里視頻監(jiān)控PC客戶端的主要功能為視頻數(shù)據(jù)的重新解壓、播放顯示和處理等。系統(tǒng)采用FFMPEG方案和SDL技術(shù)來實(shí)現(xiàn)監(jiān)控視頻數(shù)據(jù)的解壓和顯示。

          3.1 視頻數(shù)據(jù)解壓

          FFMPEG是一套開源的音頻流和視頻流方案,支持音視頻編解碼等功能,為免費(fèi)軟件。FFMPEG方案的開發(fā)與使用是在Linux系統(tǒng)平臺下的,但隨著發(fā)展現(xiàn)已支持Windows等多種操作系統(tǒng)。FFMPEG方案支持H.264、MPEG4、3GP等多種常見格式的視頻編解碼,功能全面且性能強(qiáng)大。系統(tǒng)采用FFMPEG方案主要完成客戶端對已編碼視頻數(shù)據(jù)的接收和視頻解碼工作。

          在Windows下安裝好FFMPEG開源庫開發(fā)環(huán)境,再進(jìn)行視頻數(shù)據(jù)的解碼工作,其中FFMPEG庫中的主要功能函數(shù)和數(shù)據(jù)結(jié)構(gòu)有:

          ①AVCodecContext()結(jié)構(gòu)體,用于編碼器參數(shù)信息描述,如視頻的采樣率、視頻的寬和高等信息;

          ②AVPacket()結(jié)構(gòu)體,緩沖解碼前視頻數(shù)據(jù);

          ③AVFrame()結(jié)構(gòu)體,存儲視頻數(shù)據(jù)解碼后的數(shù)據(jù)幀;

          ④av_resister_all()功能函數(shù),用來注冊全部解碼器;

          ⑤avcodec_find_decoder(),搜索解碼器,如H.264格式解碼器;

          ⑥avcodec_decode_video(),解碼接收到的視頻幀;

          ⑦avcodec_alloc_frame(),新建AVFrame結(jié)構(gòu)體。

          3.2 視頻播放顯示

          SDL是一個跨平臺的多媒體開源開發(fā)庫,支持多媒體播放器、游戲開發(fā)等,可以運(yùn)行在多種操作系統(tǒng)上(如Windows、Linux等),兼容性良好。SDL開源庫包含音頻、視頻和視窗管理等多個子系統(tǒng)。本文采用SDL開源庫中的視頻子系統(tǒng),其主要功能是將FFMPEG解碼后的視頻數(shù)據(jù)進(jìn)行顯示與播放。

          SDL開源庫將解碼后的視頻數(shù)據(jù)轉(zhuǎn)化成對應(yīng)的YUV格式,在屏幕上顯示其各個分量,完成視頻的輸出。SDL開源庫中的主要的數(shù)據(jù)結(jié)構(gòu)體和功能函數(shù)為:SDL_Overlay()結(jié)構(gòu)體,為YUV格式圖像信息的覆蓋結(jié)構(gòu);SDL_Surface()結(jié)構(gòu)體,為SDL中圖像信息顯示的基本區(qū)域;SDL_Init()功能函數(shù),作用是初始化SDL中圖像特性;SDL_CreateYUVOverlay()功能函數(shù),創(chuàng)建SDL_Overlay()結(jié)構(gòu),設(shè)置尺寸參數(shù)等;SDL_Display YUVOverlay()函數(shù),用來播放監(jiān)控視頻圖像,即SDL_Overlay()結(jié)構(gòu)體中存儲的圖像信息。

          通過FFMPEG和SDL技術(shù)中的主要結(jié)構(gòu)體以及功能函數(shù)完成接收端的視頻解碼和播放任務(wù),主要的工作流程如圖4所示。

          Cortex-A8和H.264的無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)

          結(jié)語

          本文設(shè)計(jì)了一種基于Cortex-A8的無線視頻監(jiān)控系統(tǒng),采用高性能的ARM Cortex—A8芯片SP5V210、300萬像素的COMS攝像頭、USB無線網(wǎng)卡以及PC機(jī)完成了系統(tǒng)的硬件搭建,利用低碼流和容錯能力強(qiáng)的H.264壓縮編碼技術(shù)進(jìn)行視頻數(shù)據(jù)編碼,滿足了無線傳輸要求,且基于RTP /RTCP網(wǎng)絡(luò)傳輸協(xié)議提高了視頻傳輸?shù)膶?shí)時性。在視頻監(jiān)控PC客戶端應(yīng)用開源的FFMPEG和SDL技術(shù)實(shí)現(xiàn)了監(jiān)控視頻圖像的解碼和播放。

          本系統(tǒng)具有良好的擴(kuò)展性,根據(jù)需求可擴(kuò)展為多路無線視頻監(jiān)控,用于人體識別、智能報(bào)警等。該系統(tǒng)可以高效穩(wěn)定運(yùn)行,布防便捷,攜帶方便,靈活行強(qiáng),成本低,提高了視頻監(jiān)控系統(tǒng)的實(shí)時性,在緊急救援和民工業(yè)安防系統(tǒng)上具有良好的應(yīng)用前景。



          評論


          相關(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); })();