如何从网址

时间:2017-02-27 09:45:29

标签: java android mediametadataretriever

想从网址获取专辑歌曲,这是我迄今为止的尝试:

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秒时间需要获取pic并且当添加此库时apk文件从1.8mb变为24mb!这真是太棒了!

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

1 个答案:

答案 0 :(得分:0)

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

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

有一件事是肯定的:没有协议,没有任何方法可行,请根据需要在www.前加http://https://