摘要:本文论述了一款符合AVS-M标准的实时编码器的设计与实现过程,目的是验证AVS-M标准在实时应用环境中的性能表现。为了尽快地取得验证结果,本项目充分利用了网络开源项目的资源优势——以x264为AVS-M编码库设计的基础,以VLC为编码器框架设计的基础。最后对AVS-M与H.264进行了对比测试,主要比较二者编、解码后生成的音视频的清晰和连贯程度,取得了“AVS-M在低码率(32-512Kbps)、低分辨率(SQCIF-CIF)的条件下有接近H.264的性能表现” 的结果。
1. 引言
AVS-M是AVS标准的第7部分——一款专门为移动通讯环境而设计的视频编解码标准。本项目的目的是要验证AVS-M在应用环境中的性能表现,借此证明该标准的实用价值,为其在国内的产业化过程作贡献。移动通讯终端具有带宽低,误码率高和计算能力弱等特点,目前主要以MPEG-4 SP为视频编解码的标准,今后国际上可能的升级方案有H.264和VC-1等。本项目通过在相同测试环境下对比AVS-M与H.264标准的实际性能表现来证明AVS-M标准的实用价值。为了贴近真实的使用环境,本项目实现的编码器需要实现实时音视频采集、实时编码、实时通过以太网以MPEG2 TS流的形式输出码流的功能。
VLC与x264是两款遵循GPL标准发布的开源软件,其中VLC是一个流媒体平台,支持插件功能;x264是一款H.264编码库,并针对x86平台进行了优化。为了尽快取得验证结果,本项目采用VLC和x264项目为设计的出发点。VLC以插件的形式实现了实时音视频采集,H.264编码,MPEG2 TS流复用和以太网输出等功能,恰好契合本项目的总体需求;AVS-M标准起源于于H.264标准,两者结构类似、功能相同,以H.264为基础开发AVS-M标准能加快开发进度,并且采用同一代码树也能更好的比较AVS-M与H.264标准的实际性能差异。为了更符合实际的使用环境,本项目采用AAC+作为音频的编码标准。VLC本身并不支持AAC+的编码功能,而只支持其解码功能,在此采用3GPP工程的26410-700作为AAC+标准的实现,通过插件的方式来实现AAC+音频编码功能。
VLC不但支持音视频数据的采集、编码、复用和以太网发送功能,而且还支持码流的以太网接收、解复用、解码和播放功能。为了验证编码器的实际编码效果,本项目也采用VLC作为码流的接收端,通过实时观看播放的效果来评判编码器的性能表现。支持AVS-M解码功能的VLC为另一项目的开发成果,在本文不作详细描述。
2. 编码器
音频和视频编码都是计算密集型的操作,如果要实时编码就需要一个强劲的运算平台,这里采用一台Dell PowerEdge 2950 服务器作用编码器的硬件基础。PowerEdge 2950配置有一颗Intel Xeon 5160 (Woodcrest) 3.0GHz双核CPU、1GB DDR2内存、SATA II 硬盘、内置双Broadcom BCM5708C NetXtreme II GigE千兆以太网控制器,并具有两条PCI-X扩展插槽以扩充外设接口功能。操作系统选用Red Hat Enterprise Linux 4 (32bit)操作系统。
PowerEdge 2950本身不具有音视频采集接口,需要通过相应的采集卡扩展。这里采用一块Osprey 230采集卡作为实时音视频采集接口,它采用PCI-X接口形式,支持PAL/NTSC/SECAM视频标准,能实时采集一路标清视频及双声道的音频。以太网输出采用PowerEdge 2950内置的千兆以太网接口。编码器的整体框图如下图所示:
整个编码的流程为:PAL/NTSC/SECAM的视频信号通过Composite或S-Video接口,音频通过双声道音频接口进入Osprey 230 采集卡;Osprey 230由Video4Linux2与OSS驱动程序来驱动,VLC通过这两个接口控制采集卡,实时读取音视频数据,并分别将音视频数据送到AVS-M编码器与AAC+编码器进行编码;编码后生成的码流送到MPEG2 TS 复用器进行复用;复用后的TS流通过以太网接口以UDP单播或组播的方式发送出去。