【问题标题】:how can get album art of song from url如何从 url 获取歌曲的专辑封面
【发布时间】:2017-03-01 02:51:21
【问题描述】:

想从 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!这实在是太大了!

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

【问题讨论】:

  • 网址在哪里,把所有的东西都贴出来
  • @LutaayaHuzaifahIdris 如果您对此没有足够的了解,请不要来这里对我的问题投反对票。我的问题和描述很清楚,但您似乎太低了,无法理解:)
  • 网址是什么意思?它是本地路径(即来自 sdcard)还是来自 Web?
  • @MdFazlaRabbiOpu 网络。我会改变我的问题
  • @user7415865,你是低级的,应该是URI而不是URL,修改一下

标签: java android mediametadataretriever


【解决方案1】:

如果你能弄清楚如何远程操作,你可以用与 File 类似的方式使用 Glide:bumptech/glide#699。问题是您仍然需要下载整个 .mp3 文件,我猜这需要 4-5 秒。我不太确定 .mp3 格式,但我认为专辑封面可能位于文件末尾。出于这个原因,不建议使用这种方法(类似于how it's a bad idea to load video thumbs from http)。如果你无论如何都想走这条路,那么在负载上打一个.diskCacheStrategy(SOURCE)先保存文件,然后编写一个自定义解码器来使用

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

有一点是肯定的:没有协议,什么都行不通,必要时在您的www. 前加上http://https://

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多