c++ - wav文件中奇怪的滴答声

标签 c++ audio audio-streaming wav pcm

我正在将音频录制到 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; 
     } 
}

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

最佳答案

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

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

for (int i = 0; i < 1024; i++)

关于c++ - wav文件中奇怪的滴答声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15599505/

相关文章:

c# - 流式音频中的降噪和压缩

C++ 平台特定包括

c++ - 是否有必要在构造函数初始化列表中调用默认构造函数?

c++ - 从线程调用的原子数据成员

java - 是否可以使用双簧管库同时在 Android 中打开 2 个麦克风?

android - 要在 android 中开发 icecast 源客户端需要额外的库吗?

c++ - 检查返回值是否被消费

java - 如何在Java游戏中播放声音?

java - 检测音频文件比特率 - 处理/Java

audio - Sphinx 的理想音频电平是多少?