我在Java应用程序中使用Jaudiotagger从MP3文件中检索元数据。除了"注释"之外,我能够在ID3中检测所有元数据。评论是我通过选择曲目,右键单击并获取信息来从iTunes添加的内容。添加评论并保存。问题是在可以打印出实际评论之前,以下代码中的注释字段使我的数组为0和1尺寸4的数组,其中索引3是实际评论,索引0到2是0s和1s的数组。这是我提取/打印注释字段的代码:
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
等))存储在带有注释帧键的注释字段中,但具有特定的子键。
您可以尝试过滤返回的标签。