从Android中的MP3文件中提取专辑封面

7

大家好,我的媒体播放器需要显示歌曲专辑封面(我不确定它的发音是否正确)。我知道我需要从歌曲本身中提取图像,但如何做到呢?我很困惑。如果可以的话,请提供一些代码帮助我。谢谢。


Android上的封面艺术品副本 - Rajesh
4个回答

22

适用于API 10及以上版本

android.media.MediaMetadataRetriever mmr = new MediaMetadataRetriever();
        mmr.setDataSource(songsList.get(songIndex).get("songPath"));

        byte [] data = mmr.getEmbeddedPicture();
               //coverart is an Imageview object

        // convert the byte array to a bitmap
        if(data != null)
        {
            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
            coverart.setImageBitmap(bitmap); //associated cover art in bitmap
        }
        else
        {
            coverart.setImageResource(R.drawable.fallback_cover); //any default cover resourse folder
        }

            coverart.setAdjustViewBounds(true);
            coverart.setLayoutParams(new LinearLayout.LayoutParams(500, 500));

4

试试 FFmpegMediaMetadataRetriever

FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever();
retriever.setDataSource(uri);
byte [] data = retriever.getEmbeddedPicture();

// convert the byte array to a bitmap
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
// do something with the image ...
// mImageView.setImageBitmap(bitmap);

retriever.release();

2
你可以尝试使用 Picasso,通过使用album_id。它是开源的且具有较少的内存缓存。
依赖:
implementation 'com.squareup.picasso:picasso:2.71828'

代码:

String albumId = songObject.getAlbum_id();

final Uri albumUri = Uri.parse("content://media/external/audio/albumart");

Uri uri = ContentUris.withAppendedId(albumUri, Long.parseLong(albumId));

    Picasso.get().load(uri)
            .fit()
            .centerCrop()
            .error(R.drawable.img_album)
            .into(holder.imgAlbumSongObject);

虽然很晚了,但可能会帮助到某些人。


-2
 MediaMetadataRetriever mmr = new MediaMetadataRetriever();
 mmr.setDataSource(filePath);

String albumName = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM));

请注意,此功能仅适用于API级别10或更高级别。

2
你应该更好地注释代码,至少输入“试试这个:”,最好放置一个MediaMetaDataRetriever参考链接... - nio
这并没有回答如何提取专辑封面(图片)的问题。 - Vladyslav Matviienko
这是检索专辑名称(如果设置了),而不是专辑封面图像。 - w0mbat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接