1

我正在将音频录制到 wav 文件中,并将相同的音频流式传输到扬声器(c++、、、vs2010win7。当我在扬声器中听到它时,我可以清楚地听到音频,但是当我将其写入 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; 
     } 
}

writeWav每次收到数据包时都会调用该函数(大小 = 1024)。

4

1 回答 1

1

看起来你的 for 循环是错误的。

要处理 1024 个项目,它应该是:

for (int i = 0; i < 1024; i++)
于 2013-03-24T14:22:21.370 回答