java - Jaudiotagger getAll(FieldKey.COMMENT) 生成一个由 0 和 1 组成的数组

标签 java itunes id3 jaudiotagger

我在 Java 应用程序中使用 JAudioTagger 从 mp3 文件中检索元数据。除了“注释”之外,我能够毫无问题地检索 ID3 中的所有元数据。评论是我从 iTunes 添加的内容,方法是选择轨道,右键单击它并获取信息。添加评论并保存。问题是在打印出实际注释之前,下面代码中的注释字段给了我一个大小为 4 的 0 和 1 数组,其中索引 3 是实际注释,索引 0 到 2 是 0 和 1 数组。这是我提取/打印评论字段的代码:

Tag tag = null;
file = /some/path/file-name.mp3

System.out.println("tag.getAll(FieldKey.COMMENT)-->" + tag.getAll(FieldKey.COMMENT));   // Check output 1 below
System.out.println("tag.getFirst ? "+tag.getFirst(FieldKey.COMMENT) ); // output 2 below

以下是各自的输出:

// Output for System.out 1
[0,
 00000368 000002C0 00003670 00003005 0001DC53 0001DC53 00008489 00008566 000378AC 00038CE0,
 00000000 00000210 00000A8D 0000000000E16863 00000000
00A37EB2 00000000 00000000 00000000 00000000 00000000 00000000,
 This is a comment ]
// Output for System.out 2
0

请注意如何在输出 #1 中最后一个索引(即实际注释)之前创建一个数组。经过进一步调查,我发现索引 0 到 2 与 ID3 中的 iTunSMPB 字段完全相同,无论它的含义是什么。如果文件没有注释,则 getAll(FieldKey.COMMENT) 将生成没有大小为 3 的注释的相同数组。

知道为什么要附加额外的 0 和 1 吗?我不想对索引 3 进行硬编码以提取预期的注释。

最佳答案

这是因为 iTunes 额外字段,例如 iTunSMPB(还有 iTunNORMiTunPGAP 等)都存储在具有 COMMENT 框架键的注释字段中,但具有特定的子键。

您可以尝试过滤返回的 TagField。

关于java - Jaudiotagger getAll(FieldKey.COMMENT) 生成一个由 0 和 1 组成的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37950317/

相关文章:

java - Android Canvas (onDraw)

c# - 将文件添加到 Itunes com

ios - 将 iOS 应用内购买价格更改为免费?如何重现应用程序所做的事情?

video - 查找远程媒体文件的视频分辨率和视频持续时间

java - 使用泊松分布生成一个范围内的随机数

java - 为什么在 Java 中最小化、最大化和调整大小时更改 JFrame 中的高度和宽度值

c# - 无法读取 iTunes XML 提要

python - 读取 ID3 标签的最佳库是什么?

用于设置和保存顺序的 Java 流映射列表