ID3 tag 1.x в MP3-файле


ID3 tag версии 1.0 предназначен для хранения некоторой информации о содержимом MP3-шки, которая не может быть сохранена непосредственно в потоке MP3. Располагаться он может в последних 128 байтах MP3-файла, но его наличие в файле не обязательно. То есть, считываем последние 128 байт файла, проверяем сигнатуру (первые три символа - TAG), и если она совпала, то считаем эти 128 байт ID3 тагом.

Содержимое ID3 тага версии 1.0:
Offset Type Name Comment
0
3
33
63
93
97
127
 char[3]
 char[30]
 char[30]
 char[30]
 char[4]
 char[30]
 byte
 Signature
 Title
 Artist
 Album
 Year
 Comment
 Genre
 'TAG', если нет, то это не ID3-таг
 Название песни
 Исполнитель
 Название альбома
 Год издания
 Комментарий
 Жанр музыки, см. таблицу

Как видно, название песни, альбома, исполнитель и комментарий представляются не более чем тридцатью символами. Если же в строке меньше 30 символов, то она дополняется символами с кодом 0 (первый символ с кодом 0 считается концом строки). Имеется также небольшое расширение формата - ID3 таг версии 1.1, позволяющий сохранять номер трека компакт-диска, с которого оцифровывалсь музыка. Для этого выделен последний байт комментария. Чтобы быть уверенным, что это именно номер трека, а не символ из очень длинного комментария, надо проверить предпоследний байт на равенство нулю.

Содержимое ID3 тага версии 1.1:
Offset Type Name Comment
0
3
33
63
93
97
125
126
127
 char[3]
 char[30]
 char[30]
 char[30]
 char[4]
 char[28]
 byte
 byte
 byte
 Signature
 Title
 Artist
 Album
 Year
 Comment
 0
 Track
 Genre
 'TAG', если нет, то это не ID3-таг
 Название песни
 Исполнитель
 Название альбома
 Год издания
 Комментарий
 Разделитель - если не 0, то таг версии 1.0
 Номер трека компакт-диска
 Жанр музыки, см. таблицу

К сожалению, поскольку формат тага разрабатывался буржуями, нет никаких стандартов на то, в какой кодировке будут записаны русские символы. Поэтому, естественно, каждый пишет в той кодировке, которая роднее его системе. Ну а авторам программ приходится извращаться, чтобы эти таги обрабатывать. В MP3 Tagger-е для определения кодировки используется частотный анализ русских букв. Вероятно, стоило бы пожертвовать каким-нибудь байтиком в ID3 таге для записи номера кодировки. В программе так и делается - если исполнитель умещается в 28 символов, то в 29-й символ поля Artist пишется 0, а в 30-й: 1 для cp-866, 2 для win-1251, 3 для КОИ-8. Естественно, другие программы это не поддерживают :-)

Жанр музыки кодируется одним байтом, что также создаёт проблемы - нельзя расширять список. Вот список всех возможных жанров:


0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 Оригинальный список (1996)
 Blues
 ClassicRock
 Country
 Dance
 Disco
 Funk
 Grunge
 Hip-Hop
 Jazz
 Metal
 NewAge
 Oldies
 Other
 Pop
 R&B
 Rap
 Reggae
 Rock
 Techno
 Industrial
 Alternative
 Ska
 DeathMetal
 Pranks
 Soundtrack
 Euro-Techno
 Ambient
 Trip-Hop
 Vocal
 Jazz+Funk
 Fusion
 Trance
 Classical
 Instrumental
 Acid
 House
 Game
 SoundClip
 Gospel
 Noise
 Alt.Rock
 Bass
 Soul
 Punk
 Space
 Meditative
 InstrumentalPop
 InstrumentalRock
 Ethnic
 Gothic
 Darkwave
 Techno-Industrial
 Electronic
 Pop-Folk
 Eurodance
 Dream
 SouthernRock
 Comedy
 Cult
 GangstaRap
 Top40
 ChristianRap
 Pop/Funk
 Jungle
 NativeAmerican
 Cabaret
 NewWave
 Psychedelic
 Rave
 Showtunes
 Trailer
 Lo-Fi
 Tribal
 AcidPunk
 AcidJazz
 Polka
 Retro
 Musical
 Rock&Roll
 HardRock

80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
 Добавлено 12.12.1997 (Winamp)
 Folk
 Folk/Rock
 NationalFolk
 Swing
 Fast-Fusion
 Bebob
 Latin
 Revival
 Celtic
 Bluegrass
 Avantgarde
 GothicRock
 ProgressiveRock
 PsychedelicRock
 SymphonicRock
 SlowRock
 BigBand
 Chorus
 EasyListening
 Acoustic
 Humour
 Speech
 Chanson
 Opera
 ChamberMusic
 Sonata
 Symphony
 BootyBass
 Primus
 PornGroove
 Satire

111
112
113
114
115
 Добавлено 26.01.1998 (Winamp 1.7)
 SlowJam
 Club
 Tango
 Samba
 Folklore

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
 Добавлено 13.04.1998 (Winamp 1.90)
 Ballad
 PowerBallad
 RhythmicSoul
 Freestyle
 Duet
 PunkRock
 DrumSolo
 ACappella
 Euro-House
 DanceHall
 Goa
 Drum&Bass
 Club-House
 Hardcore
 Terror
 Indie
 BritPop
 Negerpunk
 PolskPunk
 Beat
 ChristianGangstaRap
 HeavyMetal
 BlackMetal
 Crossover
 ContemporaryChristian
 ChristianRock

142
143
144
145
146
147
 Добавлено 01.06.1998 (Winamp 1.91)
 Merengue
 Salsa
 ThrashMetal
 Anime
 JPop
 Synthpop
148
......
254
 Не определены
255  Отсутствует

Написать мне письмо
mailto:cat@amilen.spb.ru