winform Naudio 录音与播放
时间: 2023-08-01 21:10:05 浏览: 57
在WinForm中使用NAudio库来实现录音和播放音频非常方便。以下是一个示例代码,可以用来录制和播放WAV文件:
```csharp
public partial class Form1 : Form
{
private WaveIn waveIn;
private WaveOut waveOut;
private WaveFileWriter waveWriter;
public Form1()
{
InitializeComponent();
}
private void btnRecord_Click(object sender, EventArgs e)
{
waveIn = new WaveIn();
waveIn.WaveFormat = new WaveFormat(44100, 16, 2); // 设置录音参数
waveIn.DataAvailable += WaveIn_DataAvailable; // 订阅录音数据可用事件
waveWriter = new WaveFileWriter("output.wav", waveIn.WaveFormat); // 创建WAV文件写入器
waveIn.StartRecording(); // 开始录音
}
private void WaveIn_DataAvailable(object sender, WaveInEventArgs e)
{
// 将录音数据写入WAV文件
waveWriter.Write(e.Buffer, 0, e.BytesRecorded);
}
private void btnStop_Click(object sender, EventArgs e)
{
waveIn.StopRecording(); // 停止录音
waveIn.Dispose();
waveWriter.Dispose(); // 关闭WAV文件写入器
}
private void btnPlay_Click(object sender, EventArgs e)
{
waveOut = new WaveOut();
var waveFileReader = new WaveFileReader("output.wav"); // 创建WAV文件读取器
waveOut.Init(waveFileReader); // 初始化播放对象
waveOut.Play(); // 开始播放
}
private void btnStopPlayback_Click(object sender, EventArgs e)
{
waveOut.Stop(); // 停止播放
waveOut.Dispose();
}
}
```
以上代码使用了NAudio库中的WaveIn、WaveOut、WaveFileWriter和WaveFileReader类来处理音频数据和文件输出。在WinForm中,你可以将上述代码添加到你的窗体类中,然后在窗体上放置四个按钮,分别用于开始录音、停止录音、开始播放和停止播放。点击按钮时,它们会调用对应的函数来实现相应的功能。