问题标签 [mediametadataretriever]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
580 浏览

android - 来自 MediaMetadataRetriever 的 getScaledFrameAtTime 太慢,无法在 Android 10 中返回位图

使用元数据检索器从视频中获取位图在 Android 10 中需要太多时间,但在 Android 10 以下运行良好。仅在 Android 10 中面临此问题。 getFrameAtTime并且getScaledFrameAtTime两者在 Android 10 中都很慢。

在这里,我添加了用于获取位图形式视频的代码

构建 gradle sdk 版本

0 投票
0 回答
300 浏览

android - MediaMetadataRetriever 在存在旋转元数据的情况下转置视频的宽度和高度

我正在使用 MediaMetadataRetriever 将视频帧捕获为位图。

问题是当 mp4 视频具有 METADATA_KEY_VIDEO_ROTATION == 90 时,帧的宽度和高度已被转置,因此我使用 mediaCodec 从位图制作的视频具有错误的宽度和高度。

如您所见,我设法通过交换宽度和高度来使其工作,mediaCodec但输出视频分辨率发生了变化,这是不可接受的。

这是我的问题:

  1. 有没有办法让 MediaMetadataRetriever 不考虑 METADATA_KEY_VIDEO_ROTATION 值?
  2. 有没有办法从 mp4 文件中删除此元数据?
  3. 是否可以mediaCodec检测旋转并生成正确的视频输出?

我不能使用FFmpeg库,我已经尝试使用mp4parserandjcodec来更改旋转元数据(或删除它),但它们都没有奏效。

MP4解析器:

当我使用 mp4parser 更改元数据时,没有任何反应,并且 MediaMetadataRetriever 的旋转值仍然相同。

0 投票
0 回答
564 浏览

android - FFMPEGmediametadataretriever 没有从视频中获取所有帧

我正在开发一个应用程序,它获取本地视频文件并提取其帧并写入磁盘。我ffmpegmediametadataretriever用来从视频中提取帧。我已经完成了以下代码

它没有从视频中提取所有帧。对于某些视频,重复提取的帧。为不同的视频提取随机数量的帧。对于某些视频,提取了 70-80% 的帧,而对于某些仅提取了 15-20 帧。

我已经浏览了在 StackOverflow 和其他网站上可以找到的所有答案以找到解决方案,但问题就在那里。

0 投票
2 回答
536 浏览

android - 获取任何视频的纵横比

我想在android中获得nay视频的纵横比(1:1、9:16等)。目前我得到视频的高度和宽度,但我想要纵横比。使用 Ffmpeg 或 MediaMetadataRetriever 是否可以执行此任务?如果是,那么请给我一些示例代码。如果不是,那么请向我推荐其他解决方案。

0 投票
1 回答
63 浏览

android - 使用 MediaMetadataRetriever 从存储设备中提取视频帧 - setDataSource() 处的 IllegalArgumentException

我想从我的应用中的视频中提取一帧。视频是从我的存储设备中选择的。在尝试调用 setDataSource 后,我收到了 IllegalArgumentException。

这是我的代码的一部分:

imageUri 的值为:

我的视频的路径格式是否错误?我也尝试过使用 FFmpegMediaMetadataRetriever。

0 投票
1 回答
47 浏览

android - Android - 如何从视频文件中获取帧?

我想从存储在设备上的视频文件中提取帧。我找到的每个解决方案都是使用 FFmpegMediaMetadataRetriever 或 MediaMetadaraRetriever,但正如我在这里写的那样,它对我不起作用。有没有其他方法可以从视频中提取帧?

0 投票
1 回答
89 浏览

android - MediaMetadataRetriver.setDataSource 在尝试加载资源时崩溃(状态 = 0x80000000)

我正在尝试使用 MediaMetadataRetriver 从资源中读取元数据,它在调试变体中工作,但在发布变体中崩溃。

应该怎么办??

0 投票
2 回答
245 浏览

java - 尝试使用 java/android 从 url 流中获取元数据时出错

尝试从 URL 流中获取元数据时,我没有得到任何值。

我收到错误 java.lang.NullPointerException:println 需要一条消息。这是因为字符串是空的。如果我尝试

我的 println 给了我

有任何想法吗?我尝试过各种不同的流,但除了@之后的字母/数字不同外,所有的结果都相同。

0 投票
1 回答
534 浏览

android-studio - 如何从 Android Studio java 应用程序将元数据写入 mp3 文件?

下面的第一个方法 (getMetadataTitle) 只是从 mp3 文件中检索标题元数据。它工作正常。如何在 mp3 文件中写入或更新标题元数据,请参见下面的第二种方法 (putMetadataTitle)?

0 投票
2 回答
263 浏览

android - 如何从 DocumentsContract.Document 中获取 MediaStore 元数据?

我的目标是能够使用用户选择的目录Intent.ACTION_OPEN_DOCUMENT_TREE,然后从该目录中获取所有音频文件及其元数据。我已经可以使用 获取用户选择的目录Intent.ACTION_OPEN_DOCUMENT_TREE,但我无法提取音频文件元数据。我得到 null 而不是元数据。我认为问题在于返回到onActivityResult'sIntent的 Uri 与 MediaStore Uri 不兼容。

我目前可以使用以下代码从 MediaStore 获取元数据:

在这里我查询MediaStore.Audio.Media.EXTERNAL_CONTENT_URI. 这让我相信我需要一种方法来根据返回的 Uri 从 MediaStore 中onActivityResult选择Intent

这是我第一次尝试使用用户选择的目录获取元数据。

第一次我设置了一个 onClickListener 来要求用户选择一个目录:

然后我得到结果并尝试解析数据:

这适用于查找文件,但不能获取元数据。每MediaStore.Audio.Media列都有一个空值。

对于我的第二次尝试,我尝试使用 a MediaMetadataRetriever,但我得到“java.lang.RuntimeException: setDataSource failed: status = 0x80000000”:

我认为这可能是一个安全问题,因为 MediaMetadataRetriever 没有具有读取权限的根 uri。这是因为从 MediaStore Uri 检索的相同文件与 MediaMetadataRetriever 兼容。

对于我的第三次尝试,我尝试根据onActivityResult's返回的文档 ID 从 MediaStore 中进行选择Intent,但我得到一个“android.database.sqlite.SQLiteException: no such column: document_id (code 1 SQLITE_ERROR)”:

应该如何从用户选择的目录中获取音频文件元数据?