Во время прогона по всей своей библиотеке, примерно в сотне из 4к композиций обнаружил неизвестные теги TT2 и TP1. 4-й байт был нулевым, что, вообще говоря, не по стандарту, т.е. фрейм невалиден. Оказывается, в старом варианте ID тега был всего лишь 3 байта, и данные теги соответствовали имени автора и названию альбома. Удивительны тут две вещи:
-
( Read more... )
Comments 2
Между названием тега и началом текста (для текстовых тегов типа TPE1, TIT2) есть 7 байт. Как я понимаю первые 4 отвечают за размер блока, последний - за кодировку, а 5-ый и 6-ой байты там за что отвечают не в курсе?
Reply
Вот здесь стандарт: http://www.id3.org/d3v2.3.0
Конкретно относящееся к вопросу - пункт 3.3:
Frame ID $xx xx xx xx (four characters)
Size $xx xx xx xx
Flags $xx xx
Т.е. сначала идёт ID фрейма (TIT2, TPE1...), потом 4 байта на размер, потом 2 байта на флаги.
Кодировка идёт далее потому, что так описаны все тектовые фреймы:
Text encoding $xx
Information
Т.е. правильнее сказать так: между названием тега и началом содержимого есть 6 байт, 4 на размер, 2 на флаги. А кодировка идёт там потому, что такое содержимое у текстовых фреймов.
Флаги описаны в 3.3.1: %abc00000 %ijk00000.
Вообще говоря, если выставлены флаги j и/или k, то будут дополнительно следовать ещё 1 (2, если выставлены оба) байта (не учитываемые в размере, а входящие в заголовок), и только потом уже начало содержимого.
Reply
Leave a comment