350 likes | 556 Views
一种基于 Hadoop 的视频大数据分布式解码方法 冯强. iiec.cqu.edu.cn. 目录. 项目简介. 研究现状. 解码方案描述. 实验结果分析. 总结. 项目简介. 项目名称 : HadoopCV Hadoop + Computer Vision 项目任务 存储海量视频数据; 基于 Hadoop 处理视频数据;. 视频大 数据 + 分布式 解码. 项目简介. 视频数据. 视频数据. HadoopCV 处理流程. 常规处理流程. Mapper. OpenCV. IplImage. IplImage. 算法处理. 算法处理.
E N D
一种基于Hadoop的视频大数据分布式解码方法冯强一种基于Hadoop的视频大数据分布式解码方法冯强 iiec.cqu.edu.cn
目录 项目简介 研究现状 解码方案描述 实验结果分析 总结
项目简介 • 项目名称:HadoopCV • Hadoop + Computer Vision • 项目任务 • 存储海量视频数据; • 基于Hadoop处理视频数据; 视频大数据 + 分布式解码
项目简介 视频数据 视频数据 HadoopCV处理流程 常规处理流程 Mapper OpenCV IplImage IplImage 算法处理 算法处理 Reducer
项目简介 • 系统边界
目录 项目简介 研究现状 解码方案描述 实验结果分析 总结
研究现状 • 单机解码 • 使用单一计算节点进行解码,数据存储和解码都在本地完成,目前流行的视频播放软件均采用这种模式 • 优点:架构简单,无需提供额外的视频管理机制,即用即解; • 缺点:解码效率受节点配置影响,拓展性较差,数据安全性也较差,对大数据的处理能力不足。 • 分布式解码(转码) • 利用分布式系统进行解码,视频数据先分割成适合分块处理的大小,然后上传到分布式文件系统上。需要进行解码的时候,再将数据下载到本地,通过第三方解码库的调用进行解码,处理完成之后重新上传。这种解码模式数据存储在分布式文件系统上,但解码的时候需要数据的下载和上传。 • 优点:利用了分布式计算框架,通过并行处理提高了解码效率; • 缺点:没有充分利用分布式文件系统存储的优点,数据上传和下载的过程增加了系统开销,另外数据需要进行分割之后上传,需要提供相应的管理机制。
研究现状 • 基于Hadoop的视频大数据分布式解码方法: • 架构简单,无需提供额外的视频管理机制; • 利用了分布式计算框架,通过并行处理提高解码效率;
研究现状 • 视频压缩原理 原始帧 GOP 解码需要: 头数据; 关键帧; 关键帧
研究现状 • Hadoop直接处理视频数据 • 问题一:帧不完整 • 问题二:分割后缺少关键帧 • 问题三:分割后缺少头数据
目录 项目简介 研究现状 解码方案描述 实验结果分析 总结
解码方案描述 • 数据预处理: • HDFS设计之初是为了处理文本大数据,但只要被写入的数据很少被改动,并且对数据的操作主要是大规模的流式读取和小规模的随机读取,原则上HDFS就可以存储任何类型的数据,因此,视频数据可以不加任何处理的上传到HDFS之上。 • 数据物理分割: • 视频文件在上传到HDFS之后,根据用户设定的Block大小,默认顺序分割成64M大小的数据块,分布式的存储于集群中的DataNode之上,此时,所有大于64M的文件都被物理分割。NameNode通过维护文件系统的元数据(metadata)对文件进行管理,而HDFS面向用户的接口又是一个完整连续的文件,HDFS对用户隐藏了分割的细节。
解码方案描述 • 数据逻辑分割: • Block:物理分割数据块; • Split:逻辑分割数据块;
解码方案描述 • Hadoop直接处理视频数据 • 问题一:帧不完整 • 问题二:分割后缺少关键帧 • 问题三:分割后缺少头数据 • 问题原因: • Hadoop不知道数据内部组织方式; • 按字节分割,不是按照帧的位置进行分割; • 解决问题关键: • 如何进行按照帧的位置进行分割
解码方案描述 • 数据逻辑分割: • Split定义: • 依然按照Block起止位置进行定义,数据大小同Block大小; • Split读取规则: • 向前读取; • 丢弃第一个关键帧之前数据,确定Split的真正起始帧位置; • Split的终止帧位置设定在Block结束字节位置附近,定义在结束字节位置之后的第一个I帧;
解码方案描述 • 数据逻辑分割: • 问题一:帧不完整 • 问题二:分割后缺少关键帧
解码方案描述 • 分布式解码: • FFmepg:FFmpeg是一个开源免费跨平台的视频和音频流方案,可以运行在windows和linux上,包括一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。 • Fuse-dfs: fuse-dfs是hadoop项目自带的一个功能模块。主要实现把dfs上的数据映射至本地指定mount点。由于现存的软件无法直接使用hdfs上的数据,所以此时可以借助fuse来实现本地文件系统的映射。
解码方案描述 • 分布式解码: • Split确定数据边界; • RecorderReader循环读取; • 解码数据; • FFmpeg解码: • 支持本地文件接口; • 不兼容HDFS; • Fuse-dfs挂载HDFS: • 虚拟本地文件接口,提高兼容性; • 隐藏网络传输细节,通过网络传输 视频头数据;
解码方案描述 • 分布式解码: • 问题三:分割后缺少头数据
解码方案描述 • 输入/输出:
解码方案描述 • 输入/输出: • FrameNumWritable:标识帧位于视频帧序列的播放位置,以及帧对于的视频文件路径; • ImageWritable: 标识帧的图像数据; • Text:图像数据Hash过后的文本数据; • VideoMapper: 负责将解码过后的图像Hash成文本数据; • VideoReducer: 负责将图像文本数据写入文件;
解码方案描述 • 解码方案整体架构
目录 项目简介 研究现状 解码方案描述 实验结果分析 总结
实验结果分析 • 实验集群概述: • Hadoop集群由15台PC机组成,每台PC机CPU为Intel(R) Pentium(R) 4 CPU 2.80GHz,内存为1.5G,硬盘为80G。其中1台作为集群Master,14台作为集群Slaves。 • 运行环境: • 操作系统:Ubuntu 12.04.1 • Hadoop版本:1.0.3 • JDK版本:1.7.0_07 • OpenCV版本:2.4.2 • ffmpeg版本:1.0
实验结果分析 • 分布式/单机解码效率对比:
实验结果分析 • 分布式/单机解码效率对比:
实验结果分析 • 解码准确率测试: 把单机解码的视频作为样本视频记录E,分布式解码的视频为实际视频记录A。 • 帧数对比:比较A与E的视频帧数是否相同; • 严格对比:将每一帧图像Hash成只包含头信息(图像长、宽、大小、通道数、深度)、图像数据的hash码。对比两条记录的这些信息来确定两帧图像是否相等。 • 计算包含百分比:如果帧数相同且严格对比结果匹配,A与E完全相同;如果帧数相同但是严格对比结果不匹配,计算实际记录A与样本记录E中相互包含帧的百分比。
实验结果分析 • 解码准确率测试:
实验结果分析 • 分割大小对解码效率的影响:
实验结果分析 • 集群配置对解码效率的影响: • BlockSize
实验结果分析 • 集群配置对解码效率的影响: • 节点数量
目录 项目简介 研究现状 解码方案描述 实验结果分析 总结
总结 • 方案概述: • 基于Hadoop的视频大数据分布式解码方法,是一种分布式解码方法; • 原始视频可以不用提前将分割即可直接上传到HDFS,由Hadoop进行物理分割; • 逻辑分割Split的边界根据帧的位置进行界定,从而解决了按字节分割导致的帧分裂,以及同一个GOP内缺少关键帧的问题。 • 使用Fuse-dfs,FFmpeg等第三方库解决不同Split缺少视频头数据的问题。
总结 • 优点: • 视频不需要进行预处理,节省了计算时间; • 利用分布式计算,提高了解码效率; • 解码准确率高; • 缺点: • Split在进行逻辑划分数据的时候,有少量的数据需要跨工作机传输,增加了集群的网络负责,降低了解码效率。
Thank You ! iiec.cqu.edu.cn