基于H.264的群集转码系统的设计

(整期优先)网络出版时间:2019-11-17
/ 3
摘 要 本文在深入研究最新的H.264编码技术的基础上设计并实现了一种面向插件式服务架构的群集自动批量转码系统。主要介绍了H.264的编码技术,提出了系统软硬件的架构、核心功能模块的设计思想并且简单分析了在IPTV领域的应用前景。系统立足于生产实践,适应从大规模转码工厂作业到小规模转码工作的不同级别的应用,具有很高的生产实用价值。

关键词 交互式网络电视 H.264群集转码 帧内预测 帧间预测 离散余弦变换

1 概述

随着信息技术的发展,视频编解码技术的应用变得越来越普遍,在Vod视频点播 视频监控 可视电话及网络交互电视(IPTV)等领域都有了很广泛的应用。H.264是继MPEG4以后推出的新一代视频压缩标准,它较MPEG4在同等图像质量的基础上有更高的压缩比,节约了网络带宽,而且提供了更好的网络适应性,得到了数字电视、网络交互电视等产业的广泛关注。本文在深入研究H.264编码技术的基础上,设计了群集转码系统。该系统集自动批量转码、自动监控(可通过Web\Wap多种方式提供)、自动存储、查询等功能于一体,为IPTV、视频点播等产业提供了高效的节目压制系统。本系统解决了影片编码格式转换工作中耗费人力、硬件成本高昂、转换效率低下的实际问题,具有很强的实践应用性。本文主要包括以下三个部分:H.264核心技术介绍、系统架构设计及关键实现、系统的应用

2 H.264核心技术简介

H.264是JVT组织(Joint Video Team)制定出的一个新的视频编码标准,它具有高压缩比、高图像质量、良好的网络适应性等优点。与其他编码标准相比,它也是预测编码和变换编码结合的基于块的混合编码。其基本结构与其他标准很相似。然而它又在很多环节上采用了新技术,有了新的改进,主要核心技术有以下几点:

2.1帧内编码

在H.264中,充分利用图像的空间冗余性,增加了帧内预测编码,即使用当前帧内已

编码的宏块或块的亮度和色度值来预测当前编码的宏块,具体来说就是当前编码块的左方和上方的块或宏块,然后将其预测误差进行编码,这样就可以使用尽量少的比特数来表示目标宏块。根据不同的块大小,预测方法有所不同:

4*4块有九种预测方式:

如下左图a-p为当前编码宏块;右图为几种不同方向的预测方式

96341041.jpg

图1

其中模式2为DC预测,使用(A+B+C+D+I+J+K+L)>>3来获得。

16*16和8*8则都有四种预测模式,分别为垂直 水平 DC预测 和Plane预测,只是模式的顺序略有不同。帧内预测编码大大减少了空间的冗余,更适用于背景比较单一的图像。

2.2 多参考帧预测编码

H.264提供了可选的多参考帧预测技术,即在编码器的缓存中存有多个刚刚编码好的参考帧,编码器选择其中一个编码效果好的作为当前帧的参考帧。H.264可支持5个预测参考帧编码,提供了更高的容错性能,同时也有效提高了图像质量。

2.3 1/4精度的运动估计

之前的H.263采用了半像素精度的运动估计取得了良好的效果,H.264则进一步采用了1/4像素精度的运动估计。H.264中的1/4像素精度是通过内插来获得的。譬如说对于亮度分量,首先通过一个六插头的滤波器,算出1/2像素的内插值,权值为(1/32,-5/32,5/8,5/8,-5/32,1/32),然后再进行线性内插求出1/4像素值。

理论上,运动估计的精度增加一倍(例如从整像素精度提高到1/2 像素精度),可有0.5bit/Sample的编码增益,但实际验证发现,在运动矢量精度超过1/8 像素后,系统基本上就没有明显增益了,因此,在H.264中,只采用了1/4 像素精度的运动矢量模式,而不是采用1/8 像素的精度。

2.4 4*4整数DCT变换

以往的DCT变换会带来一些负效应,如浮点运算增加了编码器的计算复杂度,同时带来了由于浮点数精度问题带来的编解码不匹配。为了解决这些问题,H.264把原来的离散余弦变换DCT改变为近似的整数变换,在量化过程中整合了变换系数,使原来必须用浮点运算进行的余弦函数运算,可用整数运算进行。同时还削减了系数的种类,使得变换过程中只用到加法和移位运算,使运算量减少。

此外,在H.264中采用4*4大小的块,减少了块效应。采用整数DCT变换提高了预测精度,降低了残差信号空间相关性,只需较少的计算量和较小的处理码长,且消除了编码器和解码器之间的失配,提高了图像回放质量。

2.5 可变块大小

在H,264中,一个宏块可以根据需要被分成不同大小的七种模式的块如下图所示:

96358409.jpg

图2

这样的划分具有更强的灵活性,适合不同的图像特点,譬如说细节比较丰富的图像块可以进一步划分成4个4*4的块,而比较平坦的宏块,则可当作一个16*16的块处理。这样就能较好的保持图像的细节。然而,对于不同划分以及不同参考帧的不同预测模式应有一个统一的判定标准,来确定最优的模式,目前比较广泛使用的模式判定标准即为RDO(率先失真优化):

J mode ( s , c| Q,λmode ) = SS D ( s , c| Q) +λmode R ( s , c | Q)

式中: c 为重建块; R 包括对宏块编码的所有比特; S S D( sum of square error) 为当前块和重建块的差值的平方和。得到重建块需要对残差进行变换和量化与反量化反变换,其过程较复杂。

2.6 基于内容的自适应可变长编码和自适应算术编码

H.264与MPEG-2和MPEG-4的不同还存在于纠错编码块中,H.264的纠错编码为内容自适应可变长度码(CAVLC)和内容自适应二进制算法编码(CABAC),能提高纠错能力。而MPEG-2和MPEG-4为霍夫曼编码。

2.7 去块效应滤波

基于块的编码算法不可避免的会产生块状效应,H.264 H.264/AVC 定义了一个自适应循环滤波器。滤波的基本思想是:如果块边沿的绝对差值相对比较大,出现块人工瑕疵的可能性就很大,因此需要进行相应处理。然而,如果差值幅度很大,编码量化过程的误差不能解释,边沿很可能反映了源图像的实际样值,不需处理。通过滤波,减少了块效应,图像的主观质量得到大大改善。

作为一种新的编码标准,H.264在编码效率、图像质量、网络适应性和抗误码方面取得了成功。所以在数字电视、网络电视、DVD等领域中得到了广泛的应用。

3 系统设计与实现

群集转码系统是针对IPTV(网络交互电视)主要业务应用VOD(视频点播)的节目的制作提出的。该系统旨在实现节目源高效批量的制作。

系统软件设计为插件式系统平台+插件服务+应用系统的结构,来保证系统的灵活性、健壮性和可扩展性。

3.1 系统架构原理

系统架构如图3所示:

96352728.jpg

图3

如上图中所示,系统服务平台包含编解码器插件自动部署、转码调度、插件服务发现及注册、插件工厂和各功能模块之间通信的通信协议以及群集转码控制及管理系统等几大核心功能模块。

编解码器管理器插件作为具体编解码器实现与系统的中间层,负责各种编解码器的管理功能并代理编解码器完成转码工作。片源提供、影片存储、影片预览和具体解码器实现等插件之间通过插件服务发现及注册功能联系到系统中,利用本地或网络通信协议在平台的协调下工作。

系统中的插件点不仅仅定义在核心平台中,在插件中也定义不同的插入点,插入点体现了系统功能流程的关键点,系统与插件或插件与插件之间的依赖统一通过插件管理器管理。另,所有插件均须编译为动态链接库形式。

在这样的架构下,整个转码系统的功能被松散耦合地组织起来,是面向服务架构的体现。用户不仅可以简单随意地替换或增加不同的功能插件到系统中,更可以轻松地实现整个系统的集中或分布式部署。

由此可见,系统平台为各个插件之间透明协同工作提供了的良好基础,解决了转码系统中各个功能模块之间的紧密耦合,是系统的基本核心架构。

3.2 插件服务的发现、注册和调用

3.2.1 插件服务的发现和注册

各个插件服务在主系统平台中被注册成为本地或远程两种类型。本地插件放置在特定路径下,由系统平台自动加载;远程插件服务通过特定网络通信协议自动寻找,如Activity图4所示。

96359872.jpg

图4

一般情况下,系统中执行转码工作的各个插件服务于集中控制和调度模块是分别部署在不同的服务器和工作站中的,在主系统平台(控制调度)或分系统平台(转码、片源等)启动时会自动执行插件服务的注册操作,系统会为已成功注册的插件服务分配不同的调用接口。

3.2.2 插件服务的调用

插件模块实现特定的插件接口,在需要使用插件服务的功能时,使用抽象工厂模式统一由插件管理器提供调用接口。对于本地类型插件,使用动态共享库加载函数 dlopen() 加载插件模块后直接提供服务;对于远程插件服务,服务提供端动态加载插件后,启动服务请求监听模块,在服务调用端,插件管理器为调用提供相应插件服务代理实现。例如远程影片提取插件服务的调用如下Class图5所示。

963615.jpg

图5

3.3 影片转码调度模块

转码调度模块是系统中的核心工作模块,负责协调数据提取、Encoder/Decoder、存储等工作。此模块中定义的插入点有:影片数据提取、影片存储、编码转换、工作方式决策、编码进度控制等。

其中“工作方式决策插入点”的不同插件实现决定了系统在执行DVD转码工作时选择使用“分布式转码”或“散集并行转码”,如下所述。

分布式转码控制:

分布式转码是将多部影片转码任务分配给多台转码工作站完成转码,适用于批量转换的任务,影片转换任务所需要的时间相对固定。

散集并行转码控制:

散集并行转码是将一部影片分割成若干片段在多台工作站中完成转码,特定是单部影片的转换效率很高,适用于需要快速完的转换任务。

原理可简述为:影片分割的片段数量与可调度的空闲工作站的台数相同;由于视频帧与帧之间的连续性,任意分割会造成

参考帧缺失无法解码而产生错误,所以必须以I帧为分割依据;因为每一个GOP是一个完整的视频序列,可以根据源文件GOP的个数来进行分割;先统计GOP的个数,再根据需要将其分割为几段视频文件,调度在不同工作站中进行各自的转码任务,最后再将这些片段合并并存储。

4 系统部署

系统部署时,对于控制调度和编码转换两部分的功能应该采用分立部署方式,即:控制调度作为服务器,部署系统平台、基础底层功能组建、调度控制等模块/插件;编码转换作为工作站,部署系统平台、基础底层功能组建、编解码器等插件/模块。

如果将影片提供、存储集中管理,还可以使用如图6所示的工厂化部署模式:

96379234.jpg

图6

在工厂化系统部署中,要求转码系统能够承受大负荷运转和大容量数据存储。此种部署模式下,每台服务器中仅部署系统平台和相应插件服务,各个服务之间通过系统平台协同工作,集中了抓取和存储功能。工厂化部署方式不仅降低了部署成本也更易于大规模的转码管理。

5 系统的优点及应用前景

该系统在设计和实现上充分考虑了系统的廉价性、易用性、可扩展性以及可移植性。底层使用基础应用平台+插件服务的技术模式,合理地解决了系统各功能点的扩展问题以及自由组合部署的问题,是软件插件架构和面向服务架构的有效合理的结合。

随着IPTV市场的逐步扩大及技术的进一步提高,H.264视频编解码技术以其性能优势和技术优势将被各厂商广泛认可,是最有潜力的先进视频Codec标准。而作为以H.264为目标格式的自动转码系统可以提供高质高效的节目制作,对于IPTV及其它应用所需要的成千上万的节目制作量来说,它可以提供工厂级的制作规模,能够有效地应用到生产实践中去。

参考文献

[1] Information Technology—Coding of Audio-Visual Objects—Part 10:Advanced Video Coding, Final Draft International Standard, ISO/IEC FDIS 14496-10, Dec. 2003.

[2]Information technology:generic coding of moving pictures and associated audio information, ISO/IEC 13818-1,1995( MPEG2)

[3] ThomasWiegand, Gary J. Sullivan, Overview of the H.264/AVC Video Coding Standard, IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 13, NO. 7, JULY 2003:560-574

[4]Feng Pan, Xiao Lin, Susanto Rahardja, Keng Pang Lim, Z. G. Li, Dajun Wu, and Si Wu

,Fast Mode Decision Algorithm for Intraprediction in H.264/AVC Video Coding. IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 15, NO. 7, JULY 2005:813-821

[5] Eclipse Platform Technical Overview, Object Technology International, Inc. February 2003

[6] 齐淋淋,向健勇. H.264 视频压缩关键技术及其应用前景. 电子科技, 2005年第10 期:13-17

[7]《H.264 and MPEG-4 Video Compression Video Coding for Next-generation Multimedia》

Iain E. G. Richardson ISBN 0-470-84837-5

[8]《Video Processing and Communications》Jorn Ostermann 著 电子工业出版社 ISBN:7-5053-7635-7/TN.1596