musdoc.gif (279 bytes)  

Немузыкальная часть музыкальных файлов

На этой страничке изложена информация, собранная мной при написании небольших программок для работы с файлами формата MPEG 1, 2 Layers I, II, III (в частности, столь полюбившийся пользователям Интернет формат MP3 (Mpeg Audio Layer3). Речь здесь идет исключительно о "немузыкальной" части файлов с музыкой.

Информация о ID3-tags (смысловое описание музыкального файла - исполнитель, альбом и т.д.) свободно доступна на http://www.id3.org/. С информацией о заголовках mp3-файлов дело обстоит несколько хуже - официально она не распространяется, однако обнаружить соответствующие описания в Интернет не проблема (большая часть информации получена мной со странички Gustav Munkby).

Здесь представлена всего лишь компиляция и перевод на русский язык найденных в Интернет ресурсов.

Mpeg-файлы состоят из так называемых фреймов (frames). Фреймы не зависят друг от друга, каждый из них имеет свой собственный заголовок.

Перед и после последовательности фреймов достаточно часто добавляют некую дополнительную информацию. Например, в начало файла может быть вписан стандартный заголовок WAV-файла, а в конец - ID3-tag, описывающий файл. Теоретически, "посторонняя" информация может быть размещена вообще в произвольном месте между фреймами, но, на сколько мне известно, обычно это не практикуется.

Как правило, формат хранимой в файле аудиоинформации можно определить по заголовку первого фрейма, однако существуют так называемых VBR-файлы (variable bitrate - файлы с переменной степенью сжатия), для определения длительности звучания и характеристик которых строго говоря необходимо просматривать заголовки всех входящих в VBR-файл фреймов (впрочем, существуют алгоритмы, позволяющие избежать этого).

Написанную на основании этих данных библиотеку для Delphi я предоставляю всем желающим в свободное использование (естественно, вместе с исходными текстами). Единственное что мне хотелось бы получить взамен - Ваши письма об обнаруженных ошибках и предложения по усовершенствованию библиотеки.

 

Заголовки фреймов mp3 (Mpeg Audio Layer3)

Общее описание Описание ID3v1.1

Заголовок фрейма MPEG 1, 2 Layers I, II, III представляет собой 32-битную (4-байтную) структуру, причем первые 11 бит используются как область синхронизации, позволяющая обнаружить начало заголовка в файлах, в которых перед аудио-фреймами помещается некая вспомогательная информация.

AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM

  Длина
(бит)
Смещение
(бит)
Описание
A 11 (31-21) Область синхронизации (должна быть заполнена единицами)
B 2 (20-19) Версия MPEG:
00 - MPEG Version 2.5 (неофициальная версия для файлов с сильным сжатием)
01 - недопустимое значение (файл поврежден ?)
10 - MPEG Version 2 (ISO/IEC 13818-3)
11 - MPEG Version 1 (ISO/IEC 11172-3)
C 2 (18-17) Подверсия MPEG (Layer):
00 - недопустимое значение (файл поврежден ?)
01 - Layer III
10 - Layer II
11 - Layer I
D 1 (16) Флаг контрольной суммы:
0 - После заголовка следует 16-битная CRC
1 - Без контрольной суммы
E 4 (15-12) Скорость (bitrate) потока, Кбит/сек:
Значение MPEG1
layer I
MPEG1
layer II
MPEG1
layer III
MPEG2
layer I
MPEG2
layer II & III
0000 Неопр. Неопр. Неопр. Неопр. Неопр.
0001 32 32 32 32 8
0010 64 48 40 48 16
0011 96 56 48 56 24
0100 128 64 56 64 32
0101 160 80 64 80 40
0110 192 96 80 96 48
0111 224 112 96 112 56
1000 256 128 112 128 64
1001 288 160 128 144 80
1010 320 192 160 160 96
1011 352 224 192 176 112
1100 384 256 224 192 128
1101 416 320 256 224 144
1110 448 384 320 256 160
1111 Ошибка Ошибка Ошибка Ошибка Ошибка

Прим:

  • Под MPEG2 подразумевается также MPEG2.5
  • "Неопр." - определяемая приложением скорость (т.е. определить ее вне специфичного приложения невозможно)
  • "Ошибка" - запрещенное значение (файл поврежден ?)
F 2 (11-10) Частота дискретизации (в Гц):
Значение MPEG1 MPEG2 MPEG2.5
00 44100 22050 11025
01 48000 24000 12000
10 32000 16000 8000
11 Ошибка Ошибка Ошибка
G 1 (9) Выравнивание
0 - Нет
1 - Во фрейм добавлен выравнивающий слот

Выранивающий слот для Layer I это 4 байта (32 бита), для Layer II и Layer III - 1 байт (8 bits).
H 1 (8) Зарезервировано
I 2 (7-6) Стерео режим:
00 - Стерео (стереоканалы кодируются раздельно, но кодер может динамически отдавать часть места предназначенного менее "насыщенному" в данный момент каналу второму каналу)
01 - Joint stereo (объединенное кодирование стереоканалов, см.поле J)
10 - Dual channel (раздельное кодирование стереоканалов)
11 - Моно
J 2 (5-4) Расширение типа стереорежима (только для Joint stereo)
Значение Layer I & II Layer III
Intensity
stereo
MS
stereo
00 полосы 4 - 31 нет нет
01 полосы 8 - 31 да нет
10 полосы 12 - 31 нет да
11 полосы 16 - 31 да да

Прим.

  • Для Layer I & II - это поле определяет наиболее существенную для стерео полосу частот (сигнал делится на 32 полосы частот).
  • MS Stereo -- Стереосигнал раскладывается на средний между каналами и разностный. При этом второй кодируется с меньшим битрейтом.
  • Intensity stereo/MS Stereo -- Полезен на низких битрейтах,.состоит в том, что для некоторых частотных диапазонов оставляется уже даже не разностный сигнал, а только отношение мощностей сигнала в разных каналах.
K 1 (3) Copyright:
0 - Нет
1 - Да
L 1 (2) Исходный носитель:
0 - Копия
1 - Исходный носитель
M 2 (1-0) Emphasis:
00 - нет
01 - 50/15 мс
10 - зарезервировано
11 - CCIT J.17

 

ID3 тэги mp3 (ID3v1 и ID3v1.1 tags)

Общее описание Заголовки фреймов

ID3 тэги это специального вида включения в аудио-файлы, содержащие смысловое описание музыкального файла - исполнитель, альбом и т.д.

Здесь описан простейший (и самый популярный) вариант - ID3v1.1 являющийся слегка доработанным вариантом ID3v1.

Этот стандарт уже считается устаревшим (опубликован ID3v2 позволяющий включать в аудиофайл буквально любую сопутствующую информацию вплоть до фотографий и караоке), однако, мне не удалось обнаружить mp3-файлы, сопровождаемые тэгами новой версии, соответственно у меня не было возможности (и необходимости) реализовать и отладить поддержку ID3v2. Вообще, как мне кажется, авторы стандарта ID3v2 перестарались и формат получился хотя и всеобъемлющим но излишне сложным. В результате он не получил распространения.

Я буду только рад если кто-то меня опровергнет и укажет где находятся залежи mp3 снабженных полезными ID3v2 тэгами. А пока что здесь (и в моей библиотечке) будет информация только о ID3v1.1.

ID3v1.1 представляет собой 128-байтную запись в конце файла. Формат записи описан ниже.

  Длина
(байт)
Описание
A 3 Сигнатура, должна содержать символы "TAG".
B 30 Название
C 30 Исполнитель
D 30 Альбом
E 4 Год
F 30 Примечания
  • В версии ID3v1 все 30 байт заняты текстом примечания
  • В версии ID3v1.1 текст примечания занимает только первые 28 байт за которыми обязательно следует байт 0, а в последнем байте поля - номер трека в альбоме.
G 1 Жанр

Представляет собой индекс в списке жанров. Существует стандартный список жанров и список, расширенный разработчиками WinAmp.

Ниже приведен сводный список жанров, индексы соответственно от 00h до 93h, всего 148 жанров (только не надо меня спрашивать что такое "Negerpunk" или "Christian Gangs" - я уже слишком стар чтобы в это въезжать ;) ).

"Blues","Classic Rock","Country","Dance","Disco","Funk","Grunge",
"Hip-Hop","Jazz","Metal","New Age","Oldies","Other","Pop",
"R&B","Rap","Reggae","Rock","Techno","Industrial","Alternative",
"Ska","Death Metal","Pranks","Soundtrack","Euro-Techno","Ambient",
"Trip-Hop","Vocal","Jazz+Funk","Fusion","Trance","Classical",
"Instrumental","Acid","House","Game","Sound Clip","Gospel",
"Noise","AlternRock","Bass","Soul","Punk","Space","Meditative",
"Instrumental Pop","Instrumental Rock","Ethnic","Gothic",
"Darkwave","Techno-Industrial","Electronic","Pop-Folk","Eurodance",
"Dream","Southern Rock","Comedy","Cult","Gangsta","Top 40",
"Christian Rap","Pop/Funk","Jungle","Native American","Cabaret",
"New Wave","Psychedelic","Rave","Showtunes","Trailer","Lo-Fi",
"Tribal","Acid Punk","Acid Jazz","Polka","Retro","Musical",
"Rock & Roll","Hard Rock",
"Folk","Folk/Rock","National Folk","Swing","Fast Fusion",
"Bebob","Latin","Revival","Celtic","Bluegrass","Avantgarde",
"Gothic Rock","Progressive Rock","Psychedelic Rock",
"Symphonic Rock","Slow Rock","Big Band","Chorus","Easy Listening",
"Acoustic","Humour","Speech","Chanson","Opera","Chamber Music",
"Sonata","Symphony","Booty Bass","Primus","Porn Groove",
"Satire","Slow Jam","Club","Tango","Samba","Folklore",
"Ballad","Power Ballad","Rhythmic Soul","Freestyle",
"Duet","Punk Rock","Drum Solo","Acapella","Euro-House",
"Dance Hall", "Goa", "Drum & Bass", "Club-House", "Hardcore",
"Terror", "Indie", "BritPop", "Negerpunk", "Polsk Punk", "Beat",
"Christian Gangs", "Heavy Metal", "Black Metal", "Crossover",
"Contemporary Ch?", "Cristian Rock", "Merengue", "Salsa",
"Thrash Metal", "Anime", "JPop", "Synthpop"

 

У Вас есть дополнительная информация или Вы нашли ошибки в этом описании ?
Обязательно пишите anso@mail.ru
Вернуться на главную страничку

 

This page was build with FAR! manager TopList