提取Android中的所有视频帧

问题描述 投票:0回答:4

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

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

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

                    savebitmap(bArray, 33333 * i);

                }

我不想使用NDK。我得到这个链接不知道“argb8888”的值应该是什么。我在这里遇到错误。谁能解释一下如何做。 在 Android 中从视频图像获取帧

android video camera frame photo
4个回答
13
投票

我之前遇到过同样的问题,Android 的

MediaMetadataRetriever
似乎不适合这项任务,因为它没有很好的精度。 我在android studio中使用了一个名为
"FFmpegMediaMetadataRetriever"
的库:

  1. 将此行添加到模块应用程序下的 build.graddle 中:

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

  2. 重建您的项目。

  3. 使用

    FFmpegMediaMetadataRetriever
    类来抓取更高级别的帧 精度:

    FFmpegMediaMetadataRetriever med = new FFmpegMediaMetadataRetriever();
    
    med.setDataSource("your data source");
    
  4. 在循环中您可以使用以下方法抓取帧:

     Bitmap bmp = med.getFrameAtTime(i*1000000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST);
    

4
投票

要从视频中获取图像帧,我们可以使用 ffmpeg。为了在 Android 中集成 FFmpeg,我们可以使用预编译库,如 ffmpeg-android

要从视频中提取图像帧,我们可以使用以下命令

String[] complexCommand = {"-y", "-i", inputFileAbsolutePath, "-an", "-r", "1/2", "-ss", "" + startMs / 1000, "-t", "" + (endMs - startMs) / 1000, 输出文件绝对路径};

这里,

-y

覆盖输出文件

-我

ffmpeg 从 -i 选项指定的任意数量的输入“文件”中读取

-an

禁用录音。

-r

设置帧速率

-SS

寻求定位

-t

限制从输入文件读取数据的持续时间

在这里,您必须指定要从中提取图像的视频文件的绝对路径,而不是 inputFileAbsolutePath。

要获取完整的代码,请查看我的存储库中的 this。在

extractImagesVideo()
方法中,我正在运行从视频中提取图像的命令。

有关集成 ffmpeg 库和使用 ffmpeg 命令编辑视频的完整教程,请查看我在博客上写的this 帖子。


2
投票

你需要做:

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

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

使用此库JMF for FFMPEG


0
投票

[2023 年更新]

在这种情况下,您可能会发现此存储库很有用:https://github.com/duckyngo/Fast-Video-Frame-Extraction。这是一种从视频中提取所有帧的高性能解决方案。

另一方面,如果您只想提取有限数量的帧。您可以尝试 MediaMetadataRetriever 类中的“getFrameAtIndex()”函数。

© www.soinside.com 2019 - 2024. All rights reserved.