使用 MP3SPI 从 MP3 文件中解析 ID3 标签

Posted

技术标签:

【中文标题】使用 MP3SPI 从 MP3 文件中解析 ID3 标签【英文标题】:Parse ID3 tags from MP3 file using MP3SPI 【发布时间】:2017-06-23 15:33:59 【问题描述】:

我正在使用MP3SPI 在我的 Java 应用程序中播放 MP3 文件。开始和停止播放效果很好。但是,我希望能够从 MP3 文件中打印 ID3 标签。

我尝试了以下代码:

URL fileUrl = new File("song.mp3").toURI().toURL();

AudioFileFormat audioFileFormat = new MpegAudioFileReader().getAudioFileFormat(fileUrl);
Map<String, Object> properties = audioFileFormat.properties();
for (Entry<String, Object> entry : properties.entrySet()) 

    System.out.println(entry.getKey() + " = " + entry.getValue());

此代码读取音频文件属性并打印出每个属性的键和值。它适用于除 ID3 标签之外的所有内容。我已经验证了 song.mp3 确实有 ID3 标签。运行上面的代码会产生以下输出:

mp3.copyright = false
mp3.framesize.bytes = 1041
mp3.vbr = false
mp3.frequency.hz = 44100
mp3.framerate.fps = 38.28125
mp3.id3tag.v2 = java.io.ByteArrayInputStream@281e3708
mp3.channels = 2
mp3.vbr.scale = 0
mp3.version.encoding = MPEG1L3
mp3.bitrate.nominal.bps = 320000
mp3.version.layer = 3
mp3.id3tag.v2.version = 2
mp3.padding = true
mp3.id3tag.encoded = iTunes 10.6.1
mp3.header.pos = 2147
comment = TunNORM
mp3.version.mpeg = 1
mp3.mode = 0
mp3.crc = false
mp3.original = false

根据 MP3SPI 的文档和 Stack Overflow 上的各种答案,还应该有 genreartist 等属性。感觉好像有什么大事没看懂,看不懂自己做错了什么。

拥有 mp3.id3tag.v2 ByteArrayInputReader 对我来说似乎有点奇怪,我无法弄清楚这意味着什么。另外,我想知道 ID3 标签似乎已经用 iTunes 编码(查看 mp3.id3tag.encoded)这一事实是否与没有得到任何 ID3 标签输出有关。

【问题讨论】:

【参考方案1】:

要正确读取 ID3 标签,请使用 JAudiotagger 之类的库。

【讨论】:

以上是关于使用 MP3SPI 从 MP3 文件中解析 ID3 标签的主要内容,如果未能解决你的问题,请参考以下文章

MP3 文件格式解析

如何使用 Mp3agic jar Android studio 从 MP3 文件中获取 ID3 歌词标签?

通过javascript从文件夹中的mp3文件中读取id3标签

使用 Delphi 7 从 MP3 文件中删除或编辑 ID3Tag 版本 2

从mp3获取没有元数据(ID3)的数据的方法[关闭]

从远程 mp3 文件中检索 id3 信息