前言
记录一下,一般获取视频、音频等媒体文件的元数据信息是使用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);
参考文章
© 版权声明