1

我在我的 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 与iTunSMPBID3 中的字段完全相同,无论它应该是什么意思。如果文件没有注释,getAll(FieldKey.COMMENT)则将导致相同的数组没有大小为 3 的注释。

知道为什么要附加额外的 0 和 1。我不希望对索引 3 进行硬编码以提取预期的评论。

4

1 回答 1

0

iTunSMPB这是因为像(also iTunNORM, et al)这样的 iTunes 额外字段iTunPGAP存储在带有 COMMENT 帧键的注释字段中,但具有特定的子键。

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

于 2016-11-02T17:16:31.467 回答