嵌入式视频监控系统视频服务器的设计与实现
2011-05-21杨晓姣黄云霞
杨晓姣,黄云霞
(1.成都电子科技大学 光电信息学院,四川 成都 610054;2.成都电子科技大学 抗干扰实验室,四川 成都 611731)
视频监控系统以其数字化、网络化和智能化等方面的特征广泛应用于各种场合。随着通信技术和网络技术的发展,通过网络进行重要场所的监控越来越引起人们的关注和重视。传统的视频监控系统图像的压缩解压都是基于PC机,在稳定性,可靠性方面都受到限制。近年来,随着嵌入式技术的发展,嵌入式设备体积小、集成度高、高效可靠、可移植、功耗低等一系列优点使得基于嵌入式的视频监控系统逐渐取代了传统的视频监控系统。笔者所介绍的嵌入式视频服务器是建立在嵌入式WEB服务器的基础上,基于AT91RM9200[1]微处理器,采用Linux实时操作系统,由专门的视频芯片接收数字视频数据完成压缩编码,生成MPEG-4码流,通过内部总线传送到WEB服务器上,远程授权用户可以通过网络浏览器观看WEB上的图像信息,控制图像获取方式。该系统保证了图像质量,客户端零维护,开发便捷,成本低廉。
1 系统的整体设计
整个系统分为硬件和软件2个部分。硬件部分分为4个模块:视频采集模块,视频压缩编码模块,网络传输模块和其他辅助功能模块。系统采用B/S模式。软件部分分为视频图像采集的驱动程序,WEB服务器程序,CGI和用户浏览器的网页设计4部分。系统整体结构如图1所示。
图1 系统整体结构Fig.1 Bulk structure of the system
2 系统硬件部分
本系统采用Atmel公司的AT91RM9200[2]微处理器。该处理器是高性能,低功耗的32位RISC微处理器,最高主频为180 MHz,32位外部数据总线支持8/16/32位数据宽度,可对64 MB空间寻址。内部集成丰富的外设资源,MMU管理单元,16 kB SRAM和128 kB ROM,各种外围接口,适用本系统的开发。AT91RM9200微处理器的作用是在系统上电时配置芯片的相关功能寄存器,正常运行时进行总体控制,如接受视频数据流,配置网络接口,实现本地存储等功能。
2.1 视频采集模块
本模块的作用是把模拟视频转换成数字视频,产生符合编码芯片接口标准的数字视频信号。采用的是TI公司的TVP5150低功耗视频A/D转换芯片。TVP5150支持NTSC/PAL/SECAM 3种格式,可以输出ITU-R BT.656和ITU-R BT.601两种信号,考虑到编码芯片的标准,本系统采用ITU-R BT.656格式8为数据串行传输。TVP5150的AIPIA为模拟信号输入端,接收摄像头的模拟视频信号输入。行同步脉冲和场同步脉冲分别对应HSYNC和VSYNC,分别连接编码芯片的HSYNIN和VSYNIN2个引脚,实现图像的行同步和场同步操作。YOUT[7:0]为数据输出引脚,将数字视频信号送到编码芯片的数据接收端。SCL和SDA分别为I2C接口的串行时钟和数据引脚,AT91RM9200对TVP5150的内部寄存器的访问是通过I2C总线实现的。
2.2 视频压缩编码模块
动态图像被数字化处理成YUV格式,数据量非常大。未经压缩的CIF格式的RGB数据至少需要58.01 Mb/s[3],因此视频数据在传输和处理的过程中必须经过压缩。视频编码标准有 MPEG-1,MPEG-2,MPEG-4,M-JPEG 和 H.26x 系列。本系统采用的是MPEG-4[4-5]标准。MPEG(Moving Pictures Experts Group),该专家组成立于1988年,致力于运动图像的编码标准化工作。MPEG-4是该专家组研制出来的于1999年正式成为ISO和IEC联合制定的国际编码标准。MPEG-4与其他编码标准相比,相同比特率下,具有更高的视觉质量,可以在低带宽的信道上传输。本系统采用韩国Pentamicro公司的压缩/解压芯片 AT2042,AT2042接收经过 TVP5150进行 A/D转换的数字视频数据。AT2042支持视频压缩和音频压缩标准,支持CBR和VBR两种码率。采用ITU-R 656接口标准。工作原理:在AT91RM9200的控制下,要进行压缩编码的数据经AT2042的FIFO口输入。AT2042的解压是压缩的逆过程。本系统中,AT2042的数据接收端 VIN[7:0]接收 TVP5150的YOUT[7:0]端输出的数据,同时AT2042的HSYNIN和VSYNIN信号分别和TVP5150的HSYN和VSYN相连,实现图像的行同步和场同步操作。接收来的数据送到AT2042的压缩编码处理单元,压缩编码后送到芯片外部的SDRAM中存储,通过片内的SDRAM控制器可以实现对外部SDRAM的访问,并通过HPI与AT91RM9200微处理器进行通信,以便远程监控端的实时监控。视频压缩编码框图如图2所示。
图2 视频压缩编码框图Fig.2 Video comperssion coding module
2.3 网络传输模块
本模块是采用LAN91C11[6]构建嵌入式以太网,实现视频数据网络传输的通路。LAN91C11是SMSC公司推出的快速以太网控制器。芯片上集成MAC和PHY,符合IEEE802.3/802.U-100Base-Tx/10Base-T规范。AT91RM9200微处理器通过地址、数据、控制线和片选信号线对LAN91C11进行通信和控制。网络传输硬件连接原理图如图3所示。AT91RM9200发送数据时,首先置发送使能信号ETXEN有效。数据发送端ETX[1:0]与 LAN91C11 的 TXD[1:0] 引 脚 相 连 接 。 以AT91RM9200的时钟信号EXTCK发送视频数据。数据的接收端 ERX[1:0]与 LAN91C11 的 RXD[1:0]引脚相 连 接 ,接收 视频数据。EMDI0和EMDC分别控制芯片的读写。数据从DMA通道发送。在发送数据时,首先设置好传输控制寄存器和传输传输地址寄存器,从指定的存储区取数据,并且记录发送完的字节数,数据发送完之后,LAN19C11产生中断信号,请求DMA中断,由AT91RM9200处理。
图3 传输网络硬件连接图Fig.3 Hardware connection diagram in the transmission network
2.4 其他辅助功能模块
该模块包括Flafh、SDRAM、以太网接口、串口和USB接口。用来实现操作系统内核和应用程序的存储,网络传输,本地存储和远程控制。
3 系统软件部分
嵌入式Linux实时操作系统,稳定、高效、易定制、易剪裁、开源代码,因此本系统采用Linux操作系统。软件部分分为Bootloader文件,Linux内核文件Linux驱动和应用程序,用户应用程序。这里主要介绍MPEG-4和CGI技术的程序设计。
3.1 MPEG-4压缩编码程序设计
本系统采用MPEG-4标准对视频图像进行压缩编码。在实现MPEG-4编码的方式上,有硬件压缩和软件压缩两种。硬件压缩就是利用专门的压缩芯片对视频信号进行MPEG-4编码,软件压缩就是使用压缩软件对视频信号进行编码。AT2042支持MPEG-4压缩标准。实现方法方面就是对其相关寄存器的配置,包括编码模式、编码像素点、编码帧率和设置编码流格式等方面。具体过程:系统上电启动后,先配置AT2042的相关寄存器,完成初始化工作后,通过I2C总线对A/D转换芯片TVP5150进行初始化配置。所有的寄存器配置工作完成之后,开始编码过程。其中MPEG-4数据流接收存储程序有AT2042的数据流缓冲器标志信号来控制。缓冲器接收数据满之后置低RISC_INT0,AT91RM9200主控制器通过DMA通道把AT2042发送过来的码流通过网络通道传输到请求监控视频图像的监控端。压缩编码的流程图如图4所示。
3.2 CGI程序设计
在嵌入式Linux环境下,主要有3种Web服务器,分别是 httpd、thttpd和 Boa。Httpd功能最弱,不支持 CGI、SSL和认证。本系统需要交互操作,必须使用动态Web技术,采用Boa。Boa功能强大,支持CGI,支持SSL,支持认证。使用时只需交叉编译,修改一下配置文件即可。CGI[7]即通用网关接口,是外部扩展应用程序与Web服务器交互的标准。客户端使用浏览器向服务器发送HTTP请求,服务器响应客户端的请求后,引导脚本程序,对命令解析,将信息提交给后台——CGI处理。具体到本系统,就是PC机端通过浏览器输入服务器的IP地址,Web服务器根据请求进行分析,如果没有传来参数,则调用get-status()函数取得设备当前状态显示给浏览器。用户根据操作界面提示完成相应的操作,填写好表单设置设备参数并提交。CGI解析信息后通过get-status()函数设置新状态,实现交互功能。例如调节编码属性,对相机控制等。
图4 压缩编码流程图Fig.4 Compression coding flow chart
CGI的输入输出基本语法:
M ETHOD属性指定将数据传送到Web服务器的方法,输入方法有两种。
1)GET方法。 此方法,表单数据会附加在所指向CGI脚本的URL后一起发送给Web服务器,Web服务器将接收到的表单数据赋予环境变量QU ERY-STR NG。
2)POST方法。 POST方法通过使用标准输入(STDN)将表单数据传送给Web服务器,Web服务器启动指定的脚本,并将用户提供的数据传入该脚本。
ACTON属性定义要对表单数据进行处理的CGI脚本URL。
CGI输出:CGI输出方式是将执行结果送给标准输出(STDOUT)进行输出,执行结果必须是浏览器能够显示的HTML标准格式。流程图如图5所示。
CGI可以用shell脚本语言、Fottran、C语言等多种语言编写。本系统中采用C语言实现CGI的编写,执行速度快,安全性高。
4 结 论
图5 Web服务器CGI程序流程图Fig.5 Web server CGI program flow chart
笔者介绍了基于AT91RM9200微处理器的嵌入式监控系统的视频服务器设计,采用A/D转换芯片TVP5150对模拟视频数据进行数字化处理,生成符合压缩编码芯片AT2042接口标准的视频数据流。在AT91RM9100的控制和调度下,将视频数据发送到PC端。系统采用低编码率的MPEG-4编码标准,CGI技术,实现可靠的图像质量的交互功能。
[1]邹思轶.嵌入式Linux设计与应用[M].北京:清华大学出版社,2002.
[2]田泽.ARM9嵌入式开发实验与实践[M].北京:北京航空航天大学出版社,2006.
[3]段军棋,蒋丹.远程视频监控系统的设计与实现[J].电子科技大学学报,2002,31(5):525.DUAN Jun-qi,JIANG Dan.Remote digital monitoring system[J].Journal of UEST of China, 2002,31(5):525.
[4]李锋垚.基于ARM9的MPEG-4视频解码播放系统设计[M].西安:西北工业大学出版,2005.
[5]李双阳.MPEG-4视频传输关键技术研究[D].西安:西安电子科技大学,2009:5-15.
[6]张石,赵百超,王飞,等.具有远程监控功能的视频服务器设计[J].单片机与嵌入式系统应用,2009,1(9):55-61.ZHANG Shi,ZHAO Bai-chao,WANG Fei,et al.Design of video server with remote monitoring[J].Microcontrollers&Embedded System, 2009,1(9):55-61.
[7]张曦煌,柴志雷.嵌入式Web服务器中CGI的特点及实现[J].小型微型计算机系统,2003,24(11):2046-2048.ZHANG Xi-huang,CHAI Zhi-lei.Characteristic and implementation of CGI in the embedded Web server[J].Journal of Chinese Computer System, 2003,24 (11):2046-2048.