前言

记录一下,一般获取视频音频等媒体文件的元数据信息是使用MediaMetadataRetriever这个类。

正文

直接上代码。

MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
//设置源
mediaMetadataRetriever.setDataSource(MusicActivity.this, uri);
//或
mediaMetadataRetriever.setDataSource(path);

解析数据,这里单独介绍音频和视频。图片也类似,就省略。

音频

//艺术家
String artist = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
//歌名
String title = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
//专辑名
String album = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
//专辑图
byte[] cover = mediaMetadataRetriever.getEmbeddedPicture();
Bitmap bitmap = null == cover ? null : BitmapFactory.decodeByteArray(cover, 0, cover.length);

缺点,不可以解析歌曲内置歌词

视频

//视频名,无法获取到null
String title = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
//视频宽
int width = Integer.parseInt(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
//视频高
int height = Integer.parseInt(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
//视频 mimetype
String mimetype = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE);
//缩略图,部分视频无法获取到,下面2中方式都可以,第二个可以指定时间
Bitmap bitmap1 =  mediaMetadataRetriever.getFrameAtTime();
Bitmap bitmap2 =  mediaMetadataRetriever.getFrameAtTime(0, MediaMetadataRetriever.OPTION_NEXT_SYNC);

参考文章

 历史上的今天

  1. 2023: MediaPlayer JNI层介绍(0条评论)
  2. 2021: SharedPreferences最后一次写入时断电偶尔存在不保存问题(0条评论)
  3. 2021: 付志勇:故乡(0条评论)
  4. 2019: 朱光潜:像个大人一样生存,像个孩子一样生活(0条评论)
  5. 2018: [摘]Android SD卡挂载状态(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

林清玄:路上的情书

我捡过一封诀别的情书。情书上有这样看来普通的句子:“当初是我选择了你,心里明知与你不会长久,还是执着的选择了你。”“这些日子以来,谢谢你陪我走过这一段路。”“你是一个很好的人,你一定会认识比我好上千倍的女孩。”“由衷地希望在没有我的日子,你依然过得好。”会捡到这封情书是很偶然的。有一天我在...

周国平:事故

火车轮子下一团污秽 是男人还是女人叫什么名字这有什么重要 为什么开来的是警察而不是一大块肥皂 假如一个人消失了不要去寻找人应该像声音一样死去只留下寂静

设计模式:装饰模式或包装模式

什么是设计模式装饰模式又名包装模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。有透明和半透明两种,大部分都是半透明的,半透明的装饰模式是介于装饰模式和适配器模式之间的。装饰模式的核心:功能扩展。透明和半透明的区别:透明的装饰模式,要求具体构件角色、装饰角色的接...

低版本API废弃的警告Dialog

前言Android高版本上安装一些旧的APP,会存在会弹出对话框,内容:“此应用专为旧版Android打造,因此可能无法正常运行。请尝试检查更新或与开发者联系”。这样不是很友好,客户要求去掉。正文原因本质是Android高版本对启动应用的支持SDK的检测。下面是网上分析的,摘抄于此。...

adb shell settings 参数命令集合

前言Android中配置有很多参数,一般可以通过Log日志打印,但是想偷懒因此这里介绍部分参数可以通过命令直接查看配置的值。下面就介绍一些使用adb shell settings 等命令获取Android中配置的值。PS:注意红色字体,不同的settings参数获取的方式不同小结用了ge...

bat脚本命令简介

批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就ok了:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。批处理有一个很鲜明的特点:使用方便、灵活,功能强大,自动化程...