如何从URL获取歌曲的专辑封面



想要从URL获取歌曲的专辑封面,这是我到目前为止的尝试:

SongPath = "www.asd.com/music.mp3";
android.media.MediaMetadataRetriever mmr = new MediaMetadataRetriever();
try{
mmr.setDataSource(SongPath);
}catch(Exception e){}
byte [] data = mmr.getEmbeddedPicture();
if(data != null)
{
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
imageView.setImageBitmap(bitmap);
}
else
{
imageView.setImageResource(R.drawable.jak);
}

但是当运行此代码时,得到这个:call to get embedded picture failed所以我对此进行了研究,有些人通过更改此部分
来解决此问题mmr.setDataSource(SongPath);

对此

mmr.setDataSource(SongPath,new HashMap<String, String>());我这样做,但是当运行应用程序图像视图时,什么都不显示并得到这个:SkImageDecoder::Factory returned null

注意:我可以使用FFmpegMediaMetadataRetriever库(就像MediaMetadataRetriever一样)并工作的唯一方法,但问题是库似乎很慢..它的平均时间需要 4,5 秒来获取图片,当添加此库时,apk 文件从 1.8MB 变为 24MB! 这太庞大了!

所以世界上任何人都知道如何用好的方式做到这一点 - 如果有人可以请帮助

你可以用类似的方式使用Glide,就像在File使用它一样:bumptech/glide#699,如果你能弄清楚如何远程做到这一点。问题是您仍然需要下载整个.mp3文件,我猜这需要 4-5 秒。我不确定.mp3格式,但我认为专辑封面可能在文件的末尾。出于这个原因,不建议使用这种方法(类似于从 http 加载视频拇指是一个坏主意)。无论如何,如果你想走这条路,那么先在加载上拍一个.diskCacheStrategy(SOURCE)来保存文件,然后编写一个自定义解码器来使用

最好的方法是,如果您托管mp3,则从单独的文件中提供专辑封面;或者使用公共服务来检索它。查看任何专辑封面下载程序以获取可能的服务。

有一件事是肯定的:没有协议,什么都行不通,根据需要为您的www.添加http://https://前缀。

相关内容

  • 没有找到相关文章

最新更新