对.wav合适文件进行处理。
我的思路是:创建一个数组,用fread把.wav文件一点点读进来。
问题1 但是我不太懂如何播放声音?如果我希望利用这个数组播放声音,而不是直接利用原文件,如何操作?
问题2 另问个比较初级的问题:.wav格式的文件每次读入量是多少?是否是单声道的是8bit(1),双声道是16bit(2)?
问题3 我定义数组的时候,由于未必知道文件大小,所以随便划了一块,这样就没有广泛的应用性,请问各位高人,有什么好的解决办法吗?以下是我的代码,请大家帮忙#include "stdio.h"
void fileread()
{
FILE *stream;
char *fileread;
int k=0;
fileread=new char[1024*100]; if ((stream=fopen("f:\\matlab\\work\\test.wav","r+b"))!=NULL)
{
for(k=0;!feof(stream);k++)
{
fread(fileread+k,sizeof(char),1,stream);
}
printf("ok\n"); fclose(stream);
}
else
printf("file could not be opened\n");
delete[]fileread;
}
我的思路是:创建一个数组,用fread把.wav文件一点点读进来。
问题1 但是我不太懂如何播放声音?如果我希望利用这个数组播放声音,而不是直接利用原文件,如何操作?
问题2 另问个比较初级的问题:.wav格式的文件每次读入量是多少?是否是单声道的是8bit(1),双声道是16bit(2)?
问题3 我定义数组的时候,由于未必知道文件大小,所以随便划了一块,这样就没有广泛的应用性,请问各位高人,有什么好的解决办法吗?以下是我的代码,请大家帮忙#include "stdio.h"
void fileread()
{
FILE *stream;
char *fileread;
int k=0;
fileread=new char[1024*100]; if ((stream=fopen("f:\\matlab\\work\\test.wav","r+b"))!=NULL)
{
for(k=0;!feof(stream);k++)
{
fread(fileread+k,sizeof(char),1,stream);
}
printf("ok\n"); fclose(stream);
}
else
printf("file could not be opened\n");
delete[]fileread;
}
使用mmio的方式wav文件的播放:
使用directsound只牵涉到文件播放则方法很多,不赘述