偏移地址 | 字节数 | 数据类型 | 内 容 | |
文件头 | 00H | 4 | Char | "RIFF"标志 |
04H | 4 | int32 | 文件长度 | |
08H | 4 | Char | "WAVE"标志 | |
0CH | 4 | Char | "fmt"标志 | |
10H | 4 | | 过渡字节(不定) | |
14H | 2 | int16 | 格式类别 | |
16H | 2 | int16 | 通道数 | |
18H | 2 | int16 | 采样率(每秒样本数),表示每个通道的播放速度 | |
1CH | 4 | int32 | 波形音频数据传送速率 | |
20H | 2 | int16 | 数据块的调整数(按字节算的) | |
22H | 2 | | 每样本的数据位数 | |
24H | 4 | Char | 数据标记符"data" | |
28H | 4 | int32 | 语音数据的长度 |
将WAV文件格式定义为结构体WAVEFORMAT:
typedef struct tagWaveFormat
{
char cRiffFlag[4];
UIN32 nFileLen;
char cWaveFlag[4];
char cFmtFlag[4];
char cTransition[4];
UIN16 nFormatTag ;
UIN16 nChannels;
UIN16 nSamplesPerSec;
UIN32 nAvgBytesperSec;
UIN16 nBlockAlign;
UIN16 nBitNumPerSample;
char cDataFlag[4]; UIN32 nAudioLength; } WAVEFORMAT;
假设WAV文件内容读出后存放在指针buffer开始的内存单元内,则分析文件格式的代码很简单,为: