Файл состоит из одного или нескольких фреймов.
Фрейм имеет заголовок и данные.
Длина фрейма определяется форматом MPEG, и может менятся.
Фрейм кончается там, где начинается следующий. (см. Заголовок фрейма)
Заголовк фрейма состоит из 4-ех байт, с которых начинается каждый фрейм. Заголовок у каждого фрейма может быть разным.
Байт 0 1 2 3 binary 11111111 111aabbc ddddeefg hhjjkmpp 1 - Синхронизация a - Версия b - Layer c - Защита от ошибок d - Код битрейта e - Код sample rate f - Padding g - Extension h - Каналы j - Mode extension k - Сopyright m - Original p - Emphasis
1 - Синхронизация.
Должен быть: 11111111 111xxxxx
a - Версия
0 = mpeg 2.5 2 = mpeg 2 3 = mpeg 1
b - Layer
3 = layer I 2 = layer II 1 = layer III
c - Защита от ошибок.
0 = on 1 = off
d - Код битрейта.
mpeg 1
(hex) layer I layer II layer III
$0 0 0 0
$1 32 32 32
$2 64 48 40
$3 96 56 48
$4 128 64 56
$5 160 80 64
$6 192 96 80
$7 224 112 96
$8 256 128 112
$9 288 160 128
$a 320 192 160
$b 352 224 192
$c 384 256 224
$d 416 320 256
$e 448 384 320
mpeg 2, mpeg 2.5
(hex) layer I layer II layer III
$0 0 0 0
$1 32 8 8
$2 48 16 16
$3 56 24 24
$4 64 32 32
$5 80 40 40
$6 96 48 48
$7 112 56 56
$8 128 64 64
$9 144 80 80
$a 160 96 96
$b 176 112 112
$c 192 128 128
$d 224 144 144
$e 256 160 160
e - Код sample rate.
mpeg 1 mpeg 2 mpeg 2.5 0 = 44100 Hz 22050 Hz 11025 Hz 1 = 48000 Hz 24000 Hz 12000 Hz 2 = 32000 Hz 16000 Hz 8000 Hz
f - Padding.
1 = unused bits are filled (padding required) 0 = all bits in frame are used
g - Extension.
0 = none 1 = private
h - Channel mode
0 = stereo 1 = joint stereo 2 = dual channel 3 = mono
j = Mode extension.
Только для Join-Stereo
layer I & II layer III
0 = 4 0
1 = 8 4
2 = 12 8
3 = 16 16
k - Copyright.
0 = no 1 = yes
m - Original.
0 = no 1 = yes
p - Emphasis.
0 = none 1 = 50/15 microseconds 2 = dunno 3 = CITT j.17