#include <stdio.h>
int main(void){
int GetTimeLength() {
//获取声音文件数据的函数,pString参数指向要打开的声音文件;
HMMIO file;
//定义HMMIO文件句柄;
file=mmioOpen("E://Broken Angel.wav",NULL,MMIO_READWRITE);
//以读写模式打开所给的WAVE文件;
if(file==NULL) {
TRACE("WAV文件打开失败!");
return -1;
}
char style[3];
//定义一个四字节的数据,用来存放文件的类型;
mmioSeek(file,8,SEEK_SET);
//定位到WAVE文件的类型位置
mmioRead(file,style,3);
if(style[0]!='W'||style[1]!='A'||style[2]!='V'){
//判断该文件是否为"WAVE"文件格式
TRACE("该文件不是WAVE格式的文件!");
return -1;
}
PCMWAVEFORMAT format;
//定义PCMWAVEFORMAT结构对象,用来判断WAVE文件格式;
mmioSeek(file,20,SEEK_SET);
//对打开的文件进行定位,此时指向WAVE文件的PCMWAVEFORMAT结构的数据;
mmioRead(file,(char*)&format,sizeof(PCMWAVEFORMAT));
//获取该结构的数据;
mmioSeek(file,42,SEEK_SET);
//获取WAVE文件的声音数据的大小;
unsigned long size;
mmioRead(file,(char*)&size,3);
//计算文件时长
int timeLength;
timeLength = size/format.wf.nAvgBytesPerSec;
mmioClose(file, 0);
return timeLength;
}
return 1;
}