记录5秒后,NAudio记录缓冲区已满

我正在使用从麦克风录制的Visual C#Studio制作程序。

我希望录制几分钟,但是当我尝试录制时,它会在录制5秒钟后显示“缓冲区已满”错误。

这是我正在使用的代码:

private void button2_Click(object sender, EventArgs e) //Play Button { fileName = "lastReplay.wav"; FileStream FS_Write = File.OpenWrite("lastReplay.wav"); FS_Write.Close(); int deviceNumber = sourceList.SelectedItems[0].Index; sourceStream = new NAudio.Wave.WaveIn(); sourceStream.DeviceNumber = deviceNumber; sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(44100, NAudio.Wave.WaveIn.GetCapabilities(deviceNumber).Channels); NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourceStream); sourceStream.DataAvailable += new EventHandler (sourceStream_DataAvailable); waveWriter = new NAudio.Wave.WaveFileWriter(fileName, sourceStream.WaveFormat); sourceStream.StartRecording(); } private void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e) { if (waveWriter == null) return; waveWriter.Write(e.Buffer, 0, e.BytesRecorded); waveWriter.Flush(); } 

有谁知道这是什么问题? 谢谢。

那里有一堆你不需要的代码。 摆脱创建空WAV文件。 此外,不需要WaveInProvider 。 实际上,这就是导致缓冲区完全exception的原因,因为没有任何东西正在读取它。