基于云计算平台的视频转码设计与应用

时间:2022-09-28 01:55:42

基于云计算平台的视频转码设计与应用

摘要:随着高清视频的普及和发展,视频服务提供商面临着高清晰度视频转码的需求日益增加。视频转码既是计算密集型工作又是数据密集型工作,需要大量消耗计算机资源,但是最终会因为单计算节点的物理条件和转码算法的并发能力受到限制,造成转码速度提升不大。该文依托云计算平台将单个转码任务同时发送到多个计算节点,以提高视频转码的速度。

关键词:云计算;Hadoop;视频转码

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)25-5979-02

随着计算机技术和网络技术的发展,网络为我们提供各种服务。其中视频提供服务就是一种典型的网络服务,市场规模日益扩大,发展潜力极大。通常在用户的播放终端不同的情况下,又要让用户能正常观看视频。要达到这样的效果就要掌握视频转换的关键技术-视频转码,视频转码要在终端数据处理能力不同、终端数据显示功能不同、终端网络带宽不同、终端数据包丢失率不同等情况下进行转换。从视频转码软件的发展历程来看,早期视频转码简单依靠单个CPU的通用计算能力来实现,而今发展到利用CPU的多功能指令集。从早期的VCD(码率1.5Mbps),到有限的标清DVD(码率4.5Mbps),再到波长更短的高清蓝光(码率25Mbps),复杂的转码技术接踵而来。视频转码的并行化已俨然成为了一种潮流,它是伴随多核计算机的普及、并行计算思想的发展相呼应的必然结果。使用多线程技术,使多核CPU在视频转码工作中充分发挥并行处理性能,实现像组级、帧级、片级或模块级的并行策略,但这种策略仍然受到转码算法和CPU数量或本身并发能力的限制,使并发率上升空间有限。

Hadoop是并行编程系统,适合于处理大规模数据,可根据输入的数据分布信息,自动创建并行子任务形成一个集合,使子任务在合适的集群节点上并行执行的一个开源云计算框架。Hadoop系统的核心模块就是MapReduce,该模块极大地方便了程序员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。程序员要做的仅仅是按照MapReduce编程规范定义好map(映射)函数、reduce(规约)函数,而不需要关心节点和任务的失效及任务之间的数据等问题,就能完成分布式数据处理问题。在本文中通过基于云计算平台的MapReduce开发框架,将转码任务并发到多个计算节点,每个计算节点在同一时间对同一个视频文件的不同部分各自进行转码,系统再将分段转码结束后的视频文件整合成单个视频,即完成单个转码任务。

1 基于云计算平台的视频转码系统

1.1 系统设计原理

本系统设计是本着以提升转码任务的速度为原则,因为单个计算节点的物理条件和转码算法不会影响并发能力,使得转码任务的速度具备较大的提升空间。基于Hadoop云计算平台的视频转码系统可以满足大批量、多用户视频转码对资源的需求。本系统使用音视频转换软件来实现视频转码,将转码功能用MapReduce中map函数封装起来。当集群出现大量视频转码任务时,系统会利用集群计算能力和视频转码软件在集群节点上自动随机分配任务,实现多视频同时在线转码。码率转换、空间分辨率转换、时间分辨率转换、语法转换、容错视频转码等的工作全交给已有的转码软件来实现。

在本系统设计中,使用Java脚本提供的Runtime类函数调用转码功能代码。此方法的优点是:只要打包后最终的结果是可执行文件,无论视频处理功能是由什么语言编译的,都可以被MapReduce框架调用。Java虚拟机的运行时环境可以通过Runtime类函数获取,Runtime类函数调用可执行文件只要一个取代调用进程的内容的函数Exec。Exec函数的参数是要被调用的可执行文件的命令行,该命令行的值取决于视频处理功能的具体实现。

1.2 系统架构实现

系统整体架构采用Google提出的适用于大规模数据量的并行运算软件架构“Map-Reduce”, 主要思想是使用一个映射(Map)函数使用他的拆分功能,将一个将一个大任务拆分成若干个独立互不干扰的多个小任务,同时将这些小任务映射到多个相应节点的算法,或使用一个化简(Reduce)函数实现一个逆操作(多个相互独立任务合并成一个任务)。本系统是由存储系统、任务调度、码流预处理、码流后处理、码流分割、码流合并、转码节点等部分组成。映射器承载了将大视频码流拆分成多个小段视频码流的过程,包括码流预处理和码流分割。化简器承载了将小段视频码流转码、合并和复用的过程,包括转码节点、码流合并和码流后处理。

存储用户提交的待转码视频通过视频接收接口到达存储系统,用户可通过视频接收接口获取转码系统成功转码后的视频和相关信息。转码系统的核心是任务调度,主要是管理系统内的需要进行计算的所有资源,如遇到新的转码任务到达时任务中心时,本系统会自动根据优先级以及当前系统的空闲资源进行分配,然后分配适当的计算资源按顺序去完成码流预处理、码流分割、转码、码流合并、码流后处理等步骤。

码流预处理对用户提交的转码视频分析、容器解析,流解复用进行自定义转码需求,使视频和音频流分离。码流分割任务调度模块按照指示,指定的视频流被划分成段,分割时需要连续的流图像避免跳帧或重帧现象。任务调度模块的指令分配转码节点,读取分割后的视频码流段,根据用户设置的转码参数完成转码过程。码流后处理对转码合并后的视频码流以及转码后的音频码流按照用户指定的文件格式进行复用,生成成品文件。

1.3 视频拆分算法

一系列连续的图像组成Group Of Pictures(视频码流中的图像组)。在 MPEG编码中,图片组即I帧和I帧之间的帧排列。每个图像组至少有一个I帧,并且I帧处于图像组的开头。I帧无需依赖其他帧可以独立解码,若干个连续的图像组组成了一段视频码流。视频分割的过程中图像组级别粒子大小适中,相比单一帧的粒子而言,图像组解码的独立性更好;相比完整视频有更好的转码并发性。

所以,判断码流图像组的结构在视频文件拆分的过程中得以体现,需要视Open-Gop和Colse-Gop的不同情况分别采取不同的分割策略。例如要保证解码器能够解出这个视频文件中的所有帧,Open-Gop就必须在每一段分割码流片断的前面增加一个图像组的冗余。同时在进行分割时还要将分割策略的选择情况记录下来,供编制合并程序时参考使用。

在拆分后,如果拆分点后的第一个GOP是Open-Gop,需要多加一个GOP在后一段视频前。相反,如果拆分点后的第一个GOP是Colse-Gop,就不可能会出现无法解码视频的情况,因为视频通常被拆分点划分成为两段,拆分过程中还要注意解码器一段视频进行每一次解码时,都要查找对应视频中的序列头信息。视码流的不同会出现每个GOP前都附带有相同的序列头,也可能仅仅只开始处包含序列头。这时,如果出现前者状态,那么就在拆分时整体分割每个序列头。如果出现后者状态,则序列头添加在拆分之后的每一段子视频前面。

2 视频转码系统实验实施

为检测本系统的效果,我们将总时长为60小时的85个高清1080i测试视频(码率为50Mbps)进行实验。当系统架构和核心算法在固定的情况下,如果将这批的视频转码作为单独的任务,可以用“吞吐量”来考验衡量系统完成该任务的速度,任务处理时间越短表示系统和外部的吞吐量越大。同理,如果将每一个视频的转码作为单独的任务,则系统的性能可以使用“超时率”来进行评测,其公式为:超时率=1-视频时长÷转码时长。从这个公式可以看出如果想实时转码就是要使超时率为0,也就是说用1个小时转完1个小时的视频。当超时率为正表示超实时转码。该转码系统的性能能力的变化通过调节任务并发数量来控制,实验结果如表1所示。

从实验结果中,我们可以看到,随着并发吞吐数量的增加,外部吞吐能能力略有下降,因为视频文件拆分、合并等操作引发了额外的系统开销,但单个文件转码速度已有显著提高,由单个节点的速度严重滞后提升到4、5个节点并发实时速度。当然,并行计算会带来额外的开销,从而导致上升成本,但它缩短了单个任务执行时间,需要缩短单个转码任务执行时间,采用计算机集群并行化是可行的首选方案。

3 结束语

在当今日益丰富的视频服务中,集中式视频转码系统有着存储容量和数据处理能力不足、不可以扩展的缺点。该文提出了一种以云计算框架为基础的视频转码系统,充分发挥计算机群集的并发能力。目前,该系统已应用到电大系统教学视频的生产上,在线视频点播速度显著提高。

参考文献:

[1] 曾帅,李乐民,廖丹.一种基于视频转码与IP组播的媒体推送系统设计[J] .计算机应用研究, 2013(2).

[2] 黄柑波. 基于开放式云转码服务平台的技术研究[J] .IT时代周刊,2013.

[3] 张宇,刘新,叶德建. 基于分布式流媒体计算框架的转码系统的设计与实现[J] .计算机应用与软件,2013(7).

[4] 叶世其. 面向服务的云计算框架模型设计与实现[J] .中国新技术新产品, 2013(9).

[5] 潘小明,张向阳,沈锡镛,严丹. 云计算信息安全测评框架研究[J] .计算机时代, 2013 (2).

上一篇:NLOS环境下基于TDOA手机定位技术的震后搜救系... 下一篇:高校二手书交易市场的分析与探讨