万涛 万世明
(武汉软件工程职业学院)
基于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年生,教授,硕士,主要研究方向:计算机网络、嵌入式系统、图形图像技术。