前言

记录一下,一般获取视频音频等媒体文件的元数据信息是使用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);

参考文章

相关文章

暂无评论

none
暂无评论...