標准WAVE文件格式
偏移 |
長度(字節) |
變量名 |
描述 |
備注 |
0 |
4 |
ChunkID |
ASCII字符“RIFF”,大端形式 |
RIFF頭 |
4 |
4 |
ChunkSize |
36+SubChunk2Size,即:4 + (8 + SubChunk1Size) + (8 + SubChunk2Size),指除文件前8字節后的字節數 |
RIFF頭 |
8 |
4 |
Format |
ASCII字符“WAVE”,大端形式 |
RIFF頭 |
12 |
4 |
Subchunk1ID |
ASCII字符“fmt ”,大端形式 |
Fmt子塊 |
16 |
4 |
Subchunk1Size |
對於PCM文件為16。指除前8字節的Fmt塊大小 |
Fmt子塊 |
20 |
2 |
AudioFormat |
PCM=1,其他值指以某種形式壓縮(見表2) |
Fmt子塊 |
22 |
2 |
NumChannels |
單聲道=1,立體聲=2 |
Fmt子塊 |
24 |
4 |
SampleRate |
取樣率,取16000 |
Fmt子塊 |
28 |
4 |
ByteRate |
SampleRate * NumChannels * BitsPerSample/8 |
Fmt子塊 |
32 |
2 |
BlockAlign |
NumChannels * BitsPerSample/8,所有聲道中一個樣本數據的字節總數 |
Fmt子塊 |
34 |
2 |
BitsPerSample |
8或16 |
Fmt子塊 |
36 |
4 |
Subchunk2ID |
ASCII字符串“data” |
Data子塊 |
40 |
4 |
Subchunk2Size |
NumSamples * NumChannels * BitsPerSample/8,指數據中的字節數 |
Data子塊 |
44 |
* |
Data |
實際的聲音數據 |
表2 Format Code 格式編碼
格式編碼 |
預處理符號 |
數據 |
0x0001 |
WAVE_FORMAT_PCM |
PCM |
0x0003 |
WAVE_FORMAT_IEEE_FLOAT |
Ieee float |
0x0006 |
WAVE_FORMAT_ALAW |
8bits ITU-T G.711 A-law |
0x0007 |
WAVE_FORMAT_MULAW |
8-bit ITU-T G.711 u-law |
0xFFFE |
WAVE_FORMAT_EXTENSIBLE |
注意:
1)WAVE文件默認的字節順序是小端順序,若是大端順序用RIFX代替RIFF標識
2)取樣數據必須是偶數字節
3)8位取樣數據被存儲為無符號數,從0到255.16位的取樣數據被存儲為補碼,從-32768到32767
4)在wave數據流中可能有添加的子塊。每一個子塊有char SubChunkID[4],unsigned long SubChunkSize和SubChunkSize字節的數據
5)RIFF代表Resource Interchange File Format
轉自:http://blog.csdn.net/foxwit/article/details/5802389