1、wav音频文件的格式
wav文件由文件头和采样数据2部分组成。
文件头又分为RIFF(Resource Interchange File Format)、WAVE文件标识段 和 声音数据格式说明段组成。
各段的起始地址分别由RIFF标识符、WAVE标识符、以及波形格式标识符(FMT)标定。
(1)文件头格式
注意:下面的地址是连续的
(2)数据格式
虽然上图给出的数据标识符起始地址刚好是文件头的末地址+1,但并不代表总是这样。
因此,我们在读取数据时最好是找到数据标识符,该标识符的4个字节刚好是'd'、‘a’、‘t’、‘a’。
2、C语言读取wav文件
首先对一些类型使用了重定义
typedef unsigned char uchar;
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned long uint32;
typedef char sint8;
typedef short sint16;
typedef long sint32;
typedef float fp32;
typedef double fp64;
typedef enum BOOLEAN
{
TRUE = 1,
FALSE = 0
} boolean;
(1)wav结构体定义
//wave文件头
typedef struct WaveHeader
{
uint8 riff[4]; //资源交换文件标志
uint32 size; //从下个地址开始到文件结尾的字节数
uint8 wave_flag[4]; //wave文件标识
uint8 fmt[4]; //波形格式标识
uint32 fmt_len; //过滤字节(一般为00000010H)
uint16 tag; //格