MP3 的全稱為MPEG1 Layer-3 音頻文件
每幀采樣數(幀時間戳):
我們首先區分兩個術語:幀大小和幀長度。幀大小即每幀采樣數表示一幀中采樣的個數,這是恆定值。其值如下表所示
|
MPEG 1 |
MPEG 2 (LSF) |
MPEG 2.5 (LSF) |
Layer I |
384 |
384 |
384 |
Layer II |
1152 |
1152 |
1152 |
Layer III |
1152 |
576 |
576 |
|
采樣率(單位:Hz),2 bits
每秒采集信息的次數,例如:44100Hz, 每秒取44100次,每1/44100秒取一次(計算一次音頻振幅的位置)
bits |
MPEG1 |
MPEG2 |
MPEG2.5 |
00 |
44100 |
22050 |
11025 |
01 |
48000 |
24000 |
12000 |
10 |
32000 |
16000 |
8000 |
11 |
保留 |
比特率(單位:Kbps)
索引值 |
MPEG 1 |
MPEG 2, 2.5 (LSF) |
|||
Layer I |
Layer II |
Layer III |
Layer I |
Layer II & III |
|
0000 |
Free |
||||
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 |
Bad |
Free表示空閑,如果固定比特率(這種文件不能變換比特率)和上表定義的不同,應該有應用程序決定。這種情況的實現應該只用於內部目的因為第三方應用程序是沒有辦法找出正確比特率的。但是這么做並不是很重要況且還浪費精力。
Bad表示該值無效。
幀長:
LyaerI使用公式:
幀長度(字節) = (( 每幀采樣數 / 8 * 比特率 ) / 采樣頻率 ) + 填充 * 4
LyerII和LyaerIII使用公式:
幀長度(字節)= (( 每幀采樣數 / 8 * 比特率 ) / 采樣頻率 ) + 填充
例: LayerIII 比特率 128000,采樣頻率 44100,填充0 =〉幀大小 417字節
MPEG1 MPEG2
1152 576
最大幀長:144*320/32 = 1440 最大幀長:72*160/22.05=522.45
最小幀長:144*32/44.1=104.49 最小幀長:72*8/16=36
每幀持續時間(單位:毫秒) :
每幀持續時間(ms) = 每幀采樣數 / 采樣頻率 * 1000
MPEG1 Layer III 采樣率為44.1KHz,一幀持續時間為26.12...不是整數,約等於 26ms。
MPEG2 Layer III 采樣率為16KHz, 一幀持續時間為72ms.
1152/44.1=26.12ms
1152/48=24ms
1152/32=36ms
576/22.05=26.12ms
576/24=24ms
576/16=36ms
幀頻 (單位:HZ):
幀頻 = 采樣頻率 / 每幀采樣數
采樣率為44.1KHz,幀頻38.12幀/s。
MPEG2 Layer III 采樣率為16KHz, 一幀持續時間為72ms.
44100/1152=38.28125
48000/1152=41.67
32000/1152=27.78
22050/576=38.28125
24000/576=41.67
16000/576=27.78
LayerIII |
MPEG 1 |
MPEG 2 (LSF) |
比特率Kbps |
|
|
0000 |
Free |
|
0001 |
32 |
8 |
0010 |
40 |
16 |
0011 |
48 |
24 |
0100 |
56 |
32 |
0101 |
64 |
40 |
0110 |
80 |
48 |
0111 |
96 |
56 |
1000 |
112 |
64 |
1001 |
128 |
80 |
1010 |
160 |
96 |
1011 |
192 |
112 |
1100 |
224 |
128 |
1101 |
256 |
144 |
1110 |
320 |
160 |
1111 |
Bad |
|
每幀采樣數Hz |
|
|
|
1152 |
576 |
采樣頻率Hz |
|
|
00 |
44100 |
22050 |
01 |
48000 |
24000 |
10 |
32000 |
16000 |
11 |
保留 |
MP3頭結構:
AAAAAAAA AAA BB CC D EEEE FFGH II JJ K L MM
11111111 111 11 00 0 1000 0001 00 00 1 1 00
11111111 111 11 01 0 1001 0001 00 00 1 1 00
11111111 111 11 01 1 1111 0001 00 00 1 1 00
符號i |
長度(bits) |
位置(bits) |
描述 |
例子 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A |
11 |
(31-21) |
幀同步(所有位置1) &0xFFF2 11位同步+MPEG2 &0xFFFA 11位同步+MPEG1 |
1111 1111 111 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
B |
2 |
(20,19) |
MPEG 音頻版本ID 00 – MPEG 2.5 01 – 保留 10 – MPEG 2 (ISO/IEC 13818-3) 11 – MPEG 1 (ISO/IEC 11172-3) 注:MPEG 2.5不是官方標准。幀頭第20個比特用來表示2.5版本。不支持該版本的應用程序一般認為該比特位置位為幀同步位,也就是說幀同步(A)的長度為12而不是這里規定的11,這樣B也就變成了1位(第19個位)。推薦使用該表的方法因為這樣允許你可以區分三個版本以獲得最高兼容性。 |
11 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C |
2 |
(18,17) |
Layer描述 00 - 保留 01 - Layer III 10 - Layer II 11 - Layer I |
01 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D |
1 |
(16) |
校驗位 0 - 緊跟幀頭后有16位即2個字節用作CRC校驗 1 - 沒有校驗 |
1 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E |
4 |
(15,12) |
位率索引
注:所有值單位為kbps,而且1kbit=1000bit而不是1024bit Free表示空閑,如果固定比特率(這種文件不能變換比特率)和上表定義的不同,應該有應用程序決定。這種情況的實現應該只用於內部目的因為第三方應用程序是沒有辦法找出正確比特率的。但是這么做並不是很重要況且還浪費精力。 Bad表示該值無效。 MPEG文件可以有VBR。表示文件的比特率可以變化。我已經知道了兩種慣用方法: 比特率變換(bitrate switching):每一幀都創建成不同的比特率。可以應用在任何層。LayerIII解碼器必須支持該方法。LayerI和LayerII也可以支持。 比特池(bit reservoir):比特率可以使從前面的幀中借來的(受限),以便騰出空間來容納輸入信號部分。然而這樣就導致各幀之間不再相互獨立,意味着不能隨便分割文件。這種方法只有LayerIII支持。 LyaerII中有一些不被允許比特率組合和模式。下表是允許的組合。
|
1001 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
F |
2 |
(11,10) |
采樣頻率(單位:Hz)
|
11 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
G |
1 |
(9) |
填充位 0 – 沒有填充 1 – 填充了一個額外的空位 填充用來達到正確的比特率。 例如:128k 44.1kHz LayerII使用了很多418bit或417bit長的幀來達到正確的128k比特率。LyaerI的空位有32bit長,LayerII和LayerIII的空位有8bit長。 |
0 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
H |
1 |
(8) |
私有bit,可以用來做特殊應用。例如可以用來觸發應用程序的特殊事件。 |
1 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I |
2 |
(7,6) |
聲道 00 立體聲 01 聯合立體聲(立體聲) 10 雙聲道(立體聲) 11 單聲道(單聲) 注:雙聲道文件由二個獨立的單聲道組成。 每一個聲道使用整個文件一半的位率。大多數的解碼器把它當作立體聲來輸出,但是它並不總是這種情況。按我的理解就是是兩個聲道的信息是完全相同的,並不能把它當作立體聲看待。 |
01 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
J |
2 |
(5,4) |
擴展模式(僅在聯合立體聲時有效) 擴展模式用來連接對立體聲效果無用的信息,來減少所需的資源。這兩個位在聯合立體聲模式下有編碼器動態指定。 完整的MPEG文件的頻率序列分成有32個子帶。在LayerI和LayerII中這兩個位確定強度立體聲應用的頻帶。 LayerIII中這兩個位確定應用了哪一種聯合立體聲(M/S stereo或者Intensity stereo)頻帶由解壓算法決定。
|
00 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
K |
1 |
(3) |
版權 0無版權 1有版權 |
1 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
L |
1 |
(2) |
原創 0 原創拷貝 1 原創 |
1 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
M |
2 |
(1,0) |
強調 00 - 無 01 - 50/15 ms 10 - 保留 11 - CCIT J.17 |
00 |
文檔:
http://mpgedit.org/mpgedit/mpeg_format/mpeghdr.htm
https://tools.ietf.org/html/rfc2250
https://tools.ietf.org/html/rfc1889
https://tools.ietf.org/html/rfc2038
https://tools.ietf.org/html/rfc3119
https://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header
https://blog.csdn.net/yu_yuan_1314/article/details/9112509
https://blog.csdn.net/cpq37/article/details/11213323
https://www.datavoyage.com/mpgscript/mpeghdr.htm
http://www.mp3-tech.org/tests/wma9/index.html MP3樣例下載