標籤:
WAVE檔案格式是Microsoft為儲存多媒體的RIFF規範的一部分。一個RIFF檔案以一個檔案頭開始,然後是一系列的資料區塊。一個WAVE檔案常常僅由一個WAVE塊構成,WAVE塊包含一個說明格式的fmt塊和儲存取樣資訊的資料區塊。
標準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
(轉)WAVE PCM 音效檔格式