用Winfrom实现
Demo中不是有吗?
http://naudio.codeplex.com
我一点没看懂 能给个源代码吗
@北京阿杰: 晚点弄个...
@幻天芒:
private IWaveIn waveIn; private WaveFileWriter writer; /// <summary> /// 开始录音 /// </summary> private void StartRecording() { if (waveIn != null) return; waveIn = new WaveIn {WaveFormat = new WaveFormat(8000, 1)};//设置码率 writer = new WaveFileWriter("test.wav", waveIn.WaveFormat); waveIn.DataAvailable += waveIn_DataAvailable; waveIn.RecordingStopped += OnRecordingStopped; waveIn.StartRecording(); } /// <summary> /// 停止录音 /// </summary> private void StopRecording() { waveIn.StopRecording(); waveIn.Dispose(); } /// <summary> /// 录音中 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void waveIn_DataAvailable(object sender, WaveInEventArgs e) { if (this.InvokeRequired) { this.BeginInvoke(new EventHandler<WaveInEventArgs>(waveIn_DataAvailable), sender, e); } else { writer.Write(e.Buffer, 0, e.BytesRecorded); int secondsRecorded = (int)(writer.Length / writer.WaveFormat.AverageBytesPerSecond);//录音时间获取 if (secondsRecorded >= 30) { StopRecording(); } } } /// <summary> /// 停止录音 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnRecordingStopped(object sender, StoppedEventArgs e) { if (this.InvokeRequired) { this.BeginInvoke(new EventHandler<StoppedEventArgs>(OnRecordingStopped), sender, e); } else { if (waveIn != null) // 关闭录音对象 { waveIn.Dispose(); waveIn = null; } if (writer != null)//关闭文件流 { writer.Close(); writer = null; } if (e.Exception != null) { MessageBox.Show(String.Format("出现问题 {0}", e.Exception.Message)); } } }
主要代码就这些,using一下内容:
using NAudio.Wave;
@幻天芒: 这个只能录mic的声音吧,不能录播放的声音
@lanvv: 你是指系统本身播放的声音?
@幻天芒: 大神,大神求命呀,我遇到一个问题。
writer.Write(e.Buffer, 0, e.BytesRecorded);
int secondsRecorded = (int)(writer.Length / writer.WaveFormat.AverageBytesPerSecond);//录音时间获取
就是这句执行之后,
这句就报错 waveIn.StopRecording();未将对像引有到实例。
@点灯网: 根据报错直接调试哇,这个错误很明确,检查waveIn这个对象。
@幻天芒: 但是根据上面的代码,这个waveIn 不应该为空呀
@点灯网: 直接改demo哇,我觉得这个demo挺全的。这个,光看代码不太容易看出问题。。。
@幻天芒: demo 好像没有源代码
我有的vs2010还打不开,提示用更新的vs建的项目,晕死
@点灯网: 升级到最新版本的开发工具把。
@幻天芒: 2015太重了
@点灯网: 还好~不需要装完。
@幻天芒: 我先去下载一个以前的Naudio