我已将音频录制到CaptureBuffer,但我无法弄清楚如何将其保存到wav文件中。我已经尝试了这个(http://www.tek-tips.com/faqs.cfm?fid=4782),但它没有用,或者我没有正确使用它。有人知道如何解决这个问题吗?示例代码将非常感激。
答案 0 :(得分:5)
WAV文件是由两个主要“块”组成的RIFF文件。第一个是格式块,描述音频的格式。这将是您在(例如44.1kHz)记录的采样率,什么位深度(例如16位)和多少通道(单声道或立体声)。 WAV也支持压缩格式,但您不太可能记录压缩的音频,因此您的记录缓冲区将包含PCM音频。
然后是数据块。这是WAV文件中包含捕获缓冲区中实际音频数据的部分。这必须采用格式块中描述的格式。
作为NAudio项目的一部分,我创建了一个WaveFileWriter类来简化创建WAV文件。您传入一个描述捕获音频格式的WaveFormat。然后,您可以简单地将原始捕获的数据写入。
以下是一些关于如何使用WaveFileWriter的简单示例代码:
WaveFormat format = new WaveFormat(16000, 16, 1); // for mono 16 bit audio captured at 16kHz
using (var writer = new WaveFileWriter("out.wav", format)
{
writer.WriteData(captureBuffer, 0, captureBuffer.Length);
}