我有一些 MP3,以前在读取元数据时不会出现问题。使用JavaFX
的MediaPlayer.getMetadata()
函数中,我从 mp3 文件中获取所有数据并将其存储在 ObservableMap<String, Object>
中 map 。这非常有效,然后我开始使用不同的 MP3。
标准显然是ID3v2
,但我找不到任何有关 getMetadata
的文档函数以及它解析哪些类型的标签,以及它优先考虑哪些类型。现在我可以设法获取艺术家、专辑、标题和专辑艺术家,但其他标签(如轨道和轨道计数)不再起作用。当我加载元数据时,我首先打印出对 data.toString()
的调用。 。数据对象是 ObservableMap<String, Object>
map 。它打印的格式很好,如下所示:
{album artist=LCD Soundsystem, artist=LCD Soundsystem, raw metadata={ID3=java.nio.HeapByteBufferR[pos=221 lim=4096 cap=4096]}, title=You Wanted a Hit, album=This Is Happening}
我之前使用的MP3在这张 map 上有轨道、轨道总数、年份和其他元数据,我不知道为什么他们不再读取。我尝试在 MP3 标签编辑器中保存为所有格式的标签(包括 ID3v1
、 ID3v2
和 APE
),但它仍然拒绝加载这些特定标签。
除了 getMetadata
的常规 Oracle javadoc 之外,我仍然没有找到任何文档。函数,如果有人能指出我正确的方向,那就太好了。
最佳答案
看来我已经解决了这个问题。我使用的标记实用程序默认为 ID3v2.3@utf16
。我使用 MP3Tag
将它们转换为 ID3v2.4@utf8
。现在所有字段都已正确加载。
如果任何人都可以提供有关 map 中返回的数据类型或它将返回的其他标签的任何额外文档,那就太好了。
关于java - 使用 JavaFX MediaPlayer 从 MP3 读取 ID3v2 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20581937/