问题标签 [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.
android - 来自 MediaMetadataRetriever 的 getScaledFrameAtTime 太慢,无法在 Android 10 中返回位图
使用元数据检索器从视频中获取位图在 Android 10 中需要太多时间,但在 Android 10 以下运行良好。仅在 Android 10 中面临此问题。
getFrameAtTime
并且getScaledFrameAtTime
两者在 Android 10 中都很慢。
在这里,我添加了用于获取位图形式视频的代码
构建 gradle sdk 版本
android - MediaMetadataRetriever 在存在旋转元数据的情况下转置视频的宽度和高度
我正在使用 MediaMetadataRetriever 将视频帧捕获为位图。
问题是当 mp4 视频具有 METADATA_KEY_VIDEO_ROTATION == 90 时,帧的宽度和高度已被转置,因此我使用 mediaCodec 从位图制作的视频具有错误的宽度和高度。
如您所见,我设法通过交换宽度和高度来使其工作,mediaCodec
但输出视频分辨率发生了变化,这是不可接受的。
这是我的问题:
- 有没有办法让 MediaMetadataRetriever 不考虑 METADATA_KEY_VIDEO_ROTATION 值?
- 有没有办法从 mp4 文件中删除此元数据?
- 是否可以
mediaCodec
检测旋转并生成正确的视频输出?
我不能使用FFmpeg
库,我已经尝试使用mp4parser
andjcodec
来更改旋转元数据(或删除它),但它们都没有奏效。
MP4解析器:
当我使用 mp4parser 更改元数据时,没有任何反应,并且 MediaMetadataRetriever 的旋转值仍然相同。
android - FFMPEGmediametadataretriever 没有从视频中获取所有帧
我正在开发一个应用程序,它获取本地视频文件并提取其帧并写入磁盘。我ffmpegmediametadataretriever
用来从视频中提取帧。我已经完成了以下代码
它没有从视频中提取所有帧。对于某些视频,重复提取的帧。为不同的视频提取随机数量的帧。对于某些视频,提取了 70-80% 的帧,而对于某些仅提取了 15-20 帧。
我已经浏览了在 StackOverflow 和其他网站上可以找到的所有答案以找到解决方案,但问题就在那里。
android - 获取任何视频的纵横比
我想在android中获得nay视频的纵横比(1:1、9:16等)。目前我得到视频的高度和宽度,但我想要纵横比。使用 Ffmpeg 或 MediaMetadataRetriever 是否可以执行此任务?如果是,那么请给我一些示例代码。如果不是,那么请向我推荐其他解决方案。
android - 使用 MediaMetadataRetriever 从存储设备中提取视频帧 - setDataSource() 处的 IllegalArgumentException
我想从我的应用中的视频中提取一帧。视频是从我的存储设备中选择的。在尝试调用 setDataSource 后,我收到了 IllegalArgumentException。
这是我的代码的一部分:
imageUri 的值为:
我的视频的路径格式是否错误?我也尝试过使用 FFmpegMediaMetadataRetriever。
android - Android - 如何从视频文件中获取帧?
我想从存储在设备上的视频文件中提取帧。我找到的每个解决方案都是使用 FFmpegMediaMetadataRetriever 或 MediaMetadaraRetriever,但正如我在这里写的那样,它对我不起作用。有没有其他方法可以从视频中提取帧?
android - MediaMetadataRetriver.setDataSource 在尝试加载资源时崩溃(状态 = 0x80000000)
我正在尝试使用 MediaMetadataRetriver 从资源中读取元数据,它在调试变体中工作,但在发布变体中崩溃。
应该怎么办??
java - 尝试使用 java/android 从 url 流中获取元数据时出错
尝试从 URL 流中获取元数据时,我没有得到任何值。
我收到错误 java.lang.NullPointerException:println 需要一条消息。这是因为字符串是空的。如果我尝试
我的 println 给了我
有任何想法吗?我尝试过各种不同的流,但除了@之后的字母/数字不同外,所有的结果都相同。
android-studio - 如何从 Android Studio java 应用程序将元数据写入 mp3 文件?
下面的第一个方法 (getMetadataTitle) 只是从 mp3 文件中检索标题元数据。它工作正常。如何在 mp3 文件中写入或更新标题元数据,请参见下面的第二种方法 (putMetadataTitle)?
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)”:
应该如何从用户选择的目录中获取音频文件元数据?