MediaMetadataRetriever

MediaMetadataRetriever

我正在尝试为Android构建自己的音乐播放器。

对于清单,我需要歌曲的元数据,因此我正在使用MediaMetadataRetriever提取它们,但是检索器无法提取大多数歌曲的元数据(669中的630)。在我的PC音乐软件中,元数据在Windows资源管理器中也可见。如果打开歌曲的属性,则可以对其进行修改,并且如果将更改的文件加载到手机上,则仍然无法使用。顺便说一句:如果我在电话上使用任何其他播放器,它总是能够加载元数据。

MediaMetadataRetriever越野车,我应该使用其他一些库进行提取吗,还是我做错了什么?

This问题是相关的,但实际上并不能帮助解决我的问题。

这是我的一些代码示例:

MediaMetadataRetriever lMetaData = new MediaMetadataRetriever();
lMetaData.setDataSource(mAbsolutePath);
mArtist = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
mTitle = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
mAlbum = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
mAlbumArtist = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST);
mGenre = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE);
mSongNumber = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER);
mYear = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR);

if(mArtist == null)
    mArtist = new String("");
if(mTitle == null)
    mTitle = new String("");
if(mAlbum == null)
    mAlbum = new String("");
if(mAlbumArtist == null)
    mAlbumArtist = new String("");
if(mGenre == null)
    mGenre = new String("");
if(mSongNumber == null)
    mSongNumber = new String("");
if(mYear == null)
    mYear = new String("");

最佳答案

MediaMetadataRetriever仅支持少数格式。我建议FFmpegMediaMetadataRetriever。它支持几种其他格式和协议。

09-27 11:59