基于3G無線網(wǎng)絡(luò)的視頻監(jiān)控系統(tǒng)前端設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引言
隨著社會(huì)的不斷發(fā)展和進(jìn)步,人們?nèi)粘I钪邪踩珕栴}得到越來越高的重視。視頻監(jiān)控作為安全防范系統(tǒng)的重要組成部分,使得人們可以遠(yuǎn)距離的觀察和調(diào)度被控區(qū)域的能力,以其直觀、準(zhǔn)確、及時(shí)和信息內(nèi)容豐富等優(yōu)勢廣泛應(yīng)用于現(xiàn)代化小區(qū)、交通、運(yùn)輸、消防等領(lǐng)域。隨著科學(xué)技術(shù)的不斷進(jìn)步和人們對監(jiān)控系統(tǒng)要求的不斷提高,監(jiān)控系統(tǒng)也經(jīng)歷了從模擬監(jiān)控時(shí)代到數(shù)字化網(wǎng)絡(luò)監(jiān)控時(shí)代的飛速發(fā)展變化。基于國內(nèi)已經(jīng)投入商業(yè)運(yùn)營的3G網(wǎng)絡(luò)的無線視頻監(jiān)控系統(tǒng)具有強(qiáng)大的無線網(wǎng)絡(luò)傳輸功能,能夠克服由于地理位置、布線成本和遠(yuǎn)距離監(jiān)控等帶來的問題。相對于有限傳輸,無線傳輸模式具有安裝方便、靈活性強(qiáng)、性價(jià)比高等特性,諸多優(yōu)勢使得無線監(jiān)控系統(tǒng)成為如今視頻監(jiān)控領(lǐng)域新的發(fā)展方向。
基于這一發(fā)展方向,ARM微處理器具有體積小、功耗低、成本低、性能高等優(yōu)點(diǎn),Linux操作系統(tǒng)具有開放源碼、可裁剪、易操作等優(yōu)點(diǎn)。無線視頻監(jiān)控系統(tǒng)前端采用ARM926-EJS微處理器和Linux操作系統(tǒng),通過無線發(fā)射模塊把采集、壓縮編碼好的視頻流發(fā)送到3G無線網(wǎng)絡(luò)過程中。本文重點(diǎn)闡述對視頻信號的采集、壓縮編碼、發(fā)送過程。
1 視頻監(jiān)控系統(tǒng)前端硬件設(shè)計(jì)
無線視頻監(jiān)控系統(tǒng)前端,主要完成現(xiàn)場視頻的采集、壓縮編碼、發(fā)送。系統(tǒng)硬件平臺(tái)主要由嵌入式微處理器ARM926-EJS,NAND FLASH,DDR2、TVP5150視頻輸入、CH7024視頻輸出、網(wǎng)口LAN8700、LC6311無線發(fā)射模塊等組成。ARM926-EJS處理器具有EMMA支持強(qiáng)大的視頻處理控制,亮度、飽和度、對比度、自動(dòng)白平衡等參數(shù)可調(diào)。允許使用全功能操作系統(tǒng),功耗低、時(shí)鐘頻率為400MHz。所以選擇ARM926-EJS為核心微處理器。存儲(chǔ)器包括RAM和ROM兩部分,RAM采用高速SDRAMHYB18M1G320BF-7.5對處理視頻數(shù)據(jù)有非常好的優(yōu)勢,ROM采用非線性K9F2G08ROA -JIBO NANDFLASH芯片,其存儲(chǔ)容量高于線性結(jié)構(gòu)的NORFLASH。TVP5150具有超低功耗、支持NTSC/PAL/SECAM等格式的高性能視頻解碼器,通過ARM926EJS對TVP5150進(jìn)行控制使得對視頻信號進(jìn)行A/D解碼,達(dá)到對視頻采集的目的。ARM926-EJS輸出的數(shù)字視頻信號通過CH7024進(jìn)行D/A解碼轉(zhuǎn)換成PAL制式的模擬信號?;贗EEE 802.11b/g協(xié)議無線傳輸模塊SIM5218,通過USB與ARM926-EJS進(jìn)行連接。無線視頻監(jiān)控系統(tǒng)前端硬件原理圖如圖1所示。
2 視頻監(jiān)控系統(tǒng)前端軟件設(shè)計(jì)
無線視頻監(jiān)控系統(tǒng)前端在設(shè)計(jì)中以嵌入式Linux操作系統(tǒng)為核心,Linux作為一種開源的操作系統(tǒng),內(nèi)核可裁剪,支持多種硬件平臺(tái)和較強(qiáng)的網(wǎng)絡(luò)功能。Linux操作系統(tǒng)軟件由以下幾部分組成:BootLoader、Linux內(nèi)核、文件系統(tǒng)、應(yīng)用程序。其中應(yīng)用程序有視頻采集程序、視頻壓縮編碼程序、視頻信號發(fā)送程序。
2.1 視頻采集模塊
Video4Linux是Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng),它為針對視頻設(shè)備的應(yīng)用程序編程提供一系列接口函數(shù),通過使用接口提供的函數(shù)庫,對攝像頭進(jìn)行圖像采集。主要通過以下步驟對視頻圖像進(jìn)行采集:
(1)用open函數(shù)打開視頻設(shè)備,可以獲得相應(yīng)的文件描述符;
(2)獲取視頻設(shè)備屬性,包括名稱、類型、通道數(shù)、圖像寬度、圖像高度等;
(3)通過ioctl函數(shù)返回采集圖像幀的屬性,包括圖像亮度、色彩、對比度等;
(4)視頻的截取有兩種方法:第一種是用read()直接讀取數(shù)據(jù),第二種是用mmap把設(shè)備文件映射到內(nèi)存,用內(nèi)存映射法的優(yōu)點(diǎn)是效率高,因?yàn)檫M(jìn)程可以直接讀寫內(nèi)存,而不需要任何數(shù)據(jù)的拷貝,結(jié)合以上優(yōu)點(diǎn),選擇此方法。視頻采集流程圖如圖2所示。
2.2 視頻壓縮編碼模塊
采用ARM926-EJS內(nèi)置的VPU單元硬件編碼模塊完成H.264壓縮編碼。H.264采用了基于塊的動(dòng)補(bǔ)償和編碼,同時(shí)它還采用一系列新的技術(shù),包括:運(yùn)動(dòng)矢量具有亞像素精度,對于亮度信號來說可以達(dá)到1/4像素精度;運(yùn)動(dòng)補(bǔ)償使用了塊大小可以改變的運(yùn)動(dòng)補(bǔ)償;允許使用多個(gè)參考幀;幀內(nèi)編碼使用幀內(nèi)預(yù)測;自適應(yīng)環(huán)路濾波;自適應(yīng)于內(nèi)容的算術(shù)編碼和變長編碼等,這些新技術(shù)的采用大大提升了視頻的壓縮率。編碼過程如圖3所示。
NAL為分層結(jié)構(gòu),經(jīng)過VCL編碼后的視頻數(shù)據(jù)被組成NAL單元,一組NAL單元組成一個(gè)接入單元,一組接入單元組成一個(gè)視頻序列,再根據(jù)不同應(yīng)用,對視頻序列進(jìn)行處理。圖4為流結(jié)構(gòu)的NAL分層示意圖。
每個(gè)NAL單元由整數(shù)個(gè)字節(jié)大小的包構(gòu)成,其中第一個(gè)字節(jié)包含數(shù)據(jù)類型的標(biāo)志,其他字節(jié)是凈荷。NAL單元被劃分為VCL NAL單元和非VCL NAL單元兩種。VCL NAL單元包含視頻圖片中采集點(diǎn)的值的表示;非VCL NAL單元包含一切相關(guān)的附加信息,例如參數(shù)設(shè)置(可被應(yīng)用到大量VCL NAL單元的頭數(shù)據(jù))和附加的增強(qiáng)信息(時(shí)刻信息和其他附加數(shù)據(jù),這些數(shù)據(jù)可能會(huì)增強(qiáng)對已解碼視頻信號的利用,但是又不是在解碼視頻圖像的采樣點(diǎn)值必須用到的)。視頻壓縮編碼的工作流程如圖5所示。
2.3 視頻信號發(fā)送模塊
由于TCP協(xié)議丟包重傳造成巨大時(shí)延,UDP雖然傳輸速度比TCP快,但UDP是一種不可靠的傳輸協(xié)議。所以在應(yīng)用層采用RTP作為實(shí)時(shí)傳輸協(xié)議。
RTP本身只保證實(shí)時(shí)數(shù)據(jù)的傳輸,不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機(jī)制,也不能提供流量控制或擁塞控制。它需要依靠RTCP協(xié)議提供周期性的反饋與信道參數(shù)有關(guān)的信息,動(dòng)態(tài)地改變傳輸速率,使發(fā)送速率適應(yīng)信道帶寬,減少信道中的丟包,從而實(shí)現(xiàn)媒體同步、丟包統(tǒng)計(jì)、傳輸檢測和傳輸復(fù)用等手段。從而使得視頻流高效、快速地傳輸。
RTP協(xié)議的實(shí)現(xiàn)采用開源的RTP庫JRTPLIB。用戶只需通過使用JRTPLIB庫相應(yīng)地發(fā)送和接收RTP數(shù)據(jù)包,而不用關(guān)心RTCP數(shù)據(jù)報(bào)是如何被發(fā)送和接收的,JRTPLIB自動(dòng)對到達(dá)的RTCP數(shù)據(jù)報(bào)進(jìn)行處理,并在適當(dāng)?shù)臅r(shí)候發(fā)送RTCP數(shù)據(jù)報(bào)。采用H.264視頻流的RTP打包方式對單獨(dú)的NAL單元進(jìn)行操作。通過ARM926-EJS內(nèi)置的硬件編碼單元應(yīng)用程序中H.264視頻編碼的參數(shù)設(shè)置,每幀為一個(gè)NAL單元。為了避免視頻數(shù)據(jù)在網(wǎng)絡(luò)層被分割,需要將一幀H.264視頻數(shù)據(jù)分割成一定大小的RTP數(shù)據(jù)包,由發(fā)送端分別封裝上RTP報(bào)頭、UDP報(bào)頭、IP報(bào)頭,按照RTP數(shù)據(jù)包的格式,并配置RTP報(bào)頭的時(shí)間戳以及序列號等參數(shù),最后形成IP數(shù)據(jù)包,通過無線模塊發(fā)送。ARM926-EJS內(nèi)置的硬件編碼模塊所輸出的H.264視頻流的RTP封裝及傳輸流程如圖6所示。
3 結(jié)語
采用ARM926-EJS為微處理器的視頻監(jiān)控系統(tǒng)前端具有功耗低、速度快的特點(diǎn),同時(shí)結(jié)合Linux的Video4Linux視頻接口技術(shù)和內(nèi)置硬件H.264視頻編碼和RTP/RTCP傳輸協(xié)議,實(shí)現(xiàn)了快速視頻采集和傳輸。實(shí)驗(yàn)證明,采用內(nèi)置硬件編碼單元的ARM926-EJS微處理器和嵌入式Linux操作系統(tǒng),使視頻監(jiān)控系統(tǒng)前端的視頻畫面清晰流暢,其性能優(yōu)越、穩(wěn)定而且構(gòu)建成本低。該視頻監(jiān)控系統(tǒng)前端在森林火災(zāi)場合具有廣闊的應(yīng)用前景。