ID3v2: 2 vs 4

Nov 02, 2009 22:19

Во время прогона по всей своей библиотеке, примерно в сотне из 4к композиций обнаружил неизвестные теги TT2 и TP1. 4-й байт был нулевым, что, вообще говоря, не по стандарту, т.е. фрейм невалиден. Оказывается, в старом варианте ID тега был всего лишь 3 байта, и данные теги соответствовали имени автора и названию альбома. Удивительны тут две вещи:
  1. Read more... )

Leave a comment

Comments 2

nahabi4 November 6 2009, 23:11:02 UTC
привет, я вот тоже работаю с ID3v2.3, если можешь - поделись опытом.

Между названием тега и началом текста (для текстовых тегов типа TPE1, TIT2) есть 7 байт. Как я понимаю первые 4 отвечают за размер блока, последний - за кодировку, а 5-ый и 6-ой байты там за что отвечают не в курсе?

Reply

voidex November 7 2009, 16:42:30 UTC
Привет.

Вот здесь стандарт: 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

Up