题 读取MP3文件的ID3标签


我试图从本地存储在SD卡中的mp3文件中读取ID3。

我想基本上取

  1. 标题
  2. 艺术家
  3. 专辑
  4. 轨道长度
  5. 专辑艺术

11
2018-06-10 12:53


起源




答案:


你可以使用所有这些 MediaMetadataRetriever

MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(filePath);

String albumName =
     mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);

29
2018-06-10 13:01



谢谢..你也可以指点我的任何例子 - Harsha M V
好的..我们正试图在2.2中实现任何解决方案? - Harsha M V
@Reno:我尝试了你的建议,但我没有得到任何有用的信息(基本上 null),尽管我确实看到id3标签与其他软件... - Luis A. Florit
仅供参考,有一个 窃听器 在Android(4.1+)的更高版本中,在使用URI时阻止此操作。 - Mike Lowery
不幸的是,这已经破了(得到 null 几乎无处不在)。 - Luis A. Florit


检查 MP3文件格式。基本上,你必须读取文件的最后128个字节;如果前3个字节是 "TAG",继续阅读你需要的领域;如果没有,该文件没有附加信息。


4
2018-06-10 13:03



我想知道如何在Android中实现它。任何想法 ? - Harsha M V
创建一个 InputStream 从文件和128字节缓冲区;将最后128个字节读入缓冲区;检查缓冲区的前3个字节,应该是 TAG;使用读取相关字节 Arrays.copyOfRange;将这些字节转换为 int (用于流派)或 String (其他一切)。 - Gabriel Negut
这不是那么简单。有更多版本的标签,这很容易你只阅读旧版本。 - Pointer Null


如果最后128个字节以标记“TAG”开头,则该文件具有ID3v1(或ID3v1.1)标记。 ID3v2.3标签位于由令牌“id3”指示的文件的开头(适合于流式传输)。我相信ID3v2.4由“3DE”表示,但我不确定......


2
2018-04-22 08:32



这正是我需要的信息,谢谢!我试图将Bandcamp MP3与Elixir匹配并且总是出错,因为Bandcamp MP3被标记为ID3v2.3。如果可以的话,会投票一百次。