在使用QT的过程中,需要用到wav文件的长度,就尝试把它的文件格式解析了一下。
查阅了很多资料,发现很多说的不全或比较模糊,在代码后面会有一些经过实际检验的知识补充。
//头文件主要包括几个数据结构:
typedef unsigned short WORD;
typedef unsigned long DWORD;
struct RIFF_HEADER
{
char szRiffID[4]; // 'R','I','F','F'
DWORD dwRiffSize; //=(size of file) - 8 Byte
char szRiffFormat[4]; // 'W','A','V','E'
};
struct WAVE_FORMAT
{
WORD wFormatTag; /* format type */
WORD nChannels; /* number of channels (i.e. mono, stereo...) */
DWORD nSamplesPerSec; /* sample rate */
DWORD nAvgBytesPerSec; /* for buffer estimation */
WORD nBlockAlign; /* block size of data */
WORD wBitsPerSample; /* number of bits per sample of mono data */
//WORD cbSize;