我正在将音频录制到 wav 文件中,并将相同的音频流式传输到扬声器(c++
、vs2010
、win7
)。
当我在扬声器中听到它时,我可以清楚地听到音频,但是当我将它写入 wav 文件时,我在音频中添加了奇怪的滴答声/电噪声,我尝试使用 audacity 打开文件,我可以清楚地看到每 0.05 秒出现一个峰值。
我不知道从哪里添加的噪音你能帮我吗?
我从我的代码中将写入添加到一个文件中:
writeWav(char *filename,short *data)
{
FILE *wav;
wav = fopen(filename,"ab+");
for(int i=0;i<1024;i++)
{
writeLE(data[i],2,wav);
}
fclose(wav);
}
void writeLE(short data,int nBytes,FILE *wav) //write in little-endian
{
unsigned buf;
while(nBytes > 0)
{
buf = word & 0xff;
fwrite(&buf,1,1,wav);
nBytes--;
word >>= 8;
}
}
每次接收到数据包(大小 = 1024)时都会调用函数 writeWav
。
最佳答案
看起来你的 for 循环是错误的。
要处理 1024 个项目,它应该是:
for (int i = 0; i < 1024; i++)
关于c++ - wav文件中奇怪的滴答声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15599505/