包 盛,段保通,邵锋军
(中国电信股份有限公司上海研究院 上海 200122)
在三网融合新政下,电信运营商以IPTV业务为切入点,围绕视频应用,在不同终端上开展各类视频业务,包括IPTV业务、PC视频业务和移动视频业务。视频业务的种类包含视频点播、直播、回看和增值等,视频业务的内容质量在不同终端上的标准各不相同,主要分为IPTV高清、IPTV标清、互联网视频、移动清晰、移动流畅等规格。同一视频内容为了能在不同终端上进行播放,需要预先做好离线转码工作,每个原始视频内容需要对应7~8个转码后的视频内容,既浪费了线下转码时间、消耗了大量的存储空间,又增加了数据一致性的维护成本。三网融合后,以“内容为王”的跨屏视频应用需要更快、更强、更节省资源的转码方式。
目前,视频领域采用的常见转码方案有硬件转码和软件转码:硬件转码主要应用于视频直播流转码,一般采用专用ASIC芯片或者FPGA可编程器件,转码参数设置好后很难改变,每台转码设备能够支持4~8路视频流的转换;软件转码则可以应用在各种转码场景,包括实时转码和离线转码,转码参数设置灵活,转码路数和速度取决于转码计算机的性能及数据的访问和写入速度。软件转码是目前业界的首选方案,哈雷公司在2009年推出的基于工作流程的分布式转码系统RhozetTMCarbon ServerTM4.0就是一个全自动化的软件转码产品。但是,由于视频应用的飞速发展,分布式转码技术将无法胜任高并发、海量视频的转码需求,云计算技术的出现,使得解决各种视频格式、各种码流要求的海量实时视频转码问题成为可能。
本文提出了一种基于云计算技术的视频内容实时转码[1]的解决方法,通过该方法实现视频内容的实时转换和终端匹配,大大减轻了运维人员日常转码和内容数据的维护工作。同时,通过建设云转码平台,开放实时转码能力,为第三方用户提供视频云转码服务,创造能力出租、内容汇聚、媒体经营的商业模式。
云计算转码关键技术主要包括视频转码技术和云计算技术,视频转码技术按照结构可以分为像素域转码和变换域转码,像素域转码采用“全解全编”结构,优点主要表现在实现灵活,可以满足各种转码需求,转码输出的图像质量较高,而其复杂度高、计算量大的缺点正好可以使用云计算技术进行弥补。下面我们将重点介绍这两种关键技术。
视频转码的功能主要包括码率转换、空间分辨率转换、时间分辨率转换和编码格式转换。
(1)码率转换
码率转换是指为使视频内容适合在互联网、移动网等低带宽网络上进行播放,通过有效地降低视频码率,使得经过编码器输出的码率符合网络传输要求。视频码率转换主要包括4种方法:第一种是截断高频DCT分量,通过丢弃部分高频DCT系数,使得各块的码流符合要求,其缺点是丢弃高频系数会造成图像细节的缺失,转换之后的图像质量较差;第二种是选择合适的量化步长,对解码后频域系数进行再量化来降低码率,该方法是对第一种方法的优化;第三种方法是利用提取的运动矢量和编码模式对图像重新编码,避免重做运动估计和编码模式选择;第四种方法是从视频流中提取相应的编码信息,只做一次DCT、IDCT,采用运动矢量优化方法提取运动估计的精准性。前两种方法属于开环系统,不需要通过DCT/IDCT进行重建图像,虽然很大程度上降低了计算的复杂度,但是图像质量较差;后两种方法属于闭环系统,对解码图像进行了重建,反馈了参考帧图像,重新计算了各宏块的残差,计算复杂度较高,但是获得的图像质量比较好。
(2)空间分辨率转换[2]
空间分辨率转换是指将高质量的视频(1080P)通过降低空间分辨率在移动终端(QCIF)上进行播放,通过在“全解全编”架构中添加采样模块实现,主要包括下采样算法和运动矢量的映射算法和伸缩算法。降低空间分辨率的下采样算法是指为了缩小图像的空间尺寸,对原有的采样方式进行更改,可采用的方法有:像素平均法,即采用2×2像素的平均表示一个像素;滤波采用法,通过滤波器对原始图像进行滤波,然后进行抽样。运动矢量的映射算法和伸缩算法是指利用运动矢量的等比例缩放进行视频图像的压缩,当空间分辨率降低后,低分辨率图像的一个宏块会对应原来的多个宏块,采用一定的方法计算合适的运动矢量作为新宏块的运动矢量,并将所得的运动矢量除以分辨率的压缩比,以获得低分辨率图像下最终的运动矢量。具体的映射算法包括平均值法、中值法和任意选取一个矢量作为当前宏块的运动矢量。
(3)时间分辨率转换
时间分辨率转换是指通过降低视频序列的帧率,降低对解码设备处理能力的要求,以适合带宽小、终端处理能力弱、设备分辨率低的情况。降低帧率并不是简单的丢弃帧,有时需要利用丢弃帧的运动信息重新合成运动矢量。时间分辨率转换的方法主要包括丢帧、帧类型转换和运动矢量合成算法。丢帧策略考虑到B帧对I、P帧没有影响,首先丢弃B帧。同时,应该根据运动矢量的积累程度决定是否需要采用合适的跳帧策略。帧类型转换主要包括B帧到P帧的转码,即把原来前向、后向、双向运动矢量全部转换成前向运动矢量。运动矢量合成算法是指视频帧之间的运动矢量依赖关系由于丢帧之后产生了中断,通过利用丢弃帧中的运动信息,采用运动矢量合成算法,生成新的参考帧运动矢量。具体的运动矢量合成算法包括双线性插值法、前向主矢量选择法、伸缩矢量合成法和宏块活跃度矢量选择法等。
(4)编码格式转换
编码格式转换是将原始视频内容所采用的编码格式转换成终端能够解码播放的格式。视频编码格式主要包括H.264、MPEG-4、MPEG-2、VC-1、RealVideo、H.263、VP6 等 ,由于H.264采用了许多新技术,提高了编码效率,并且同等画质下相比其他编码格式码率较低,已经成为当前主流的编码格式。因此,在从传统的视频编码标准到H.264转换的过程中,需要根据H.264采用多参考帧、多编码模式以及1/4像素运动估计等特点进行优化[3],以减少高准确度所带来的高计算量,主要包括帧内图像预测、多模式选择和运动估计等[4]。
由上述分析可见,视频转码过程中所涉及的编码模式选择、运动矢量提取、预测估计和合成等步骤都需要大量的数学运算,传统的转码平台无法支持大并发量的实时转码请求,云计算技术的出现为大容量实时转码平台提供了解决方案。
云计算关键技术[5]主要包括Bigtable技术、MapReduce技术和HDFS分布式文件系统技术。下面将对这3个关键技术进行展开讨论。
(1)Bigtable技术
Bigtable是一种分布式的结构化数据库技术,可以用来设计处理分布在数千台服务器上的PB级海量数据,具有很好的适用性、可扩展性和高可用性。Bigtable是一个稀疏、分布式、可持久化存储的多维度排序Key-value数据库。数据库的索引是行关键字、列关键字和时间戳,数据库的值是可以由用户自己定义的XML格式。数据库中的每个行可以支持动态分区,分区后得到的Tablet是数据分布和负载均衡的最小单位,通过采用特定的Tablet服务器可以实现数据的分布式存储。列是用来描述需要存放的数据属性,多个列关键字可以组成列族,列族中的数据都属于同一类型,列族的使用可以对多个列关键字进行批量的处理。Bigtable中每个存储的数据项都可以包含同一个数据的不同版本,不同版本的数据通过时间戳进行区别。为了减轻版本管理的负担,Bigtable对每个列族都配有两个设置参数,通过这两个参数对废弃版本的数据进行自动垃圾收集,比如,用户可以指定只保存最后n个版本,或者只保存最后n天写入的数据。
(2)MapReduce技术
MapReduce技术是一种新兴的分布式计算模型[6],可以支持处理TB级别以上的巨量数据业务。MapReduce的基本原理是对输入的数据进行逻辑上的Map操作,并根据需求计算出一对Key-value值,然后对输出的Key-value值进行Reduce操作,合并后生成最终数据。在MapReduce执行的过程中,首先会对输入文件进行分片,然后在大量服务器中开始拷贝程序,由主控程序分配Map、Reduce任务给任意的空闲服务器。分配到Map任务的服务器读取输入的分片文件,分析出Key-value对,然后根据用户自定义的Map函数进行处理,并将结果写入磁盘上的多个不同区域中。分配到Reduce任务的服务器通过远程调用获取磁盘上的数据,并对具有相同key值的内容进行排序和聚合。MapReduce技术在具体应用中还需要进一步考虑容错机制和任务的颗粒度,从而获得最大的计算性能。
(3)HDFS 分布式文件系统
HDFS分布式文件系统[7]是一种基于流模式(write one read many)的数据访问文件系统,能够支持PB级的海量数据。HDFS采用主/从架构,一个HDFS集群包含一个中心服务器(namenode)和多个数据服务器(datanode)。中心服务器负责管理文件系统的命名空间和客户端对文件的访问。数据服务器负责管理节点上的数据存储。在文件存储时,文件将被分成一个或者多个块(block),这些块存储在数据服务器中。在文件读取时,由中心服务器执行文件的打开、关闭等操作,并决定块在数据服务器上的映射。在进行文件复制时,所有的块都会被复制,每个文件的块大小和复制因子都是可配置的。中心服务器负责管理块的复制,它周期性地从集群中的每个数据服务器接收心跳包和一个块报告。心跳包的接收表示该数据节点正常工作,而块报告包括了该数据服务器上所有的块组成的列表。
目前,运营商开展的视频业务采用离线转码的实现方式。在这种方式下,对于CP上传的每个视频内容,都需要在统一内容管理系统中进行转换,生成MPEG-4、H.264两种编码格式以及标清、互联网、移动清晰、移动流畅4种类型的码流。对于今后大规模开展三网融合视频业务,存在内容上线时间长、消耗存储多、数据维护难等一系列问题。
通过运用云计算转码技术,新增云转码平台,形成新的实时转码体系架构。统一内容管理系统在内容上线时,可直接向各个视频业务系统发布同一内容及内容元数据。用户通过不同终端使用视频业务时,由云转码平台从视频业务系统中获取内容数据并进行实时转码。体系架构如图1所示。
体系架构中各模块及功能作用如下。
(1)应用终端
可以通过客户端方式或者“浏览器+视频播放器”方式进行视频流媒体的播放或者下载观看,对于无法播放的视频内容,直接向云转码平台发起转码请求,由云转码平台提供流媒体服务。
(2)视频业务系统
三网融合视频业务系统包括移动视频业务系统、互联网视频业务系统和IPTV业务系统。每个业务系统都包含视频门户、视频业务能力系统和视频业务管理系统。视频门户主要提供业务展示,能够同时为应用客户端方式及“浏览器+播放器”方式提供业务展示;视频业务能力系统主要提供点播、直播和回看等流媒体服务能力以及视频内容下载能力;视频业务管理系统提供视频业务的认证、管理、计费,并可以平滑升级到由ISMP进行统一管理。
(3)统一内容管理系统
视频内容均来自统一内容管理系统,该系统提供视频的内容获取、元数据管理、内容发布等功能。
图1 三网融合下的视频业务实时转码体系架构
(4)云转码平台
包括视频转码仓库和云转码能力,云转码平台将视频内容进行实时转换后,提供给CDN系统,由CDN系统提供给终端进行播放,同时将转码后的视频内容保存在视频仓库中。视频仓库可根据转码内容定期进行用户行为分析,并将分析结果反馈给统一内容管理系统。
云转码平台的架构设计运用了云计算的关键技术,采用Bigtable技术对转码原始内容和转码后内容的存储,可通过URL关键字排序快速获取各种类型的码流,将视频编码帧逐帧存储在数据库中,可进行快速读取和复制,Tablet的易扩展性也能够保障业务的扩容需求;采用MapReduce技术对切片的视频帧进行高效并行的转码处理,由转码程序预先设置好的执行程序可以满足各种形式的转码需求;采用HDFS文件存储技术对Bigtable表和转码中间文件进行存储,对转码文件进行高速访问和复制。云转码平台的具体设计要求如下。
(1)云转码平台在进行Key-value数据库设计时,行关键字为视频内容的URL播放地址,列关键字为需要转码的参数,包括码率、帧率、分辨率、终端类型等,存储的数据为视频内容的编码帧数据。
(2)云转码平台单个任务的输入数据一般切片为16~64 MB,Reduce任务一般为服务器数量的2~3倍。
(3)云转码平台应采用“全解全编”的像素域转码结构,而不采用对转码质量影响较大的变换域转码结构。在进行视频内容的码率转换时,应采用从视频流中提取编码信息,利用提取的运动矢量和编码模式对图像重新进行编码的方式,而不应采用直接丢弃高频DCT系数或者对频域系数进行重新量化来降低码率的方式。
(4)云转码平台在进行空间分辨率转换时,应通过在“全解全编”结构中增加采样模块来实现。使用下采样算法和运动矢量的映射算法和伸缩算法实现空间分辨率的降低。
(5)云转码平台在进行时间分辨率转化时,应采用丢弃视频帧和帧类型转换的方式实现。在丢弃视频帧和进行帧类型转换后,还需要进一步通过运动矢量合成算法,重新生成新的参考帧的运动矢量,保证视频帧的连贯性。
(6)云转码平台在进行视频转码时,应增加容错机制,通过采用前向纠错(FEC)和自动重发请求(ARQ)等容错措施降低误码率。
(7)云转码平台应尽量采用One-Pass转码方式,由于解码过程不会造成图像质量的损失,质量的下降是在编码过程中引入的,所以应在编码过程中尽量减少其他环节,解码后直接编码。只在下面情况发生时采用Two-Pass转码:码率无法压缩到预定要求;码流的杂声太大,可以做滤波处理。
目前,云计算技术已经在互联网领域得到广泛应用,涉及海量数据的应用,如Facebook、GoogleMap等均采用云计算技术作为其基础框架。电信运营商在三网融合业务中引入云计算技术是一种新的尝试,其目的是为了加快运营效率、改善用户体验。在业务运营过程中,我们将更关注于云计算技术给实时转码平台带来的高效性、可扩展性和易部署性。
1 王海蓉,邢卫,鲁东明.面向移动网络的实时视频转码系统.计算机工程,2009(3)
2 韩镇,胡瑞敏,陈皓.一种基于精确度的降分辨率视频转码运动矢量合成算法.中国图像图形学报,2010(1)
3 尚凯,张万绪.AVS-H.264视频转码快速算法.计算机工程,2010(12)
4 王波,刘涤尘,李敏.一种基于H.264的混合视频转码方法.计算机应用研究,2009(5)
5 陈全,邓倩妮.云计算及其关键技术.计算机应用,2009(9)
6 桂兵祥,何健.基于高性能云的分布式数据并行处理机制.武汉工业学院学报,2010(1)
7 许春玲,张广泉.分布式文件系统Hadoop HDFS与传统文件系统Linux FS的比较与分析.苏州大学学报,2010,(4)
8 韦乐平.三网融合的思考.电信科学,2010,26(3)