萬濤 萬世明
(武漢軟件工程職業學院)
基于Boa服務器的網絡視頻傳輸系統的實現
萬濤 萬世明
(武漢軟件工程職業學院)
本文介紹了一種基于嵌入式Linux和ARM微處理器的視頻傳輸系統。該系統通過USB攝像頭采集視頻數據,經MPEG-4對視頻流媒體進行壓縮編碼,采用端對端的實時傳輸協議/實時傳輸控制協議(RTP/RTCP)實現視頻數據的網絡傳輸,采用了CGI技術、B/S模式瀏覽及動態IP綁定。整個系統建立在嵌入式的構架上,能獨立完成實時視頻的采集、處理及傳輸,可用于家居安防、網絡視頻、遠程監控等領域。
Boa;ARM;CGI;網絡視頻
近年來,隨著網絡技術、芯片技術和視頻壓縮等相關技術的不斷發展,數字視頻傳輸技術、遠程視頻系統得到了越來越廣泛的應用,并且正在向網絡化、集成化的方向發展。基于IP的網絡視頻傳輸系統逐漸成為視頻傳輸的主流。
在嵌入式視頻監控系統結構中,利用TCP/IP協議棧構造一個專用Boa服務器[1],視頻處理與Boa服務器高度集成,系統采用B/S結構。視頻系統從安裝在現場的嵌入式網絡攝像機中獲得原始的視頻信號,通過視頻編碼器,將模擬視頻信號數字化,并壓縮成MPEG-4格式視頻數據,然后通過內部總線送到Boa服務器,再由Boa服務器實時傳送到計算機網絡。客戶端PC連接到計算機網絡上,從嵌入式視頻傳輸模塊獲得MPEG-4視頻數據,經網址IP登錄后,通過瀏覽器即可觀看攝像機的圖像。關于控制命令,客戶端通過瀏覽器將控制命令發送到網絡上,Boa服務器對接收到的控制命令進行分析解釋,并根據授權,通過控制系統驅動攝像頭執行相應的命令,從而實現遠程網絡對現場的實時傳輸。視頻傳輸系統的工作原理如圖1所示。
系統硬件由USB攝像頭、嵌入式處理器S3C2410、SDRAM、NandFlash、JTAG、RS232接口、RJ45接口等部分組成。視頻信號由USB攝像頭采集,經過MPEG-4編碼壓縮,由RJ45接口發送到Internet網絡上進行視頻的傳輸,FIQ為溫度、紅外傳感器接口,可用于家居安防[2]。系統中視頻的采集和壓縮都是由軟件實現的。系統通過RS232接口、RJ45接口與PC機相連,構成交叉編譯調試的環境。JTAG調試器接在開發板的JTAG口上,系統通過該口與S3C2410通訊[3]。系統硬件結構如圖2所示。

圖1 視頻傳輸系統的工作原理圖

圖2 系統硬件結構圖
在圖2中:① CPU主控制芯片選用S3C2410,該芯片為SAMSUNG公司生產的基于ARM920T內核的RISC微處理器,集成了包括存儲器接口、USB、RS232、RJ45、FIQ、JTAG等接口硬件資源。②NandFlash選用K9F1208,該芯片的單片存儲容量為64M×8位,工作電壓為2.7V~3.6V。③ USB攝像頭選用CMOS攝像傳感器,其A/D轉換、定時控制、信號處理、彩色編碼與補償和變換控制等都可以集成在同一芯片中,具有集成度高、速度快、功耗低、價格便宜、體積小等優點。④ 溫度傳感器選用達拉斯DALLAS 18B20,應用中不需要外部任何元器件即可實現測溫電路,通過FIQ接口即可實現通信。
4.1 建立Boa服務器
在嵌入式遠程監控系統中,為了使遠程主機通過Internet獲得視頻圖像等數據信息,需要在嵌入式系統移植一個支持腳本和CGI功能的Boa服務器[4],該服務器是一種單任務Web服務器,支持CGI,源代碼開放,用戶端能夠通過IE瀏覽器對嵌入式設備進行管理和監控。
建立Boa服務器的過程為:
(1) 下載Boa服務器源代碼文件boa-0.94.13.tar. gz,并將其解壓縮在/boa/src/目錄下。
(2) 編譯Boa。在移植Boa時,首先運行/boa/src/configure,生成一個Makefile文件,將Makefile中的“CC=gcc”改成“CC=arm-linux-gcc”,再編譯。將編譯器修改為平臺的交叉編譯器,以此得到支持ARM9平臺的Boa服務器。
修改defines.h中Boa的根文件目錄:
#define SERVER_ROOT“/etc/boa”。執行make命令編譯Boa源代碼,即會生成Boa可執行文件。
(3) 配置Boa。為使Boa能在相應的嵌入式平臺上運行,需對其運行環境、參數等進行配置。配置服務器主要是修改boa.conf文件中的各相關存儲路徑。
(4) 將Boa和boa.conf文件拷貝到嵌入式系統相應的目錄下,即可啟動Boa程序,實現對Boa Web Server的訪問。
基于Boa的嵌入式Web服務器為系統提供了網絡接入和信息服務。系統基于TCP/IP協議、HTTP協議,調用具有數據請求和控制功能的CGI程序,實現服務器對客戶端瀏覽器請求的處理,達到遠程監控的目的。
4.2 CGI網頁交互程序設計
CGI技術即通用網關接口(Common Gateway Interface)技術,它支持Web數據動態刷新、轉換和顯示。
CGI是運行在Boa服務器上的一個程序,同其它程序設計一樣,必須按照CGI標準格式進行編寫[5]。CGI程序的運行由客戶端瀏覽器的輸入觸發,它的任務就是執行指令,將所需數據轉換為環境變量進行處理,并回傳處理結果。Boa服務器與CGI程序之間通過四種途徑進行通信:環境變量、命令行、標準輸入和標準輸出。
CGI的基本工作過程為:根據客戶端瀏覽器的請求,CGI程序通過執行Boa服務器指令,調用其它應用程序進行處理,最后將處理結果以HTTP形式反饋給客戶端瀏覽器顯示。CGI工作流程示意圖見圖3。
CGI是在Web服務器下運行外部程序的一個接口,CGI程序使網頁具有交互功能。其最重要的作用是提供了HTML無法實現的功能,補充了HTML的不足。
CGI 部分核心代碼如下:


圖3 CGI工作流程示意圖

主控系統采用B/S架構,即瀏覽器-服務器(Browser/Server)架構。采用端對端的實時傳輸協議/實時傳輸控制協議(RTP/RTCP)實現視頻數據的網絡傳輸,用戶通過手機或PC機的瀏覽器與遠程嵌入式Web服務器進行交互,實現Boa下的網絡遠程視頻圖像數據的監控。手機、PC機瀏覽器的視頻頁面,如圖4所示。

圖4 手機、PC機瀏覽器的視頻頁面
本系統采用了CGI程序的模塊化結構,除遠程視頻監控外,還可以根據功能要求添加控制模塊,如遠程視頻截圖、音頻傳遞、溫度檢測、紅外檢測、開關控制等。
隨著計算機網絡技術、視頻技術和嵌入式技術的發展,基于嵌入式技術的網絡視頻監控系統逐漸成為視頻監控系統的主流。基于S3C2410平臺和Linux操作系統,使用Boa服務器技術、CGI技術和流媒體傳輸技術實現了遠程視頻等數據傳輸。整個系統具有成本低、體積小、穩定可靠、安裝簡便等特點,適用于智能家居、網絡視頻、遠程監控等領域。
[1] Jeremy Bentham,陳向群譯.嵌入式系統Web服務器TCP/IP Lean[M].北京:機械工業出版社,2003.
[2] 鄭靈翔.嵌入式系統設計與應用開發[M].北京:北京航空航天大學出版社,2006.
[3] 張素文,付薇,劉明蘭.嵌入式視頻圖像傳輸系統的設計與實現[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開發使用手冊[M].北京:機械工業出版社,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
萬濤,1981年生,教師,碩士,主要研究方向:遠程數據通信、數字控制技術。
萬世明,1955年生,教授,碩士,主要研究方向:計算機網絡、嵌入式系統、圖形圖像技術。