wav文件中奇怪的滴答声

Posted

技术标签:

【中文标题】wav文件中奇怪的滴答声【英文标题】:weird ticking noise in wav file 【发布时间】:2013-03-24 14:13:26 【问题描述】:

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

【问题讨论】:

我从 Udp 线程中的接收器获取音频的接收数据包。我将相同的数据发送到扬声器和文件。我确定是我写的东西,数据很好。 【参考方案1】:

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

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

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

【讨论】:

对不起,我在这里打错了。在我的代码中,它写成 1024。我现在编辑了代码 这也是为什么writeLE参数被称为“数据”而在正文中被称为“单词”的原因吗? 这只是 var 名称。还有什么意思? 没有名为“word”的变量。 函数writeLE的第一行是var word的声明

以上是关于wav文件中奇怪的滴答声的主要内容,如果未能解决你的问题,请参考以下文章

Xcode中奇怪的promiseKit 6语法行为

zsh 中奇怪的“工作”行为

列表理解中奇怪的 lambda 行为

Oracle中奇怪的SQL执行结果[关闭]

Swift 中奇怪的 UInt64 行为

Firefox 中奇怪的表格渲染