我在我的 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 与iTunSMPB
ID3 中的字段完全相同,无论它应该是什么意思。如果文件没有注释,getAll(FieldKey.COMMENT)
则将导致相同的数组没有大小为 3 的注释。
知道为什么要附加额外的 0 和 1。我不希望对索引 3 进行硬编码以提取预期的评论。