萬(wàn)濤 萬(wàn)世明
(武漢軟件工程職業(yè)學(xué)院)
基于Boa服務(wù)器的網(wǎng)絡(luò)視頻傳輸系統(tǒng)的實(shí)現(xiàn)
萬(wàn)濤 萬(wàn)世明
(武漢軟件工程職業(yè)學(xué)院)
本文介紹了一種基于嵌入式Linux和ARM微處理器的視頻傳輸系統(tǒng)。該系統(tǒng)通過(guò)USB攝像頭采集視頻數(shù)據(jù),經(jīng)MPEG-4對(duì)視頻流媒體進(jìn)行壓縮編碼,采用端對(duì)端的實(shí)時(shí)傳輸協(xié)議/實(shí)時(shí)傳輸控制協(xié)議(RTP/RTCP)實(shí)現(xiàn)視頻數(shù)據(jù)的網(wǎng)絡(luò)傳輸,采用了CGI技術(shù)、B/S模式瀏覽及動(dòng)態(tài)IP綁定。整個(gè)系統(tǒng)建立在嵌入式的構(gòu)架上,能獨(dú)立完成實(shí)時(shí)視頻的采集、處理及傳輸,可用于家居安防、網(wǎng)絡(luò)視頻、遠(yuǎn)程監(jiān)控等領(lǐng)域。
Boa;ARM;CGI;網(wǎng)絡(luò)視頻
近年來(lái),隨著網(wǎng)絡(luò)技術(shù)、芯片技術(shù)和視頻壓縮等相關(guān)技術(shù)的不斷發(fā)展,數(shù)字視頻傳輸技術(shù)、遠(yuǎn)程視頻系統(tǒng)得到了越來(lái)越廣泛的應(yīng)用,并且正在向網(wǎng)絡(luò)化、集成化的方向發(fā)展?;贗P的網(wǎng)絡(luò)視頻傳輸系統(tǒng)逐漸成為視頻傳輸?shù)闹髁鳌?/p>
在嵌入式視頻監(jiān)控系統(tǒng)結(jié)構(gòu)中,利用TCP/IP協(xié)議棧構(gòu)造一個(gè)專(zhuān)用Boa服務(wù)器[1],視頻處理與Boa服務(wù)器高度集成,系統(tǒng)采用B/S結(jié)構(gòu)。視頻系統(tǒng)從安裝在現(xiàn)場(chǎng)的嵌入式網(wǎng)絡(luò)攝像機(jī)中獲得原始的視頻信號(hào),通過(guò)視頻編碼器,將模擬視頻信號(hào)數(shù)字化,并壓縮成MPEG-4格式視頻數(shù)據(jù),然后通過(guò)內(nèi)部總線(xiàn)送到Boa服務(wù)器,再由Boa服務(wù)器實(shí)時(shí)傳送到計(jì)算機(jī)網(wǎng)絡(luò)??蛻?hù)端PC連接到計(jì)算機(jī)網(wǎng)絡(luò)上,從嵌入式視頻傳輸模塊獲得MPEG-4視頻數(shù)據(jù),經(jīng)網(wǎng)址IP登錄后,通過(guò)瀏覽器即可觀看攝像機(jī)的圖像。關(guān)于控制命令,客戶(hù)端通過(guò)瀏覽器將控制命令發(fā)送到網(wǎng)絡(luò)上,Boa服務(wù)器對(duì)接收到的控制命令進(jìn)行分析解釋?zhuān)⒏鶕?jù)授權(quán),通過(guò)控制系統(tǒng)驅(qū)動(dòng)攝像頭執(zhí)行相應(yīng)的命令,從而實(shí)現(xiàn)遠(yuǎn)程網(wǎng)絡(luò)對(duì)現(xiàn)場(chǎng)的實(shí)時(shí)傳輸。視頻傳輸系統(tǒng)的工作原理如圖1所示。
系統(tǒng)硬件由USB攝像頭、嵌入式處理器S3C2410、SDRAM、NandFlash、JTAG、RS232接口、RJ45接口等部分組成。視頻信號(hào)由USB攝像頭采集,經(jīng)過(guò)MPEG-4編碼壓縮,由RJ45接口發(fā)送到Internet網(wǎng)絡(luò)上進(jìn)行視頻的傳輸,F(xiàn)IQ為溫度、紅外傳感器接口,可用于家居安防[2]。系統(tǒng)中視頻的采集和壓縮都是由軟件實(shí)現(xiàn)的。系統(tǒng)通過(guò)RS232接口、RJ45接口與PC機(jī)相連,構(gòu)成交叉編譯調(diào)試的環(huán)境。JTAG調(diào)試器接在開(kāi)發(fā)板的JTAG口上,系統(tǒng)通過(guò)該口與S3C2410通訊[3]。系統(tǒng)硬件結(jié)構(gòu)如圖2所示。
圖1 視頻傳輸系統(tǒng)的工作原理圖
圖2 系統(tǒng)硬件結(jié)構(gòu)圖
在圖2中:① CPU主控制芯片選用S3C2410,該芯片為SAMSUNG公司生產(chǎn)的基于ARM920T內(nèi)核的RISC微處理器,集成了包括存儲(chǔ)器接口、USB、RS232、RJ45、FIQ、JTAG等接口硬件資源。②NandFlash選用K9F1208,該芯片的單片存儲(chǔ)容量為64M×8位,工作電壓為2.7V~3.6V。③ USB攝像頭選用CMOS攝像傳感器,其A/D轉(zhuǎn)換、定時(shí)控制、信號(hào)處理、彩色編碼與補(bǔ)償和變換控制等都可以集成在同一芯片中,具有集成度高、速度快、功耗低、價(jià)格便宜、體積小等優(yōu)點(diǎn)。④ 溫度傳感器選用達(dá)拉斯DALLAS 18B20,應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫電路,通過(guò)FIQ接口即可實(shí)現(xiàn)通信。
4.1 建立Boa服務(wù)器
在嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)中,為了使遠(yuǎn)程主機(jī)通過(guò)Internet獲得視頻圖像等數(shù)據(jù)信息,需要在嵌入式系統(tǒng)移植一個(gè)支持腳本和CGI功能的Boa服務(wù)器[4],該服務(wù)器是一種單任務(wù)Web服務(wù)器,支持CGI,源代碼開(kāi)放,用戶(hù)端能夠通過(guò)IE瀏覽器對(duì)嵌入式設(shè)備進(jìn)行管理和監(jiān)控。
建立Boa服務(wù)器的過(guò)程為:
(1) 下載Boa服務(wù)器源代碼文件boa-0.94.13.tar. gz,并將其解壓縮在/boa/src/目錄下。
(2) 編譯Boa。在移植Boa時(shí),首先運(yùn)行/boa/src/configure,生成一個(gè)Makefile文件,將Makefile中的“CC=gcc”改成“CC=arm-linux-gcc”,再編譯。將編譯器修改為平臺(tái)的交叉編譯器,以此得到支持ARM9平臺(tái)的Boa服務(wù)器。
修改defines.h中Boa的根文件目錄:
#define SERVER_ROOT“/etc/boa”。執(zhí)行make命令編譯Boa源代碼,即會(huì)生成Boa可執(zhí)行文件。
(3) 配置Boa。為使Boa能在相應(yīng)的嵌入式平臺(tái)上運(yùn)行,需對(duì)其運(yùn)行環(huán)境、參數(shù)等進(jìn)行配置。配置服務(wù)器主要是修改boa.conf文件中的各相關(guān)存儲(chǔ)路徑。
(4) 將Boa和boa.conf文件拷貝到嵌入式系統(tǒng)相應(yīng)的目錄下,即可啟動(dòng)Boa程序,實(shí)現(xiàn)對(duì)Boa Web Server的訪(fǎng)問(wèn)。
基于Boa的嵌入式Web服務(wù)器為系統(tǒng)提供了網(wǎng)絡(luò)接入和信息服務(wù)。系統(tǒng)基于TCP/IP協(xié)議、HTTP協(xié)議,調(diào)用具有數(shù)據(jù)請(qǐng)求和控制功能的CGI程序,實(shí)現(xiàn)服務(wù)器對(duì)客戶(hù)端瀏覽器請(qǐng)求的處理,達(dá)到遠(yuǎn)程監(jiān)控的目的。
4.2 CGI網(wǎng)頁(yè)交互程序設(shè)計(jì)
CGI技術(shù)即通用網(wǎng)關(guān)接口(Common Gateway Interface)技術(shù),它支持Web數(shù)據(jù)動(dòng)態(tài)刷新、轉(zhuǎn)換和顯示。
CGI是運(yùn)行在Boa服務(wù)器上的一個(gè)程序,同其它程序設(shè)計(jì)一樣,必須按照CGI標(biāo)準(zhǔn)格式進(jìn)行編寫(xiě)[5]。CGI程序的運(yùn)行由客戶(hù)端瀏覽器的輸入觸發(fā),它的任務(wù)就是執(zhí)行指令,將所需數(shù)據(jù)轉(zhuǎn)換為環(huán)境變量進(jìn)行處理,并回傳處理結(jié)果。Boa服務(wù)器與CGI程序之間通過(guò)四種途徑進(jìn)行通信:環(huán)境變量、命令行、標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出。
CGI的基本工作過(guò)程為:根據(jù)客戶(hù)端瀏覽器的請(qǐng)求,CGI程序通過(guò)執(zhí)行Boa服務(wù)器指令,調(diào)用其它應(yīng)用程序進(jìn)行處理,最后將處理結(jié)果以HTTP形式反饋給客戶(hù)端瀏覽器顯示。CGI工作流程示意圖見(jiàn)圖3。
CGI是在Web服務(wù)器下運(yùn)行外部程序的一個(gè)接口,CGI程序使網(wǎng)頁(yè)具有交互功能。其最重要的作用是提供了HTML無(wú)法實(shí)現(xiàn)的功能,補(bǔ)充了HTML的不足。
CGI 部分核心代碼如下:
圖3 CGI工作流程示意圖
主控系統(tǒng)采用B/S架構(gòu),即瀏覽器-服務(wù)器(Browser/Server)架構(gòu)。采用端對(duì)端的實(shí)時(shí)傳輸協(xié)議/實(shí)時(shí)傳輸控制協(xié)議(RTP/RTCP)實(shí)現(xiàn)視頻數(shù)據(jù)的網(wǎng)絡(luò)傳輸,用戶(hù)通過(guò)手機(jī)或PC機(jī)的瀏覽器與遠(yuǎn)程嵌入式Web服務(wù)器進(jìn)行交互,實(shí)現(xiàn)Boa下的網(wǎng)絡(luò)遠(yuǎn)程視頻圖像數(shù)據(jù)的監(jiān)控。手機(jī)、PC機(jī)瀏覽器的視頻頁(yè)面,如圖4所示。
圖4 手機(jī)、PC機(jī)瀏覽器的視頻頁(yè)面
本系統(tǒng)采用了CGI程序的模塊化結(jié)構(gòu),除遠(yuǎn)程視頻監(jiān)控外,還可以根據(jù)功能要求添加控制模塊,如遠(yuǎn)程視頻截圖、音頻傳遞、溫度檢測(cè)、紅外檢測(cè)、開(kāi)關(guān)控制等。
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)、視頻技術(shù)和嵌入式技術(shù)的發(fā)展,基于嵌入式技術(shù)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)逐漸成為視頻監(jiān)控系統(tǒng)的主流?;赟3C2410平臺(tái)和Linux操作系統(tǒng),使用Boa服務(wù)器技術(shù)、CGI技術(shù)和流媒體傳輸技術(shù)實(shí)現(xiàn)了遠(yuǎn)程視頻等數(shù)據(jù)傳輸。整個(gè)系統(tǒng)具有成本低、體積小、穩(wěn)定可靠、安裝簡(jiǎn)便等特點(diǎn),適用于智能家居、網(wǎng)絡(luò)視頻、遠(yuǎn)程監(jiān)控等領(lǐng)域。
[1] Jeremy Bentham,陳向群譯.嵌入式系統(tǒng)Web服務(wù)器TCP/IP Lean[M].北京:機(jī)械工業(yè)出版社,2003.
[2] 鄭靈翔.嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2006.
[3] 張素文,付薇,劉明蘭.嵌入式視頻圖像傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007,23(3-2):22-24.
[4] increase warning level in GCC_FLAGS another notch [EB/OL]. http://www.boa.org/, 2010-08/2011-05.
[5] Jeffny Dwight.CGI開(kāi)發(fā)使用手冊(cè)[M].北京:機(jī)械工業(yè)出版社,2011年(ISBN:7111060350).
The Realization of Network Video Transmission System Based on Boa Server
Wan Tao Wan Shiming
(Wuhan Vocational College of Software Engineering)
The paper researches on the Embedded ARM-Linux System in the video transmission system. The video data collection system is based on USB camera with MPEG-4 of video compression coding technology. A variety of technologies are used in this system, including Real-time Transport Protocol/Real-time Transport Control Protocol(RTP/RTCP) ,CGI, B/S mode, and dynamic IP binding. The system is designed based on Embedded Structures, and can meet video acquisition,processing and transmission independently. It can be used in different areas, such as home security, network video, remote monitoring, and so on.
Bob; ARM; CGI; Remote Video
萬(wàn)濤,1981年生,教師,碩士,主要研究方向:遠(yuǎn)程數(shù)據(jù)通信、數(shù)字控制技術(shù)。
萬(wàn)世明,1955年生,教授,碩士,主要研究方向:計(jì)算機(jī)網(wǎng)絡(luò)、嵌入式系統(tǒng)、圖形圖像技術(shù)。