3

我正在android上开发一个音乐播放器,但我遇到了一个我不知道为什么的错误。我认为我做对了,但它不起作用。

我确实搜索了很多 MediaMetadataRetriever,但我仍然没有看到我的问题是什么。

我使用 MediaMetadataRetriever 来获取有关我的歌曲的信息。一切正常,但 getEmbeddedPicture()。每当调用 getEmbeddedPicture 时,我都会收到此消息:11-15 13:36:11.101: E/MediaMetadataRetrieverJNI(460): getEmbeddedPicture: 调用 getEmbeddedPicture 失败。

我知道这个方法只在调用 setDataSource 之后调用,我做到了,但我仍然得到那个错误(当然,我的歌曲中有图像,我使用的是 android 2.3.3)。

这是代码:

mediaInfo.setDataSource(filePath);//filePath is correct.
byte[] img = mediaInfo.getEmbeddedPicture();//cause error
if (img != null)
    imgAlbum.setImageBitmap(BitmapFactory.decodeByteArray(img, 0,img.length));

谢谢。

4

2 回答 2

5

以下应该有效:

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(filePath);
byte[] art = retriever.getEmbeddedPicture();

if( art != null ){
    imgAlbum.setImageBitmap( BitmapFactory.decodeByteArray(art, 0, art.length));
}
else{
    imgAlbum.setImageResource(R.drawable.no_image);
}
于 2014-05-22T06:03:27.763 回答
1

尝试FFmpegMediaMetadataRetriever

FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever();
retriever.setDataSource(filePath);
byte[] image = retriever.getEmbeddedPicture();
if (image != null) {
    imgAlbum.setImageBitmap(BitmapFactory.decodeByteArray(image, 0,image.length));
}
retriever.release();
于 2014-05-22T19:24:44.603 回答