java - 使用 JavaFX MediaPlayer 从 MP3 读取 ID3v2 标签

标签 java javafx media-player mp3 metadata

我有一些 MP3,以前在读取元数据时不会出现问题。使用JavaFXMediaPlayer.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 标签编辑器中保存为所有格式的标签(包括 ID3v1ID3v2APE ),但它仍然拒绝加载这些特定标签。

除了 getMetadata 的常规 Oracle javadoc 之外,我仍然没有找到任何文档。函数,如果有人能指出我正确的方向,那就太好了。

最佳答案

看来我已经解决了这个问题。我使用的标记实用程序默认为 ID3v2.3@utf16。我使用 MP3Tag 将它们转换为 ID3v2.4@utf8。现在所有字段都已正确加载。

如果任何人都可以提供有关 map 中返回的数据类型或它将返回的其他标签的任何额外文档,那就太好了。

关于java - 使用 JavaFX MediaPlayer 从 MP3 读取 ID3v2 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20581937/

相关文章:

java - 方法不全局更新变量?

java - 使用从 Activity 传递的数据更新 Fragment UI

java - 让一个类实现 java 中未指定的通用接口(interface)

JavaFX类 Controller 场景引用

java - 如何将 JavaFX GUI 拆分为具有良好性能的 fxml 文件?

java - 在 JavaFX 中切换 View

Android 自定义音频播放器用 libPd 或 OpenSL ES 或 AudioTrack 替换 MediaPlayer

Android:如何在服务类中使用mediaController?

android - Seekbar在媒体播放器实现中没有进展

java - 黑莓模拟器文件系统 : where is it?