【问题标题】:Get embedded cover art from a mp3 file从 mp3 文件中获取嵌入式封面
【发布时间】:2013-08-21 11:18:04
【问题描述】:

我一直在此页面中搜索如何从 mp3 文件中获取秘密艺术。

我正在开发一个音乐应用程序,我想获取 mp3 文件(ID3v2 标签)中歌曲的封面艺术。但是,我搜索了很多,但我没有找到我该怎么做。

有人知道怎么做吗?

谢谢大家。

【问题讨论】:

    标签: android


    【解决方案1】:

    这是我如何获得封面艺术的实现。首先我选择一个音频文件:

    MediaMetadataRetriever myRetriever = new MediaMetadataRetriever();
    Uri selectedAudio;
    //...       
    
    //on button click or any other event
    Intent intent = new Intent();
    String chooser = "Select audio file";
    
    intent.setType("audio/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, chooser), GET_AUDIO_CODE);
    

    然后在 onActivityResult 我得到文件的 URI:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
    
        if (resultCode == Activity.RESULT_OK)
        {
                selectedAudio = data.getData();
                MediaMetadataRetriever myRetriever = new MediaMetadataRetriever();
                myRetriever.setDataSource(this, selectedAudio); // the URI of audio file
                setArtwork(myRetriever);
        }
        //...
    }
    

    然后我设置了封面:

    //....
    
    public boolean setArtwork(MediaMetadataRetriever myRetriever)
    {
        byte[] artwork;
    
        artwork = myRetriever.getEmbeddedPicture();
    
        if (artwork != null)
        {
            Bitmap bMap = BitmapFactory.decodeByteArray(artwork, 0, artwork.length);
            ivArtwork.setImageBitmap(bMap);
    
            return true;
        }
        else
        {
            ivArtwork.setImageBitmap(null);
    
            return false;
        }
    }
    

    【讨论】:

    • 完美运行,非常感谢!!!我找了很多天来做这件事,但我找不到解决方案。太不可思议了,非常感谢。
    • 还有一件事,你知道如果使用 MediaDataRetriever 我可以获取 mp3 文件的歌词,或者我需要一个外部库来做到这一点。
    • 很高兴它有帮助 :) 我从未尝试过获取歌词。访问 android 开发者网站并阅读有关 MediaDataRetriever 的信息。祝你好运!
    • 最后一个问题,这个错误你知道吗:dalvikvm(3186): adjustAdaptiveCoef max=4194304, min=1048576, ut=568
    • 这只是一条Dalvik消息,我不知道这是什么,但你为什么需要这个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 2015-07-05
    • 1970-01-01
    相关资源
    最近更新 更多