【发布时间】:2013-03-24 09:56:14
【问题描述】:
我正在编写一个程序(c++,vs2010,win7),将音频记录到 wav 文件中。 当我尝试听到音频时,它有很多白噪声。 我试图用我写的另一个程序重新打开文件。这个程序唯一做的就是:
Char buffer[8000*60*2] = {}
File *wav, *out
Wav = fopen ("raw", "r+")
Out = fopen("out", "a+")
fread(buffer, sizeof (char) *8000*60*2,1,wav)
fwrite(buffer, sizeof (char) *8000*60*2,1,out)
fclose (wav)
fclose (out)
在我通过这个程序传递原始数据后,我可以听到原始 wav 文件的一小部分没有任何噪音(我大胆地打开它作为原始数据)。 我的问题是我没有更改数据中的任何内容,只是再次写入它,就像我能清楚地听到的魔法一样。 我错过了什么? 我没有对数据进行任何更改。 当我写数据时,我把它写成一个短变量。 数据短 fwrite(数据, 1024,1,wav)
【问题讨论】:
-
您意识到您正在附加到该输出文件,而不是重写它?
-
是的,无论如何它都是一个新文件。我可以将其更改为 w+,但结果相同
-
那么如果你只使用资源管理器复制文件,你会得到同样的效果吗?
-
我得到和 wav 文件一样的噪音
-
好的,所以你的程序产生了一些差异。如果您没有更改默认值,它应该以二进制方式读取/写入,但您可以尝试将“rb”和“wb”作为文件模式。
标签: c++ audio-streaming wav pcm