当前位置: 首页 > 知识库问答 >
问题:

在Android中提取所有视频帧

史逸春
2023-03-14

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

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

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

                    savebitmap(bArray, 33333 * i);

                }

我不想使用NDK。我得到了这个链接,不知道“argb888”的值应该是多少。我这里有个错误。有人能解释一下怎么做吗。在Android中从视频图像中获取帧

共有3个答案

姚兴安
2023-03-14

你需要做到:

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

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

将此库JMF用于FFMPEG。

谢烨烨
2023-03-14

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

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

字符串[]complexCommand={“-y”、“-i”、inputFileAbsolutePath、“-an”、“-r”、“-ss”、“-startMs/1000、“-t”、”(endMs-startMs)/1000、outputFileAbsolutePath};

在这里

-y

覆盖输出文件

-我

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

-an

禁用音频录制。

-r

设置帧速率

-ss

寻求定位

-t

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

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

要获得完整的代码,请查看我的存储库。在提取图像视频()方法中,我正在运行从视频中提取图像的命令。

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

谯乐池
2023-03-14

我以前也遇到过同样的问题,Android的MediaMetadataRetriever似乎不适合这项任务,因为它没有很好的精度。我在android Studio中使用了一个名为FFmpegMediaMetadataRetriever的库:

>

  • 在模块应用下的build.graddle中添加此行:

    编译com.github.wseemann: FFmpegMediaMetadataRetriever: 1.0.14

    重建您的项目。

    使用FFmpegMediaMetadataRetriever类以更高的精度抓取帧:

    FFmpegMediaMetadataRetriever med = new FFmpegMediaMetadataRetriever();
    
    med.setDataSource("your data source");
    

    循环中,您可以使用以下方法抓取帧:

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

  •  类似资料:
    • 我正在尝试使用MediaCodec从视频中检索所有帧,用于图像处理,我正在尝试渲染视频并从outBuffers捕获帧,但我无法从接收到的字节启动位图实例。 我试着将它呈现为一个表面或无(null),因为我注意到当你呈现为null时,outBuffers将获得呈现帧的字节。 这是代码: 任何帮助都是非常有用的

    • 我想在背景图像上覆盖透明视频。我有一个视频,其中上半部分是RGB对象,下半部分是阿尔法掩码。 现在,为了制作这个,我执行以下步骤:

    • 是否有任何本机/现有/手动方式可以从(内容)URI中删除Android/Java/Kotlin中视频文件的所有元数据? 对于照片,我们仍然可以使用ExifInterface并删除我们想要的元数据,方法是使用并传递null来删除给定/所需的值,但是这对于视频不起作用,因为mp4视频有自己的元数据格式。如果没有本地Android类可以做到这一点,是否有任何算法或引用可以参考以实现这一点?

    • 本文向大家介绍android提取视频多张图片和视频信息实例,包括了android提取视频多张图片和视频信息实例的使用技巧和注意事项,需要的朋友参考一下 话说2016年的直播比较火,2017年短视频又火了。但对于开发者来说隐藏在这背后的技术才是我们所关心的,毕竟我们是靠技术吃饭的。 现在在安卓中多媒体服务比较强大,而与视频有关的视频基本处理技术有必要学习一下。我前段时间也在做有关视频的一些需求,当然

    • 我有一个包含 500 个视频的频道,想要一个包含我频道内所有视频 URL 的列表。 我尝试过: https://gdata.youtube.com/feeds/api/users/default/uploads?key=DEVELOPER_KEY 开发者密钥来自:https://code.google.com/apis/youtube/dashboard 我只是得到:需要用户身份验证。错误 401