问题标签 [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 投票
2 回答
1356 浏览

java - MediaMetaDataRetriever.setDataSource 返回 null

我正在尝试开发一个应用程序(Radio Stream)应用程序,我想获取该MediaMetadataRetriever API在收音机上播放的歌曲的详细信息,但是当我设置我的 URL 时出现此错误:

java.lang.IllegalArgumentException at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:71) at maa.myapp.MainActivity$PlayerTask.onPostExecute(MainActivity.java:447) at maa.myapp.MainActivity$PlayerTask.onPostExecute(MainActivity.爪哇:419)

这是我的代码:

0 投票
0 回答
401 浏览

android - MediaMetadataRetriever illegal argument

I'm trying to get a frame from a video that the user choose from his gallery. I'm using MediaMetadataRetreiver and from some reason on the "setDataSource" im getting illegal argument.

I'm passing there a string of the location video. I dont know what im doing wrong but it always crash on that line.

Code Example

On that line mediaMetadataRetriever.setDataSource(videoPath); it crash.

What am i doing wrong?

Edit - Log Error

0 投票
0 回答
97 浏览

android - 有没有办法从 CipherInputStream 获取视频帧?

在我的 android 应用程序中,我有一个由 加密的视频文件Cipher,现在我想检索一个视频帧作为缩略图。

MediaMetadataRetriever可以正常完成这项工作,方法void setDataSource (MediaDataSource dataSource)可能是我问题的关键,但它是在 API 级别 23 中添加的,我也需要在较低的 API 级别上完成这项工作。

我找到了一个名为 的库FFmpegMediaMetadataRetriever,但它无法通过自定义输入流设置数据源。

那么有人有一个好主意吗?

0 投票
1 回答
821 浏览

android - MediaMetadataRetriever FileNotFoundException

我正在构建一个应用程序,您首先可以在其中从手机中选择一个视频,然后该视频在另一个活动中显示两次。也就是说,相同的视频显示在屏幕的左半边和右半边。到目前为止我所做的:在第一个活动中,用户有一个按钮来选择视频:

然后,当它被选中时,将启动第二个活动,将 uri 传递给所选视频:

由于我希望播放视频的方式出现问题。屏幕处于横向时,我希望屏幕左半部分的视频填充屏幕的高度,并在其一半保持纵横比的情况下进行中心裁剪。这是我尝试过的:

首先,我在 OnCreate 中恢复 uri 并获取其容器的尺寸,该容器占据了屏幕的所有左半部分:

而且,如您所见,调用 setDimension 来设置 videoView 的尺寸:

当我调用 getVideoProportion() 必须获取视频的“aspectRatio”(高度/宽度)时,问题就来了:

因为这行retriever.setDataSource(uri.getPath()); 抛出 FileNotFoundException,这很奇怪,因为如果我打电话

视频已播放,所以问题不在于文件不存在。uri.getPath() 具有以下形式:/-1/2/content://media/external/video/media/6685/ORIGINAL/NONE/1567971923

0 投票
1 回答
588 浏览

android - 检查视频文件是否有以下元数据的最快方法?

检查视频文件元数据的方法有多种,使用FFmpegMediaMetadataRetriever(慢但可靠)和使用 Native MediaMetadataRetriever(慢且不可靠)。

在 SO 中回答了许多问题,以使用 FFMPEG 或 Native Media api 获取 MetaData,例如Q1Q2Q3 ,但它们并没有解决我的问题。

我的问题:

从 android 目录的文件(视频)中获取以下元数据:

  • 视频是否有声音/音频?
  • 创建日期和时间
  • 视频文件的缩略图

如果您有任何建议或代码示例,请告诉我会有很大帮助。

0 投票
1 回答
2239 浏览

android - RuntimeException:setDataSource 失败:状态 = 0x80000000 使用 MediaMetaDataRetreiver

我正在尝试在 android 上制作一个 gif 应用程序。gif 被制作并保存在 ExternalStoragePublicDirectory 中。现在我正在尝试通过将文件传递给适配器来获取这些文件并使用 MediaMetadataReteiver 在 recyclerview 中显示它。下面是 onBindViewHolder() 中的代码。

它给了我 RuntimeException: setDataSource failed: status = 0x80000000。我尝试使用包含视频文件的不同目录。它起作用了,我得到了要显示的框架。但是当我将它与 gif 一起使用时,它会给我运行时异常。我应该怎么做才能显示 gif。谢谢!

0 投票
2 回答
1006 浏览

java - 如何使用 MediaMetadataRetriever() 从 .mp3 文件中检索专辑封面

我正在尝试从 MP3 文件中检索专辑封面,但以下代码不起作用。每当应用程序启动时,它都会显示灰色框(在 try/catch 块中检查代码)。

我也尝试使用光标来获取专辑封面,但它不起作用。

0 投票
1 回答
866 浏览

java - 如何将 MediaMetadataRetriever SetDataSource 用于外部存储中的文件

我正在尝试从 MP3 文件中提取专辑封面但我无法提供歌曲的正确位置,我可以将其提供给 SetDataSource 方法。我尝试了一切,但仍然给我错误IllegalArgumentException

这一切都发生在这条线metaRetriver.setDataSource(MainActivity.this, Uri.parse("/sdcard/song.mp3"));被执行时

我的代码。

任何人都可以解决这个问题。

0 投票
1 回答
68 浏览

java - 如何使用 SetDataSource 从名称中有空格的 MP3 文件中获取专辑封面

每当我运行代码时,它对于名称中没有空格的歌曲都可以正常工作

检查这行代码:metaRetriver.setDataSource("/storage/emulated/0/song.mp3");这是一个没有空格的 MP3 文件(song.mp3)

但是,每当我更改名称中有空格的歌曲时,它都会抛出IllegalArgumentException这一行metaRetriver.setDataSource("/storage/emulated/0/Bom Diggy Diggy.mp3");

Ofcource 我不能重命名每个文件以删除其中的空格。

这是我的代码,

谁能帮我解决这个问题

0 投票
2 回答
1184 浏览

android - 从视频中获取多个缩略图

我正在使用MediaMetadataRetriever在视频中的特定时间检索缩略图。这就是我实现这一目标的方式:

这会按预期返回位图/缩略图,问题是如果我想在视频中的不同时间获取多个缩略图,如下所示:

然后它仍然只返回相同的缩略图,我不确定是因为只有一个缩略图可用于视频还是什么,但我尝试了不同的视频文件,结果相同。

我尝试更改MediaMetadataRetriever.OPTION_CLOSEST_SYNC所有可用选项,但结果仍然相同。

我不确定这是否FFMPEG是更好的选择?