WAVE文件头信息以及PCM数据的读取(C++版本)

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WA VE文件头信息以及PCM数据的读取

/*************文件的处理方法**************/

#include "math.h"

#include

using namespace std;

#define N 200 //观察前面的200点的PCM数据

float *Read_Data(FILE *fp_speech,int front_info);//读取PCM数据的关键函数

int main()

{

FILE *fp;

fp=fopen("E:\\aaa.wav","rb");//为读,打开一个wav文件

if((fp=fopen(""E:\\aaa.wav"","rb"))==NULL) //若打开文件失败,退出

{

printf("can't open this file\n");

exit(0);

}

/*********RIFF WA VE Chunk的输出*********/

/****************************************

RIFF WAVE Chunk

==================================

| |所占字节数| 具体内容|

==================================

| ID | 4 Bytes | 'RIFF' |

----------------------------------

| Size | 4 Bytes | |

----------------------------------

| Type | 4 Bytes | 'WA VE' |

******************************************/

char id_RIFF[4],type_RIFF[4];

int size_RIFF;

cout<

//读取ID=RIFF 4字节

fseek(fp,0L,0);

fread(id_RIFF,sizeof(int),1,fp);

cout<<"RIFF标识:"<

//读取文件大小4字节

fseek(fp,4L,0);

fread(&size_RIFF,sizeof(int),1,fp);

cout<<"文件大小:"<

//读取W AVE标识4字节

fseek(fp,8L,0);

fread(type_RIFF,sizeof(int),1,fp);

cout<<"WA VE标识:"<

/*******Format Chunk的输出*******/

/****************************************

Format Chunk

================================================================== ==

| | 字节数| 具体内容|

================================================================== ==

| ID | 4 Bytes | 'fmt ' |

--------------------------------------------------------------------

| Size | 4 Bytes | 数值为16或18,18则最后有附加信息|

-------------------------------------------------------------------- ----

| FormatTag | 2 Bytes | 编码方式,一般为0x0001 | |

-------------------------------------------------------------------- |

| Channels | 2 Bytes | 声道数目,1--单声道;2--双声道| |

-------------------------------------------------------------------- |

| SamplesPerSec | 4 Bytes | 采样频率| |

-------------------------------------------------------------------- |

| AvgBytesPerSec| 4 Bytes | 每秒所需字节数| |===> W AVE_FORMA T -------------------------------------------------------------------- |

| BlockAlign | 2 Bytes | 数据块对齐单位(每个采样需要的字节数) | |

-------------------------------------------------------------------- |

| BitsPerSample | 2 Bytes | 每个采样需要的bit数| |

-------------------------------------------------------------------- |

| | 2 Bytes | 附加信息(可选,通过Size来判断有无)| |

-------------------------------------------------------------------- ----

******************************************/

char id_FORMA T[4];

int size_FORMA T,SamplesPerSec,AvgBytesPerSec;

short int FormatTag,Channels,BlockAlign,BitsPerSample,addinfo;

相关文档
最新文档