На этой страничке изложена информация, собранная мной при написании небольших программок для работы с файлами формата 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 я предоставляю всем желающим в свободное использование (естественно, вместе с исходными текстами). Единственное что мне хотелось бы получить взамен - Ваши письма об обнаруженных ошибках и предложения по усовершенствованию библиотеки.
|
Заголовок фрейма MPEG 1, 2 Layers I, II, III представляет собой 32-битную (4-байтную) структуру, причем первые 11 бит используются как область синхронизации, позволяющая обнаружить начало заголовка в файлах, в которых перед аудио-фреймами помещается некая вспомогательная информация. AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ID3 тэги это специального вида включения в аудио-файлы, содержащие смысловое описание музыкального файла - исполнитель, альбом и т.д. Здесь описан простейший (и самый популярный) вариант - ID3v1.1 являющийся слегка доработанным вариантом ID3v1. Этот стандарт уже считается устаревшим (опубликован ID3v2 позволяющий включать в аудиофайл буквально любую сопутствующую информацию вплоть до фотографий и караоке), однако, мне не удалось обнаружить mp3-файлы, сопровождаемые тэгами новой версии, соответственно у меня не было возможности (и необходимости) реализовать и отладить поддержку ID3v2. Вообще, как мне кажется, авторы стандарта ID3v2 перестарались и формат получился хотя и всеобъемлющим но излишне сложным. В результате он не получил распространения. Я буду только рад если кто-то меня опровергнет и укажет где находятся залежи mp3 снабженных полезными ID3v2 тэгами. А пока что здесь (и в моей библиотечке) будет информация только о ID3v1.1. ID3v1.1 представляет собой 128-байтную запись в конце файла. Формат записи описан ниже.
AAABBBBB BBBBBBBB BBBBBBBB BBBBBBBB BCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCD DDDDDDDD DDDDDDDD DDDDDDDD DDDDDEEE EFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFG
|
|
У Вас есть дополнительная информация или Вы нашли ошибки в этом описании ? Обязательно пишите anso@mail.ru |
| Вернуться на главную страничку |
![]() |
|