用c#将DirectSound CaptureBuffer的内容写入WAV文件

本文关键字:WAV 文件 DirectSound CaptureBuffer | 更新日期: 2023-09-27 18:02:38

我已经录制了音频到CaptureBuffer,但我不知道如何将其保存为wav文件。我试过这个(http://www.tek-tips.com/faqs.cfm?fid=4782),但它没有工作,或者我没有正确使用它。有人知道怎么解吗?示例代码将非常感谢。

用c#将DirectSound CaptureBuffer的内容写入WAV文件

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);
}