利用Hadoop和opencv进行处理视频的原理
大概的原理就是,先使用一个自定义的InputFormat将视频文件从HDFS里面读到内存,这时是以二进制字节的形式存在,然后对视频文件根据其编码类型,比如x264或者xvid格式,对这些二进制的字节流进行截取,转换成一个个的桢。这时将“帧流”以key-value的方式输入到Map Task中进行处理。其实我们之前一直存在一个误区,就是opencv的API读取的是文件路径,这两个对不上啊。但是,opencv利用VideoCapture读取文件之后还是会把它转成一个个的帧,因此,我们的Map Task其实就只要处理现成的帧就好了。这样才符合MapReduce的模型!
另外,其实Spark和Hadoop处理视频的思路应该是一样的。
相关参考资料:
[*] JAVE:ffmpeg 项目的 Java 语言封装 http://www.sauronsoftware.it/projects/jave/index.php
[*] JavaCv–获取视频帧并保存 http://www.lvzejun.cn/?p=698
[*] Hadoop InputFormat浅析http://hi.baidu.com/_kouu/item/dc8d727b530f40346dc37cd1
[*] 自定义hadoop的InputFormathttp://blog.csdn.net/zhongyifly/article/details/25156145
[*] hadoop 自定义inputformat和outputformathttp://blackproof.iteye.com/blog/1806263
[*] 自定义hadoop map/reduce输入文件切割InputFormathttp://hi.baidu.com/lzpsky/item/0d9d84c05afb43ba0c0a7b27
[*] 在Hadoop的streaming中使用自定义的inputformat和outputformathttp://www.codesky.net/article/201204/172486.html
[*] javaCV http://blog.sina.com.cn/s/blog_72cc84c001019nzd.html
[*] Java中如何使用OpenCV http://blog.sina.com.cn/s/blog_7b4a5b550101ifi7.html
页:
[1]