Android:获取视频的所有帧(任何视频文件)

Android:获取视频的所有帧(任何视频文件),android,video,bitmap,frames,Android,Video,Bitmap,Frames,好朋友们 我正在开发一个简单的应用程序,用于编辑视频 我需要的是获取视频的所有帧(据我所知,帧可以被视为位图) 得到所有帧后,我需要编辑帧(位图) 然后将其显示在imageview中(尽管我要做的是,将所有图像像视频一样循环) 我试着使用 mediaMetadataRetriever.getFrameAtTime(0); 但问题是,在给定时间内捕获的帧是不正确的 示例代码: bm[1] = mediaMetadataRetriever.getFrameAtTime(0); bm[2] = me

好朋友们

我正在开发一个简单的应用程序,用于编辑视频

我需要的是获取视频的所有帧(据我所知,帧可以被视为位图)

得到所有帧后,我需要编辑帧(位图) 然后将其显示在imageview中(尽管我要做的是,将所有图像像视频一样循环)

我试着使用

mediaMetadataRetriever.getFrameAtTime(0);
但问题是,在给定时间内捕获的帧是不正确的

示例代码:

bm[1] = mediaMetadataRetriever.getFrameAtTime(0);
bm[2] = mediaMetadataRetriever.getFrameAtTime(50000);
bm[3] = mediaMetadataRetriever.getFrameAtTime(100000);
bm[4] = mediaMetadataRetriever.getFrameAtTime(150000);
bm[5] = mediaMetadataRetriever.getFrameAtTime(200000);
然后在imageview中循环位图

我听说过ffmpeg,并试图研究它

问题是,我使用的是windows,而不是ubuntu或linux

到现在为止,我真的很难过

请帮助我,或者直接给我一条正确的路

非常感谢:)

请注意,该方法使用的参数表示时间偏移值,单位为微秒(1/1000000秒),而不是毫秒(1/1000秒)

这至少可以解决您在使用捕获帧时遇到的问题

无论如何,您可能会感兴趣地检查一些替代方案,比如哪个代表OpenCV、FFmpeg和其他一些流行的图像和视频处理库的包装器。JavaCV支持Windows、Linux、Mac OS和Android

JavaCV确实缺少更好的文档,但是在他们的主页上有一些例子,这可能是一个很好的起点。 更高级的例子可以在用Scala编写的网站上找到。只要对该语言有了一些基本的了解,即使对于纯Java开发人员来说,它也可能是有价值的资源

Try,它使用FFmpeg作为后端:

FFmpegMediaMetadataRetriever fmmr = new FFmpegMediaMetadataRetriever();
bm[1] = fmmr.getFrameAtTime(0);
bm[2] = fmmr.getFrameAtTime(50000);
bm[3] = fmmr.getFrameAtTime(100000);
bm[4] = fmmr.getFrameAtTime(150000);
bm[5] = fmmr.getFrameAtTime(200000);
fmmr.release();