发现 
其他开发者工具
FMMR:Android 媒体元数据提取库
Android 媒体元数据与帧提取库,用 FFmpeg 作后端,可读取本地或网络音视频文件的元数据和画面。
- 浏览
- 4
- 访问
- 0
- 下载
- 0
- 版本
- v1.0.23
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。
详细介绍
项目简介
FFmpegMediaMetadataRetriever(简称 FMMR)是 Android 系统 MediaMetadataRetriever 类的重新实现,以 FFmpeg 作为后端,为开发者提供统一的接口,从输入媒体文件中提取帧和元数据。
与系统自带实现相比,它的优势在于支持直接传入 URL 读取网络媒体,并覆盖更多音视频格式。
主要功能
- 基于 FFmpeg 7.1.1 构建
- 支持 ARMv7、x86、x86_64、ARM_64 架构(自 1.0.14 起不再支持 ARM 与 MIPS)
- 支持 API 21+ 及 16 KB page size
- 支持 URL 读取(系统
MediaMetadataRetriever不支持,参见 Android issue 35794) - 支持的协议:file、http、https、mms、mmsh、rtmp
- 支持的音视频格式:aac、acc+、avi、flac、mp2、mp3、mp4、ogg、3gp 等
- 额外支持 ICY Metadata(SHOUTcast 元数据)
安装与使用
在 Android Studio 项目的 build.gradle 中添加 Maven 依赖:
dependencies {
implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-core:1.0.23'
implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-native:1.0.23'
}
如果只需要特定 ABI,可以按需引入:
dependencies {
implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-core:1.0.23'
implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-native-armeabi-v7a:1.0.23'
implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-native-x86:1.0.23'
implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-native-x86_64:1.0.23'
implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-native-arm64-v8a:1.0.23'
}
也可以将对应架构的 AAR 文件放入项目的 libs 目录,预编译 AAR 包见 Prebuilt AARs。
示例代码:
FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever();
mmr.setDataSource(mUri);
mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ALBUM);
mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ARTIST);
Bitmap b = mmr.getFrameAtTime(2000000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST); // frame at 2 seconds
byte [] artwork = mmr.getEmbeddedPicture();
mmr.release();
示例 Demo 应用可在 Releases 页面下载。该示例编译时启用了全部可用格式,因此库和 APK 体积较大;如需更小的体积,可以只启用部分编解码器重新编译 FFmpeg。
注意事项
- 编译环境要求:Android Studio Narwhal 2025.1.2 或更高版本,Android NDK r27 或更高版本。
- 构建脚本假定运行在 Unix 或 Linux 系统上,暂不支持在其他操作系统上构建。
- 从源码编译时,在项目根目录执行
android update project --path .(假定 Android SDK 的 tools 目录已加入 PATH),然后在生成的local.properties中补充sdk.dir与ndk.dir路径,例如:
sdk.dir=/Users/wseemann/Library/Android/sdk
ndk.dir=/Users/wseemann/Library/Android/sdk/ndk/27.1.12297006
- 如需在 Android Studio 中编译库,选中项目视图中的
core模块,执行 Build->Make Module 'core',会同时构建 FFmpeg 原生二进制。 - 本项目使用 FFmpeg 的 LGPLv2.1 许可代码;项目自身以 Apache License 2.0 发布。
本作品整理自 GitHub 开源项目 wseemann/FFmpegMediaMetadataRetriever,原作者 @wseemann。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v1.0.23当前版本
新增音频流元数据提取,包括采样率、位深、声道数与比特率;更新对 16 KB page size 的支持,并对 README 做了小幅完善。
评论