将视频分割成帧的最快方法

时间:2013-10-23 12:59:06

标签: java android opencv

我见过许多像我一样的类似问题,但我有一点不同,我需要在java中做这个而不是在c / c ++中,我需要它在Android设备上工作。

我找到了使用" MediaMetadataRetriever"的方法。

但是我需要花费太长时间来分隔帧(约1秒到帧),我需要读取600帧,所以只需要10分钟就可以在没有图像处理的情况下读取图像。

我想知道是否有另一种方法可以从视频中分割帧,或者操纵MediaMetadataRetriever并使其快速工作。

非常感谢!

1 个答案:

答案 0 :(得分:3)

听起来你想使用MediaCodec解码器。有一些例子here

特别是,如果查看DecodeEditEncodeTest代码,checkVideoFile()函数会将先前创建的流解码为外部纹理,然后使用OpenGL ES对其进行处理。 (要从.mp4文件执行此操作,您需要通过MediaExtractor访问它。)

MediaMetadataRetriever#getFrameAtTime()实际上是用于提取缩略图,并不特别适合提取大量的帧。

更新:现在sample code使用MediaExtractorMediaCodec和GLES(API 16 +)提取视频帧。