为了大幅度降低成本,使远程数字视频音频监控应用更加普及,目前国内外的发展趋势是使用嵌入式系统。即采用专用微处理器、图像声音的数字化芯片、数据压缩芯片及网络接口芯片等,按照特定的功能需求开发出最小应用单板系统。这样,系统功能没有任何浪费,可大幅度降低成本。而且,由于软件都是固化在单板内的Flash ROM中,系统更加可靠。
1 系统总体结构和功能概述
由于嵌入式系统具有上述的种种优点,笔者最新开发了一套基于嵌入式技术的多媒体远程监控管理系统。
该系统采用目前流行的TCP/IP网络协议,视频编码基于H.263协议——低比特率视频通信编码算法, 音频编码基于G.723协议——低比特率音频通信编码算法。它们可以在网络带宽很低的环境,甚至是电话线上进行图像和声音的传输。
整个系统主要由三部分组成:前端机、监控中心和客户端,其具体架构如图1所示。
前端机是一块嵌入式系统的印刷电路板,它的主要功能如下:
· 四路模拟视频信号输入,可任意选择一路进行采样和压缩编码;
· 一路音频信号的编码与解码;
· 通过局域网向监控中心传送视频编码数据和音频编码数据,并接收监控中心传送的音频编码数据;
· 通过RS-232接口向摄像头的云台控制器发出控制指令;
· 通过EPLD的并行口接收用户报警信号,并通过局域网传送到监控中心。
监控中心是整个视频监控系统的中枢,它的主要功能如下:
· 通过局域网向前端机发送用户控制指令,如前端机的选择、视频通道的选择、调节图像参数(包括帧速率、码流量的大小、色度、亮度、饱和度和对比度)、声音编码音量的大小等;
· 接收多路前端机的视频编码数据,保存在本地硬盘上,同时进行解码,并显示多路解码图像;
· 向远程用户转发当前视频编码数据,或者传送存盘图像数据。
客户端是提供一个用户操作的界面。本地用户可以直接在监控中心的服务器上使用;而远程用户则有另一套操作界面,可使用的功能比本地用户少,但是它可以让异地用户通过Internet或者电话线获得本地的视频信息。
该系统还具有很好的扩展性能。对于几百甚至上千个监控点的大型监控场所,可以采用多级级联的方式,即在前端机和监控中心之间,加上一级或者多级区域服务器,每个区域服务器可以管理十几至几十个监控点,他们分担监控中心的工作,并接受监控中心的控制。
2 前端机的硬件设计与各模块的功能
本嵌入式视频监控系统的硬件开发工作主要集中在嵌入式前端机的硬件设计和调试上。
前端机是一个嵌入式系统,硬件结构比较复杂,其总体结构如图2所示。主要包含嵌入式CPU、EPLD、视频模数转换芯片、视频压缩编码芯片、音频编码解码芯片、音频模数与数模转换芯片、以太网控制器、数据缓冲存储器、网络收发器、Flash ROM、RAM、多种电源芯片和时钟芯片等。这些芯片按照各自的功能分别组合,构成了几大模块,它们分别是:CPU模块、电源时钟模块、控制模块、视频采集编码模块、音频采集编解码及模拟输入输出模块和网络模块。
CPU模块是所有硬件模块的核心,主要包括嵌入式CPU芯片,两片RAM和两片Flash ROM。一片Flash ROM存放了整个硬件的监视系统,也叫ROM Monitor。当系统上电后,CPU从中调入程序进行整个系统硬件的自检和初始化配置,并为用户提供一个简单操作环境。当系统发生故障时,可以通过它来读取CPU主要寄存器的状态,从而找出故障原因。另一片Flash ROM用来存放用户的应用程序。当整个系统通过自检后,CPU将用户的应用程序读入RAM中执行。CPU通过PCI总线与视频压缩编码芯片与以太网控制器连接,对它们进行调度和数据的收发。CPU还提供了两个串口,其中一个与普通电脑的串口连接,通过Windows下的超级终端,可以让用户对整个系统进行监测和调试;另一个串口则用于控制摄像头云台。
电源时钟模块负责给整个系统提供时钟和电源,是系统的基本模块。由于整个嵌入系统使用的芯片和器件较多,且各个器件对电源和时钟的要求也不同,所以设计时使用了四种电源芯片和六种时钟晶振。考虑到多种电源的存在,将电源层划分成了七大块,分别对所需要的器件供电;同时,也对数字地和模拟地进行了分割。这样使整个系统的电源信号达到较高的质量,大大提高了器件工作的稳定性和可靠性。
控制模块是一片可编程逻辑芯片EPLD,其主要功能包括PCI总线的地址译码与片选、电源控制、CPU的复位、I/O输入输出和看门狗逻辑。其中8路I/O输入作为用户的报警输入,6路I/O输出显示系统的运行状态。看门狗逻辑是嵌入式系统不可缺少的部分。因为嵌入式系统一般不需要时刻监管,当系统工作状态出现了偶然的异常情况,如死机,看门狗可以自动对整个系统进行复位,让系统恢复到正常的工作状态。
视频采集编码模块主要由视频模数转换芯片、视频压缩编码芯片和RAM组成。这个模块的主要功能是将模拟视频输入送到视频模数转换芯片进行模数变换,并将变换后的数字视频数据送入视频压缩编码芯片,视频压缩编码芯片在RAM中将视频数据进行压缩编码,最后通过PCI总线将视频编码数据送入CPU。此外, 视频压缩编码芯片还能通过I2C总线对视频模数转换芯片的图像参数进行控制,包括图像的亮度、色度、对比度和饱和度的调节以及视频采样通道的选择等。
音频编码解码模块主要包括音频编码解码芯片、音频模数与数模转换芯片和音频模拟信号处理电路。音频模拟信号处理电路主要是把音频信号进行滤波、放大;音频模数与数模转换芯片的功能是把模拟音频信号转换为数字音频信号及把数字音频信号转换为模拟音频信号;音频编码解码芯片的主要功能是对数字音频信号进行编解码。
网络模块主要由以太网控制器、数据缓冲存储器、网络收发器和EEPROM组成,是CPU和网络之间的桥梁,类似于计算机上的网卡。它支持IEEE以太网物理层协议,在EEPROM中用户可以自己烧制嵌入式系统的底层硬件(MAC)地址。
3 软件开发
本系统的软件主要分为嵌入式前端机程序设计、监控中心软件设计和用户界面设计三大部分。
3.1 嵌入式前端机的软件设计
由于监控系统的特点,前端机必须满足实时性和并发性的要求,所以应用软件基于嵌入式实时操作系统。采用了US Software开发的SuperTask嵌入式实时操作系统。它具有内核小、用户可配置系统参数、高效的多任务管理(支持优先级排队和循环调度机制)、支持多种物理介质及标准、完整的TCP/IP网络协议栈(兼容BSD)、完全符合ANSI C标准等特点。
前端机的应用程序由主控制、视频编码中断、视频网络传送、音频编码中断、音频网络传送、音频网络接收、音频解码中断和串口中断等几个任务组成,各个任务的关联如图3所示。
3.2 监控中心服务器的软件设计
监控中心服务器软件是在Window2000下用VC++开发的,其总体结构如图4所示。
首先,程序将根据配置文件的系统参数进行初始化,这些系统参数用户可以根据自己的需要在配置文件中进行修改。
然后,程序将进行端口监听,CCtrlListenSocket(作为监控中心服务器的Socket)开始工作。一旦前端机向监控中心请求控制端口的连接,先通过Accept()将连接指定到CCtrlSocket(),再通过CCtrlSocket::GetPeerName(rPeerAddress, rPeerPort)得到远端的IP地址。如果地址是非法的,则立即断开;如果地址合法,就调用CCtrlSocket::Init()初始化。
主线程主要接收来自用户的按钮等命令,同时利用定时器刷新系统运行的总时间以及利用定时器检查各个前端机的连接状态。
3.3 用户界面的设计
用户界面使用Delphi进行开发。Delphi是目前世界上最流行的开发语言,它丰富的应用模板并附带各种工具软件,使用户界面的开发更加方便快捷,外观更加漂亮。