c#录音
时间: 2023-07-10 14:07:16 浏览: 194
在 C# 中录制音频,可以使用 .NET Framework 提供的 System.Media 命名空间中的类。以下是一个简单的录音示例:
```csharp
using System;
using System.IO;
using System.Media;
class Program
{
static void Main(string[] args)
{
// 创建录音器对象
using (var recorder = new SoundRecorder())
{
// 开始录音
recorder.Start();
Console.WriteLine("正在录音,按任意键停止录音...");
Console.ReadKey();
// 停止录音
recorder.Stop();
Console.WriteLine("录音已停止。");
// 保存录音文件
var fileName = "record.wav";
recorder.SaveToFile(fileName);
Console.WriteLine($"录音文件已保存至:{Path.GetFullPath(fileName)}");
}
}
}
// 录音器类
class SoundRecorder : IDisposable
{
private readonly MemoryStream _stream;
private readonly SoundPlayer _player;
private readonly WaveFileWriter _writer;
private readonly WaveIn _waveIn;
public SoundRecorder()
{
_stream = new MemoryStream();
_player = new SoundPlayer(_stream);
_writer = new WaveFileWriter(_stream, new WaveFormat(44100, 16, 2));
_waveIn = new WaveIn();
_waveIn.DataAvailable += WaveIn_DataAvailable;
}
public void Start()
{
_waveIn.StartRecording();
}
public void Stop()
{
_waveIn.StopRecording();
}
public void SaveToFile(string fileName)
{
_writer.Flush();
File.WriteAllBytes(fileName, _stream.ToArray());
}
private void WaveIn_DataAvailable(object sender, WaveInEventArgs e)
{
_writer.Write(e.Buffer, 0, e.BytesRecorded);
}
public void Dispose()
{
_waveIn.Dispose();
_writer.Dispose();
_player.Dispose();
_stream.Dispose();
}
}
```
此示例使用 WaveIn 和 WaveFileWriter 类来录制音频,并将其保存为 WAV 文件。在录音期间,可以按任意键停止录音,然后将录音文件保存到磁盘上。
值得注意的是,此示例用于演示目的,可能需要进行一些优化和错误处理。例如,当录音期间发生异常时,可能需要及时停止录音并释放资源,以避免内存泄漏等问题。
阅读全文