一种基于分布式的视频转码方法

文档序号:9220116阅读:528来源:国知局
一种基于分布式的视频转码方法
【技术领域】
[0001] 本发明属于大数据与视频处理技术领域,涉及分布式平台上的海量视频的转码处 理,尤其涉及一种基于分布式的大规模视频转码方法。
【背景技术】
[0002] 由于互联网及手机网络的不断发展,涌现出越来越多的媒体传播的平台,加之手 机普遍都具备摄像功能,便携式的摄像机的使用也变得很普遍,视频的制作和发布变得非 常简单,人们每天都会制作出大量的视频数据并分享到互联网上,同时低功率的摄像传感 器网络及视频监控网络也得到了大量应用,使得每天新产生的视频数据出于持续增长的状 态。由于网络的异构性和终端播放设备的多样性,往往需要将视频文件进行格式转换,以满 足不同的应用需求,转换内容包括改变视频的编码格式、分辨率、比特率等属性。视频转换 工作十分消耗计算资源,CPU占用率很高,在进行格式转换任务时,其他的任务很难得到处 理,因此有必要将视频转码作业从单机系统中脱离出来进行处理。传统的视频转码是集中 式的,在处理大量的视频数据的时候有很大的局限性,其计算能力很难随着数据量变大而 线性增长。分布式计算技术的发展为解决这个问题提供了可能。

【发明内容】

[0003] 本发明要解决大规模视频的转码问题,针对视频转码的效率,提出一种基于分布 式的大规模视频转码方法,实现在大数据处理平台Hadoop的基础上,完成分布式的大规模 视频转码过程。
[0004] 为了实现上述目的本发明采用以下技术方案:
[0005] 一种基于分布式的视频转码方法,其流程如图1所示,具体包括以下步骤:
[0006] 步骤1.上传视频文件:将需要转码的大量源视频数据上传至Hadoop平台的HDFS 文件系统上;
[0007] 步骤2.对已上传至HDFS的源视频数据进行预处理:通过Hadoop平台提供的 InputFormat接口,将每个源视频文件解析成一个相应的键值对〈key,value〉,其中,key为 视频文件名,value为转码参数信息,其包括视频的保存位置、源视频格式信息及转码的目 标视频格式信息;
[0008] 步骤3.将源视频文件进行分割:在Hadoop平台上启动第一MapReduce任务作业, 利用Xuggler多媒体处理库对每一个源视频进行分割,其中Map函数的输入为通过步骤2 预处理得到的键值对〈key,value〉,通过读取每个键值对包含的视频信息,对相应的视频数 据进行分割操作;该MapReduce作业输出通过分割而得的视频分块及相应的键值对信息, 该键值对信息包括每个视频分块的源视频文件信息及该视频分块在源视频中的位置;分割 得到的视频分块可进行单独的转码操作;
[0009] 步骤4.对步骤3经分割得到的视频分块按目标视频格式进行转码:在Hadoop平 台上启动第二MapReduce作业,利用Xuggler多媒体处理库对每一个视频分块进行转码,其 中,该作业的Map函数的输入为处理步骤3得到视频分块的键值对信息,得到转码后的视频 分块及相应的键值对信息,该键值对信息包括每个视频分块的源视频文件信息及该视频分 块在源视频中的位置;完成转码后,第二MapReduce作业的Reduce函数通过读取本步骤所 得的键值对信息,将同属于一个源视频文件的转码后的视频分块按时间位置顺序进行组合 获得相应的转码后目标视频,由此完成源视频到目标视频的转码过程。
[0010] 进一步的,步骤3的视频分割过程中,视频分块的大小与Hadoop平台上HDFS的分 块大小相同,这样在进行转码任务时,一个Map任务只需从一个节点上读取数据,转码任务 执行时,更可能达到数据本地化,减少文件传输过程。
[0011] 本发明的有益效果是:
[0012] 本发明在传统视频转码的基础上提出了一种采用大数据处理的方式进行视频转 码的方法,具有以下优点:
[0013] (1)本发明利用分布式文件系统的扩展性和稳定性特点实现对大规模视频数据的 储存,解决传统集中式储存对硬件要求高、维护困难、不易扩展等缺点,动态地适应日益增 长的大规模视频数据的储存需求;
[0014] (2)通过分布式系统的实时调度,各个工作节点以非常高的效率协同工作,且能够 适应动态的运行环境,达到降低整个视频转码时间的目的;单机系统转码对单机的硬件配 置要求较高,而分布式转码系统仅需用普通的电脑搭建集群即可,且对整个视频的转换速 度会更快;
[0015] (3)利用分治的思想,将文件分成合适大小的分块,通过对各个分块的并行转码, 提高对整个文件的转码效率;系统在文件处理的过程中若出现问题,只需要重新调度执行 出错的分块,而不必重新处理整个文件,进而缩短了出错时重复处理的时间;
[0016] (4)Hadoop通常用处理文本文件这类的结构化数据,用它来对视频文件这种非结 构化的数据进行处理,不但扩展了Hadoop平台的应用范围,也为大规模视频数据的其他处 理如视频检索、跟踪等应用提供一个可参考的方式。
【附图说明】
[0017] 图1为本发明方法提供的视频转码方法流程图;
[0018] 图2为本发明实施例实验系统的网络拓扑结构示意图;
[0019] 图3为本发明实施例转码前视频的播放效果;
[0020] 图4为本发明实施例转码后视频的播放效果。
【具体实施方式】
[0021] 为了使得本发明的目的、技术方案和有益效果更加清楚明白,以下结合具体案例, 并参照附图,对本发明进行进一步详细的说明。
[0022] 本发明是用于大规模视频转码的,该方法在大数据处理平台Hadoop上采用分布 式的方法最终实现大规模的视频转码,系统利用HDFS文件系统对大规模视频数据进行储 存,利用MapReduce编程模型进行分布式处理,借助多媒体库Xuggler实现对视频的处理。 本发明对视频的分布式转码主要经历三个过程:首先用一个map函数完成对源视频文件分 块,分块完成后对每一个分块用一个map函数进行转码,最后在reduce阶段将转码后的分 块按顺序合并成完整的视频文件,其中所有的视频处理都是在HDFS上进行的。
[0023] 一种基于分布式的视频转码方法,其流程如图1所示,具体包括以下步骤:
[0024] 步骤1.上传视频文件:将需要转码的大量源视频数据上传至Hadoop平台的HDFS 文件系统上;
[0025] 步骤2.对已上传至HDFS的源视频数据进行预处理:通过Hadoop平台提供的 InputFormat接口,将每个源视频文件解析成一个相应的键值对〈key,value〉,其中,key为 视频文件名,value为转码参数信息,其包括视频的保存位置、源视频格式信息及转码的目 标视频格式信息;
[0026] 在Hadoop系统中,对MapReduce作业的输入处理是通过实现InputFormat 接口实现的,利用实现的类将输入解析成为键值对,此接口包含getsplitsO和 createRecordReaderO这2个方法;其中getsplitsO用于得到计算文件的分片,因为 在Hadoop中,一个Mapper对应处理一个分片,每个map函数的输入都是键值对,通过 createRecordReader()返回一个实现RecordReader接口的对象,对每个split循环调用对 象的next()方法按照开发者自定义规则进行处理,将每个split解析成键值对;对于视频 格式的文件,通过实际需要来定制当前的InputFormat接口;
[0027] 步骤3.将源视频文件进行分割:在Hadoop平台上启动第一MapReduce任务作业, 利用Xuggler多媒体处理库对每一个源视频进行分割,其中Map函数的输入为通过步骤2 预处理得到的键值对〈key,value〉,通过读取每个键值对包含的视频信息,对相应的视频数 据进行分割操作;该MapReduce作业输出通过分割而得的视频分块及相应的键值对信息, 该键值对信息包括每个视频分块的源视频文件信息及该视频分块在源视频中的位置;分割 得到的视频分块可进行单独的转码操作;
[0028] 在分块过程中,系统为每个分块按照原视频播放顺序从1开始分配一个ID,以便 在reduce函数能按照正确的顺序对分块进行合并;视频分块大小的确定:如果视频分块太 大,则不能很好地利用系统的并行性,如果分块过小,视频分块个数就会增多,相应的需要 启动更多的Map任务进行转码,消耗在启动Map任务上的总时间就越长;本发明从数据本地 化的角度出发,简单地将视频分块大小设定为HDFS的分块大小,这样在进行转码任务时, 一个Map任务只需从一个节点上读取数据,转码任务执行时,更可能达到数据本地化,减少 文件传输过程;
[0029] 由于视频每一帧的尺寸通常不一样,造成具有相同时长的视频分块,其大小也会 有差异,为了控制分块儿大小,本发明采取的策略是:分割时设定的时间间隔=视频总时 长X80%XHDFS配置的block大小/视频文件大小,其中80%是一个经验值,这样设定的 目的是尽量使一个视频分块保存在一个block之内,以降低map任务跨节点读取数据执行 的概率,实现任务的本地化;
[0030] 步骤4.对步骤3经分割得到的视频分块按目标视频格式进行转码:在Hadoop平 台上启动第二MapReduce作业,利用Xuggler多媒体处理库对每一个视频分块进行转码,其 中该作业的Map函数的输入为处理步骤3得到视频分块的键值对信息,得到转码后的视频 分块及相应的键值对信息,该键值对信息包括每个视频分块的源视频文件信息及该视频分 块在源视频中的位置;完成转码后,第二MapReduce作业的Reduce函数通过
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1