我在 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
(还有 iTunNORM
、iTunPGAP
等)都存储在具有 COMMENT 框架键的注释字段中,但具有特定的子键。
您可以尝试过滤返回的 TagField。
关于java - Jaudiotagger getAll(FieldKey.COMMENT) 生成一个由 0 和 1 组成的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37950317/