標准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
