提取Android中的所有视频帧

Aka*_*ore 5 video camera android photo frame

我录制的视频时间有限.现在我想获取所有视频帧.我使用下面的代码,并使用它,我能够得到帧,但我没有得到所有的视频帧.重复3到4帧然后我有一个不同的帧.但是众所周知,我们可以在一秒钟内获得25-30帧来显示流畅的视频.如何获得所有帧.

 for (int i = 0; i < 30; i++) {

                    Bitmap bArray = mediaMetadataRetriever.getFrameAtTime(
                            1000000 * i,
                            MediaMetadataRetriever.OPTION_CLOSEST);

                    savebitmap(bArray, 33333 * i);

                }
Run Code Online (Sandbox Code Playgroud)

我不想使用NDK.我得到这个链接不知道应该是什么值"argb8888".我在这里得到错误.任何人都可以解释如何做到这一点. 从Android中的视频图像中获取帧

小智 9

我以前遇到过同样的问题,而Android MediaMetadataRetriever似乎没有适合这项任务,因为它没有很好的精确度.我用了一个"FFmpegMediaMetadataRetriever"在android studio中调用的库:

  1. 在模块应用程序下的build.graddle中添加以下行:

    compile 'com.github.wseemann:FFmpegMediaMetadataRetriever:1.0.14'

  2. 重建您的项目.

  3. 使用FFmpegMediaMetadataRetriever该类来获取更高精度的帧:

    FFmpegMediaMetadataRetriever med = new FFmpegMediaMetadataRetriever();

    med.setDataSource("你的数据源");

在你的循环中你可以使用以下方法抓取框架:

 Bitmap bmp = med.getFrameAtTime(i*1000000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST);
Run Code Online (Sandbox Code Playgroud)


小智 2

你需要做:

  1. 解码视频。
  2. 呈现解码图像的速度至少为 24 个图像/秒。我想你可以跳过这一步。
  3. 保存解码后的图像。

看来解码视频将是最具挑战性的步骤。人们和公司花了数年时间开发各种视频格式的编解码器(编码器/解码器)。

使用此库JMF for FFMPEG