Структура MP3 файла
Определенного заголовка у файла нет, вместо этого есть заголовок у каждого фрейма. Фрейм – часть аудио данных со своим заголовком. Т.е. в файле фреймов может присутствовать хоть тысяча, хоть миллион и у каждого из них будет свой заголовок. В файлах, закодированных уровнем I/II (MPEG Audio Layer I/II), фреймы абсолютно независимы и могут воспроизводиться отдельно друг от друга. После появления уровня III (MPEG Audio Layer III), фреймы стали зависимыми и теперь, чтобы воспроизвести один фрейм может потребоваться до 9 других фреймов (это произошло из-за использования "резервуара байтов" – некоего буфера).
Размер фрейма 32 бита (4 байта). Первые 12 бит (или первые 11 бит для MPEG 2.5 расширения) заголовка фрейма всегда установлены в 1 и называются "frame sync".
Далее - таблица, соотносящая биты с их значениями.
Длина в битах | Позиция в битах | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11 | (31-21) | Frame sync (все биты должны быть равны 1) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | (20,19) | Идентификатор версии MPEG Audio 00 - MPEG Версии 2.5 (более позднее расширение MPEG-2) 01 - зарезервировано 10 - MPEG Версии 2 (ISO/IEC 13818-3) 11 - MPEG Версии 1 (ISO/IEC 11172-3) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | (18,17) | Идентификатор уровня 00 - зарезервировано 01 - Layer III 10 - Layer II 11 - Layer I |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | (16) | 0 - Защита CRC (16 bit CRC follows header) 1 - Нет защиты |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | (15-12) |
Индекс битрейта
Примечания: В MPEG файлах также может быть и переменный битрейт (VBR). В таком случае, каждый фрейм может быть создан с различным битрейтом. Это может быть использовано во всех уровнях. Декодеры Layer III должны поддерживать этот метод. Декодеры Layer I и Layer II могут поддерживать это. Для Layer II могут быть некоторые недозволенные комбинации битрейта и режима. Вот список этих комбинаций:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | (11,10) |
Индекс частоты дискретизации
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | (9) | Бит заполненности 0 - фрейм заполнен 1 - фрейм заполнен с одним лишним слотом Заполненность нужна чтобы точно уложиться во фрейм. Как пример: 128kbps 44.1kHz уровень II использует фреймы в большинстве своем из 418 байтов и некоторые из 417 байтов длиной, чтобы получить точный битрейт 128k. Для уровня I слот 32 бита длиной, для уровня II и уровня III слот длиной в 8 бит. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | (8) | Персональный бит. Всего лишь для информации. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | (7,6) | Каналы 00 - Stereo (стерео) 01 - Joint stereo (совместное стерео) 10 - Dual channel (2 моно канала) 11 - Single channel (моно) Примечание: Dual channel режим является двумя абсолютно независимыми моно каналами. Каждый использует точно половину битрейта самого файла. Многие декодеры выводят его как стерео, но на самом деле дела могут обстоять не совсем так. Одним из примеров использования может быть речь на двух разных языках, несущаяся в этом битовом потоке, и затем, предполагается, подходящим декодером будет декодирован только выбранный язык. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | (5,4) |
Расширение режима (Используется только вместе с Joint stereo)
Расширение режима используется для соединения информации, которая не используется для стерео эффекта, таким образом уменьшается количество требуемых битов. Эти биты динамически определяются кодером в режиме Joint Stereo, и Joint Stereo может меняться в разных фреймах и даже включаться или выключаться. Полный диапазон частоты звучания в MPEG файле разделена на подмножества. Всего 32 таких подмножества. Для уровня I и II эти два бита определяют подмножества, где применено Intensity stereo. Для уровня III эти два бита определяют, что за тип Joint Stereo используется (Intensity stereo или m/s stereo). Диапазон частоты определен внутри декодирующего алгоритма.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | (3) | Авторское право 0 - Не защищено авторскими правами 1 - Защищено авторскими правами |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | (2) | Оригинал 0 - Копия оригинальной композиции 1 - Оригинальная композиция |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | (1,0) | Выразительность 00 - отсутствует 01 - 50/15 ms 10 - зарезервировано 11 - CCIT J.17 Выразительность здесь используется, чтобы сообщить декодеру, что файл должен быть переделан обратно, то есть, декодер должен провести обработку амплитудно-частотного соотношения в звуке после схемы шумоподавления, подобной Dolby. Это редко используется. |