问题
I'm making a program using Visual C# Studio that records from a microphone.
I wish to record for a few minutes, but when I try to record, it shows me an error with 'Buffer Full' after it records for 5 seconds.
This is the code I'm using:
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<NAudio.Wave.WaveInEventArgs>
(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();
}
Does anyone knows what is the problem? Thanks.
回答1:
There's a bunch of code in there you don't need. Get rid of creating the empty WAV file. Also, there is no need for the WaveInProvider
. In fact, that is what is causing the buffer full exception, since nothing is reading from it.
来源:https://stackoverflow.com/questions/14538098/naudio-record-buffer-full-after-5-seconds-of-recording