嵌入式视频网络服务器的开发及其应用
扫描二维码
随时随地手机看文章
摘 要:本文详细介绍了一套嵌入式视频网络服务器系统:视频数据压缩部分由MPEG-X协议的ASIC芯片完成,嵌入式CPU只负责控制。它采用了压缩与控制分离的方式,提高了系统的灵活性和整体性价比。最后,本文给出了该视频服务器在校园亲子监控系统中的一个应用实例。
关键词:MPEG-X; RISC CPU; 亲子监控系统
引言
近几年随着嵌入式技术的蓬勃发展,出现了基于嵌入式视频服务器技术的远程网络视频监控设备。嵌入式视频服务器的主要工作原理是:模拟视频信号经A/D后,采用MPEG-2或MPEG-4协议压缩,然后将压缩后的视频数据打包,传送到网络上。用户可以直接用浏览器或者客户端专用软件观看视频服务器上的图像,授权用户还可以控制摄像机云台镜头的动作或对该嵌入式系统进行配置。压缩部分可以采用专用的硬件芯片或由嵌入式CPU进行软压缩实现。如果采用后者,则要求该CPU有较强的运算功能。
嵌入式视频网络服务器主要可以应用于城域教育网、远程网上培训、网络电视/电台、实时数字监控、远程视频会议等领域。
软压缩视频服务器
已有的视频服务器采用CPU软压缩方式(见图1)。4路模拟视频数据接入到视频解码器上,然后解码器将数字化后的视频流数据传送给CPU—— PNX1300, MPEG压缩协议存储在Flash上,PNX1300将视频数据压缩后,输出给以太网控制芯片,然后视频数据通过RJ-45端口上传到以太网上。
PNX1300是Philips公司专为多媒体应用而优化设计的高性能低功耗芯片,其内核为32位通用VLIW结构的DSP 。可以较好地实现音视频压缩和解压缩算法。
但软压缩速度比硬压缩慢,而且要实现MPEG-X压缩协议,工作量非常大。另外,协议升级代价也很大。
硬压缩视频服务器
针对软压缩视频服务器的这些缺点,本文设计开发了采用硬压缩芯片的视频服务器,如图2所示。
多路视频数据的采集、A/D及传输格式
摄像机的模拟视频信号输入到视频解码器后,转换为数字视频信号。以Philips的SAA7113为例,说明视频解码器解码后的数据格式。
SAA7113支持NTSC/PAL/SECAM制式,A/D精度是9位,并行8位输出。在PAL制式下每一帧模拟视频信号数字化后的输出图像大小是 1728×625,实际有效像素数是720×576,每一秒为25帧,所以视频输出带为27MHz。每一个时钟周期(1/27MHz)并行输出一个字节,每两个时钟周期输出一个完整的像素点,即每个像素点占用2个字节。输出的数据格式遵循ITU-R656标准,即YUV为4:2:2,所以每个像素点亮度信号占8位,两个色度信号共占8位。除了输出数字像素外,A/D还需传输同步时钟信号。CPU可以通过I2C总线设置SAA7113的相关寄存器,以对转化后的数字图像进行参数控制。
打包和视频信号的本地显示
ADC将多路模拟视频图像数字化后,为了便于压缩,需要将多路图像打包成一路数据,可以用AT4012来实现。
多路数据打包器将4路数字视频信号整合成1路视频数据流,并在每路视频数据头上打上ID号,以供压缩芯片分别压缩。同一时间它只能为某一路视频数据打包。例如当为第1路数据打包时,暂时还不能处理其他3路数据,这时它将其它3路数据暂存到SDRAM中。待完成当前数据的打包后,再将SDRAM中的数据取出处理。
除了将多路数据打包外, AT4012还有画面分割功能,即给AT4012接上视频D/A芯片后,可将1路复合数字视频流转换为模拟图像, 这样用户就可以在本地的1个监视器上看到4路摄像机摄到的图像,如果在多路打包器前接9路摄像机,用户就可以在一个监视器上看到9个画面。
视频数据的压缩
多路数据打包器将数据整合为一路后,输入给专用硬件压缩芯片处理。以AT2021(集成MPEG-2协议)芯片为例,硬件压缩算法由几部分构成。
视频输入接口:提供视频信号输入接口,并进行一些压缩前的预处理以提高压缩比。
运动预测补偿单元:根据MPEG推荐的BMA算法进行图像的运动预测补偿压缩。
DCT/量化单元:为每幅图像的宏块进行DCT和逆DCT变换,然后再依据试验得到的量化矩阵对DCT系数进行量化。
VLC和熵编码单元:对量化后的DCT直流系数进行DPCM编码,以及对量化后的DCT交流系数进行变长编码,最后再对交直流系数进行熵编码。
系统CPU部分及其它
多路视频数据压缩以后,需要输入到CPU中打包,以发送到网络上。
CPU选取三星公司的32位RISC芯片S3C4510, 该芯片是专为嵌入式以太网应用开发的,内核为ARM7TDMI,支持高代码密度的THUMB指令集。通过其外设I2C总线,可以控制前端的视频采集、压缩模块芯片的工作模式,如可以设置视频解码器解码时的亮度、色度、饱和度控制寄存器,S3C4510支持UART,外接上RS-232口后,可以将视频服务器与主机相连以进行主机与服务器的数据交换。
S3C4510支持10M、100M单工和双工模式的以太网传输。在单工模式下,它支持CSMA/CD协议,在双工模式下,支持IEEE 802.3的MAC层。因此还需给S3C4510连接上控制网络物理层的芯片,如Intel的LXT970A,从而构成了以太网从应用层到物理层完整的网络结构。
图3中,压缩芯片以AT2021、CPU以S3C4510为例,给出压缩芯片与CPU的接口。
S3C4510通过地址总线LA[0..3]寻址AT2021的相关寄存器,通过数据总线LD[0..15]读写数据以设置AT2021的工作参数、监控AT2021内核的工作状况,并获取压缩后的数据。例如可以设置压缩后的视频输出流的格式为IPP或IBBP。
S3C4510将数据取到内存后,按照每路视频数据前的ID号,区分当前数据,然后给数据分块打包,设置好其IP目的地址,然后传送到网络上,远端就可以接收。当然打包后的数据也可以直接存储到本地的硬盘中,以供以后查询,即硬盘录像机(DVR)。
视频服务器功能扩展
由于采用压缩芯片和CPU分离设计,极大地提高了系统灵活性。将图2中的CPU替换为PCI9054总线主控芯片,就变成基于PC的多路实时图像采集压缩卡,这是基于PC的硬盘录像机的关键设备。
视频服务器软件体系
由于本系统的RISC芯片核是ARM7TDMI,没有内存管理模块(MMU),所以Linux选用mClinux。它具有强大的网络功能,支持PPP、 Ethernet等多种网络连接方式,包括完整的TCP/IP协议栈及大量的其他协议。嵌入式Linux软件开发平台的系统结构如图4所示。[!--empirenews.page--]
在某些实时性要求较高的场合,需要加入一些实时控制补丁。标准的Linux内核没提供嵌入式应用程序所需要的可预测响应时间,这主要是过长的中断反应时间和任务切换反应时间造成的。在一个标准的Linux内核里,系统调用或者运行在内核里的其他代码会不停地运行,直到完成或者直到代码主动地对其他线程发起控制。在这期间,内核不会在线程之间切换。线程切换时,漫长的反应时间不能为多线程的实时应用程序所接受。
抢先任务补丁改变了这个状况:它允许线程几乎在内核里的任何地方以及任何时间被抢先运行。它通过用对称多处理(SMP)自旋块(spinlock)来指示内核中关键的非抢先任务区域实现。内核的所有其他区域都被认为是抢先任务的。
应用实例
在幼儿园或小学教室里安装视频服务器,学生家长就可以通过互联网观看到孩子在校学习生活情况。如图5所示,在每个教室里安装一台摄像机,在操场上安装2台摄像机,然后将摄像机连接到视频服务器上,视频服务器将压缩后的多路图像上传到网络。家长就可以观看孩子在校情况,同时也可以通过视频服务器外接监视器观看。视频网络服务器也可以将图像存储在本地硬盘中,家长通过访问校方的视频服务器实现视频点播(VOD)。
结语
采用专用压缩芯片进行数据压缩,既降低了视频服务器的开发难度和成本,也易于压缩协议升级。随着嵌入式技术快速发展和普及,嵌入式设备将在整个后PC时代越来越多地替代传统PC,渗透到工业生产和人们的日常生活中去。