1 引言
随着计算机网络和视频压缩技术的快速发展,多媒体技术的研究和应用受到了越来越多的重视,其中视频服务器的发展尤为迅速,特别是嵌入式视频服务器[1][2]。
由于具有体积小,安装灵活的特点,只要能接入到Internet, 它就可以为任何授权的用户提供实时的视频监控服务,避免了铺设专门线路进行视频信号传输的昂贵费用。
嵌入式视频服务器是一种能提供视频采集,视频数据压缩,网络传输功能的一种多媒体信息服务器。其传输处理的是视频流,而视频传输具有实时性高、数据量大等特点,它需要满足以下三点要求:一:高带宽,高带宽保证大数据量的多媒体数据传输效率;二:支持QoS,保证传输的质量、资源预留;三:支持多种传输方式。由于嵌入式环境资源的限制,在视频数据的实时性传输和图象质量方面,其QoS一直得不到保证。特别是多路的情况,实时视频的传输质量随路数的增加会急剧下降。嵌入式视频服务器性能的瓶颈主要在于视频数据的传输上,因此缩短视频数据的传输时间就能提高视频服务器的性能。缩减视频数据的传输时间可以从两个方面入手:一:减少视频数据传输的信息量。主要通过采用高性能的压缩编码技术来减少传输的信息量。二:采用适合多媒体数据的传输协议。考虑到嵌入式的系统资源及其宝贵,故我们选用了目前编码效率最高的H.264[3]技术和专门为传输多媒体数据的RTP[4]传输协议设计了本文这套系统。实验结果表明,该嵌入式视频服务器在不影响图象质量的前提下,能够比以往的视频服务器占用更低的带宽。
2 系统的硬件组成
我们在设计中采用了HHARM2410嵌入式开发套件,它由核心板和底板组成,核心板上集成Samsung S3C2410 处理器(203M 的主频,100M的总线速度),64M SDRAM以及16M 的FLASH。底板上提供以下外设接口:一个四线RS-232 串口,一个USB HOST接口,一个10M/100M自适应以太网接口,一个TFT LCD接口, 一个触摸屏接口。操作系统采用裁减过的嵌入式Linux。该嵌入式视频服务器的结构框图如图1所示。
图1 嵌入式视频服务器硬件组成
应用程序通过编码器模块采集H.264视频流,按照RTP协议实时打包,并通过以太网接口 实现实时流传输( IP Streaming) 。另外还可以扩充一块802. 11b /g无线模块,来达到无线网络传输的目的,并可通过IDE接口扩充一块IDE硬盘作为本地H.264视频图像存储之用。
3 服务器软件设计
服务器是整个系统的核心,它工作在嵌入式Linux平台上,嵌入式Linux是标准Linux经裁减得到的,同Linux一样,具有稳定,安全,高效率,实时性好等优点。服务器端采用模块化设计,从功能角度,服务器端的软件体系结构可划分为5个模块:采集模块,编码模块,网络传输模块,存储模块,设备控制模块。其体系结构如图2所示:
图2 服务器软件体系结构图
(1)采集模块,主要完成视频的采集,图像格式的转换,在此处设定采集的图像格式为YUV。采用Linux的v4l[5]来实现,v4l是Linux中提供的一个音视频接口规范,所有的音视频设备的驱动编写要用到这些接口。
(2)编码模块,主要完成对采集的图像的压缩编码。对采集到的图像数据进行压缩可以有两种方案,一种是用硬件来压缩,它可以有专用系统和通用系统两种形式,其中,专用系统使用专用芯片实现图像的硬件压缩,通用系统则利用通用芯片实现数据压缩。相对于通用系统,用专用芯片对图像用硬件进行压缩可以快速进行图象压缩,减少处理器的开销等点。第二种压缩方法就是用软件来实现,这种方法对机器的硬件配置要求较高,但运用起来灵活,考虑到现在硬件技术已经比较成熟,故我们采用第二种方案,对采集到的图像数据进行软压缩,此处利用H.264标准进行压缩。H.264压缩标准是一种新的编码方法。与其他压缩编码方式比较,利用H.264标准可以获得更高的压缩比及更好的图象质量。H.264编码器都是开源的,可以从网上下载,此处用的是t264,对采集到的YUV格式的数据进行逐帧压缩。
(3)网络传输模块,完成现场多媒体数据及历史多媒体数据的网络的传输,用于支持浏览端的现场预览和记录回放功能。其基本过程是码流经码率控制部分进行码率调整,然后由RTP组件传送到网络中。传输启动之初,组播控制器根据多用户代理提供浏览端的组播策略来协商组播策略;传输过程中,RTCP组件实时监测网络状况并反馈給决策控制器,决策控制器控制分离器、视频抽帧器和码流复合器组件,完成码流的动态整合。其传输体系结构如图3所示:
图3视频流传输体系结构
(4)存储模块,多个摄像头采集的多路视频数据经编码压缩后形成复合媒体流,通过存储组件,存为H.264文件,同时向数据库中写相应的文件信息。
(5)设备控制模块,设备控制器接收用户界面发出的或网络传送来的控制命令,控制解码器,完成对云台、镜头等设备的控制。
4 客户端软件设计
客户端主要完成视频数据的接收,解码和显示工作,同时还可以动态设置编码器的数。从功能角度,客户端的软件体系结构可划分为3个模块:设备控制模块,网络的接收与反馈模块,显示模块。其体系结构如图4所示:
(1)设备控制模块,根据用户输入的命令((例如改变视频窗口大小、接收路数,图象分辨率、开始/停止远程监控等), 产生控制命令并通过一个TCP连接发送到服务器端,服务器端设备控制器接收这些控制命令,并完成对云台、镜头等设备的远程控制。
(2)网络的接收与反馈部分,根据用户的基本带宽情况(局域网还是非局域网)及请求的任务类型(现场预览还是历史回放),确定该接收码流是否基于组播策略接收。RTP组件完成码流的接收,RTCP组件检测码流的丢包率并反馈给服务器端。
图4 客户端软件体系结构
(3)显示模块,同步源过滤器从RTP组件得到码流,在控制器的协调下,完成解码及同步的视频播放。此处我们采用的是Microsoft DirectShow[6]架构来完成H.264 码流的实时解码和图像显示工作。
试验证明,对于包含有视频服务器、多监控客户中心的嵌入式视频监控系统,上述网络传输部分能够很好地完成视频数据的实时传输,网络自适应能力良好。