wav 格式结构
WAV文件遵循RIFF规则,其内容以区块(chunk)为最小单位进行存储。WAV文件一般由3个区块组成:RIFF chunk、Format chunk和Data chunk。另外,文件中还可能包含一些可选的区块,如:Fact chunk、Cue points chunk、Playlist chunk、Associated data list chunk等。
本文将只介绍RIFF chunk、Format chunk和Data chunk。

实战分析

RIFF chunk
| 名称 | 数据 | 备注 |
|---|---|---|
| ChunkID | “RIFF” | wave 文件为 RIFF 资源的一种 |
| chunkSize | 0x000019d8(6616) | 文件总字节数 -8 (及不包括 chunkID 和 chunksize 的大小) |
| format | ”WAVE" | 说明该 RIFF 资源为 wave(Type是WAVE表示后面需要两个子块:Format区块和Data区块) |

fmt chunk
| 名称 | 数据 | 备注 |
|---|---|---|
| ID | "fmt " | 标识 |
| Size | 0x00000010 | 不包含ID和Size的长度 |
| audioFormat | 0x01 | PCM音频数据的值为1 |
| NumChannels | 0x01 | 通道数 |
| SampleRate | 0x00005622(22050) | 采样率 |
| ByteRate | 0x00005622(22050) | 每秒码率(byte/s) = SampleRate * NumChannels * BitsPerSample / 8 |
| BlockAlign | 0x0001 | 每个采样所需的字节数 = NumChannels * BitsPerSample / 8 |
| BitsPerSample | 0x08 | 每个采样存储的bit数,8:8bit,16:16bit,32:32bit |
data chunk
| 名称 | 数据 | 备注 |
|---|---|---|
| ID | “data” | |
| size | 0x000019b4(6580) | |
| data | WAV文件以小端形式来进行数据存储 |




















