WAV格式简介#
WAV = PCM数据 + WAV文件头
-
数据块的记录方式是little-endian字节顺序
-
WAV头格式如下:
| offset address | size | type | content |
|---|---|---|---|
| 00H~03H | 4 | char | 资源交换文件标志(RIFF) |
| 04H~07H | 4 | int32 | 从下个地址开始到文件尾的总字节数 |
| 08H~0BH | 4 | char | WAV文件标志(WAVE) |
| 0CH~0FH | 4 | char | 波形格式标志(fmt ),最后一位空格。 |
| 10H~13H | 4 | int32 | 过滤字节(一般为00000010H),若为00000012H则说明数据头携带附加信息(见“附加信息”)。 |
| 14H~15H | 2 | int16 | 格式种类(值为1时,表示数据为线性PCM编码) |
| 16H~17H | 2 | int16 | 通道数,单声道为1,双声道为2 |
| 18H~1BH | 4 | int32 | 采样频率 |
| 1CH~1FH | 4 | int32 | 波形数据传输速率(每秒平均字节数) |
| 20H~21H | 2 | int16 | DATA数据块长度,字节。 |
| 22H~23H | 2 | int16 | PCM位宽 |
| 随后2字节 | 2 | int16 | 附加信息(可选,由上方过滤字节确定) |
| 随后 | ... | 不定长度字符 | “fact”,该部分是可选部分,一般当WAV文件是由某些软件转换而来时,包含该部分。若包含该部分:(1)该部分的前4字节为数据头,一般为4个字母。(2)随后4个字节表示长度,即除去头(4字节)和长度(4字节)之后,数据本身的长度。(3)最后的字节为数据本身。例如:“66 61 73 74 04 00 00 00F8 2F 14 00” 。“66 61 73 74”是fact字段的数据头,“04 00 00 00”是数据本身的长度,“F8 2F 14 00”是数据本身。(注意是little-endian字节顺序) |
| 随后4字节 | 4 | cahr | 数据标志符(data) |
| 随后4字节 | 4 | int32 | DATA总数据长度字节 |
| 随后 | ... | DATA数据块 |
- 示例
