录音机
首先需要调用NAudio程序包;
安装完成后,新建一个类,并写入以下代码:
internal class NAudioRecorder
{
//public WaveIn waveSource = null;
public WaveInEvent waveSource = null;
public WaveFileWriter waveFile = null;
private string fileName = string.Empty;
/// <summary>
/// 第一步:设置录音结束后保存的文件路径
/// </summary>
/// <param name="fileName">保存wav文件的路径名</param>
public void SetFileName(string fileName)
{
this.fileName = fileName;
}
/// <summary>
/// 开始录音回调函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void waveSource_DataAvailable(object sender, WaveInEventArgs e)
{
if (waveFile != null)
{
waveFile.Write(e.Buffer, 0, e.BytesRecorded);
waveFile.Flush();
}
}
/// <summary>
/// 录音结束回调函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void waveSource_RecordingStopped(object sender, StoppedEventArgs e)
{
if (waveSource != null)
{
waveSource.Dispose();
waveSource = null;
}
if (waveFile != null)
{
waveFile.Dispose();
waveFile = null;
}
}
/// <summary>
/// 第二步:开始录音
/// </summary>
public void StartRec()
{
try
{
waveSource = new WaveInEvent();//保证电脑有麦克接入否则报错。
//waveSource.DeviceNumber = 0;//选择麦克风
waveSource.WaveFormat = new WaveFormat(16000, 16, 1); // 16KHz,16bit,单声道的录音格式
waveSource.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
//waveSource.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);
waveFile = new WaveFileWriter(fileName, waveSource.WaveFormat);
waveSource.StartRecording();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
/// <summary>
/// 第三步:停止录音
/// </summary>
public void StopRec()
{
waveSource.StopRecording();
// Close Wave(Not needed under synchronous situation)
if (waveSource != null)
{
waveSource.Dispose();
waveSource = null;
}
if (waveFile != null)
{
waveFile.Dispose();
waveFile = null;
}
}
}
引用一个类:
NAudioRecorder nAudio = new NAudioRecorder();
编程调用:
nAudio.SetFileName(@"E:\rec1.wav");//录音保存的音源路径
nAudio.StartRec();//开始录音
nAudio.StopRec();//停止录音
播放刚才录取的音源文件:
path = @"E:\rec1.wav";
System.Media.SoundPlayer player = new System.Media.SoundPlayer(path);
player.Play();