Jaudiotagger getAll(FieldKey.COMMENT) возвращает массив 0 и 1

Я использую JAudioTagger в своем Java-приложении для извлечения метаданных из mp3-файла. Я могу получить все метаданные внутри ID3 без проблем, кроме "комментариев". Комментарии - это то, что я добавил из iTunes, выбрав трек, щелкнув по нему правой кнопкой мыши и получив информацию. Добавьте комментарии и сохраните. Проблема в том, что до того, как фактический комментарий может быть распечатан, поле комментария из приведенного ниже кода дает мне массив 0 и 1 с размером 4, где индекс 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, чтобы извлечь намеченный комментарий.

1 ответ

Это потому, что дополнительные поля iTunes, такие как iTunSMPB (также iTunNORM, iTunPGAP и др.) хранятся в поле комментариев с ключом фрейма COMMENT, но с определенными дополнительными ключами.

Вы можете попробовать отфильтровать возвращенные TagFields.

Другие вопросы по тегам