2017-02-27 124 views
0

想摆脱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,5sec时间需要取图片,当添加这个库从1.8mb的apk文件成为24mb!这是如此之大!

所以世界上任何一个人都知道如何以良好的方式做到这一点?如果任何人可以请求帮助

+0

哪里是URL,后整个东西 –

+0

@LutaayaHuzaifahIdris当你没有足够的知识,这个不来这里和我的问题给反对票。我的问题和描述很明显,但似乎你很低,不能理解:) – Erf

+0

你是什么意思的网址?是本地路径(即从SD卡)还是从Web? – MdFazlaRabbiOpu

回答

0

如果您可以了解如何远程执行此操作,则可以使用Glide以类似的方式使用它以获取Filebumptech/glide#699。问题是你仍然需要下载整个.mp3文件,这需要4-5秒的时间。我对.mp3格式不太确定,但我认为专辑封面可能在文件末尾。出于这个原因,不建议这种方法(类似于how it's a bad idea to load video thumbs from http)。如果你想要这样做,然后拍一个.diskCacheStrategy(SOURCE)负载上先保存文件,然后写一个自定义解码器使用

最好的方法是让专辑封面从一个单独的文件服务,如果你主持mp3;或者使用公共服务来检索它。查看任何专辑封面下载程序以获取可能的服务。

有一件事是肯定的:没有协议,什么都不会起作用,根据需要在www.前加上http://https://