如何用 java 读/写 ID3v2 标签?

Posted

技术标签:

【中文标题】如何用 java 读/写 ID3v2 标签?【英文标题】:How to read/write ID3v2 tags with java? 【发布时间】:2017-01-04 08:11:46 【问题描述】:

我希望能够从 mp3 文件中读取 ID3v2 标签。我找到了多个允许我获取基本标签的框架。但我希望能够在这个list 中获得这些。我不关心与 IDv1 的向后兼容性。

我已经看过Jaudiotagger 和mp3agic。我没有找到如何将它们用于自定义标签。这可能吗?

【问题讨论】:

【参考方案1】:

您必须使用字符串标识符“TXXX”,这是“普通”字段和自定义字段之间的主要区别。我认为下面的代码应该是不言自明的:

AudioFile audioFile = AudioFileIO.read(File songFile) // try and catch

MP3File mp3 = (MP3File) audioFile;                    
AbstractID3v2Tag v2Tag = mp3.getID3v2Tag();          

// Since you've mentioned a list
List<TagField> tagList = v2Tag.getFields("TXXX") 

这是一种方法。该列表现在包含所有带有 TXXX 标识符的标签。现在您可以简单地对列表中的每个元素调用 toString(),您应该会得到类似的结果:

Description="Play Count"; Text="1.000.000" 

【讨论】:

方法getFields不存在? 哇,你是对的。想知道我当时为什么这样做?也许尝试用ID3v1Tag v1Tag = mp3.getID3v1Tag(); 替换AbstractID3v2Tag v2Tag = mp3.getID3v2Tag();。我将仔细研究它并在下周末编辑我的答案。谢谢指出 刚刚签到。运气好吗?

以上是关于如何用 java 读/写 ID3v2 标签?的主要内容,如果未能解决你的问题,请参考以下文章

如何用阿拉伯语tkinter Combobox写标签?

如何停止将已知类型转换为 id3v2 标签中的数字?

如何用python / c程序替换“cat”和“echo”读/写命令?

如何用JAVA NIO读取文件的指定内容?

删除 id3v2 标签 c++

如何用Java实现将word里的表格数据写入到excel中去