В этой статье приводится спецификация заголовка 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) Индекс битрейта
биты V1, L1 V1, L2 V1, L3 V2, L1 V2, L2 & L3
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 неверный неверный неверный неверный неверный

Примечания: Все значения V1 — MPEG Версия 1 V2 — MPEG Версия 2 и Версия 2.5 L1 — Layer I L2 — Layer II L3 — Layer III

«свободный» означает свободный формат. Свободный битрейт должен быть постоянным (CBR) и должен быть ниже максимально дозволенного. Со стороны декодера поддержка потока данных со свободным битрейтом не требуется. «неверный» означает, что значение за пределами дозволенного.

В MPEG файлах также может быть и переменный битрейт (VBR). В таком случае, каждый фрейм может быть создан с различным битрейтом. Это может быть использовано во всех уровнях. Декодеры Layer III должны поддерживать этот метод. Декодеры Layer I и Layer II могут поддерживать это.

Для Layer II могут быть некоторые недозволенные комбинации битрейта и режима. Вот список этих комбинаций:

битрейт один канал стерео интенсивное стерео два канала
свободный да да да да
32 да нет нет нет
48 да нет нет нет
56 да нет нет нет
64 да да да да
80 да нет нет нет
96 да да да да
112 да да да да
128 да да да да
160 да да да да
192 да да да да
224 нет да да да
256 нет да да да
320 нет да да да
384 нет да да да
2 (11,10) Индекс частоты дискретизации
биты MPEG1 MPEG2 MPEG2.5
00 44100 Hz 22050 Hz 11025 Hz
01 48000 Hz 24000 Hz 12000 Hz
10 32000 Hz 16000 Hz 8000 Hz
11 зарезервировано зарезервировано зарезервировано
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). Диапазон частоты определен внутри декодирующего алгоритма.

Уровень I и II Уровень III
значение Уровень I & II
00 подмножеств от 4 до 31
01 подмножеств от 8 до 31
10 подмножеств от 12 до 31
11 подмножеств от 16 до 31
Intensity stereo MS stereo
выключено выключено
включено выключено
выключено включено
включено включено
1 (3) Авторское право 0 — Не защищено авторскими правами 1 — Защищено авторскими правами
1 (2) Оригинал 0 — Копия оригинальной композиции 1 — Оригинальная композиция
2 (1,0) Выразительность 00 — отсутствует 01 — 50/15 ms 10 — зарезервировано 11 — CCIT J.17

Выразительность здесь используется, чтобы сообщить декодеру, что файл должен быть переделан обратно, то есть, декодер должен провести обработку амплитудно-частотного соотношения в звуке после схемы шумоподавления, подобной Dolby. Это редко используется.