1

マイクから録音するVisualC#Studioを使用してプログラムを作成しています。

数分間録音したいのですが、録音しようとすると、5秒間録音した後、「BufferFull」というエラーが表示されます。

これは私が使用しているコードです:

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();
}

誰かが問題が何であるか知っていますか?ありがとう。

4

1 に答える 1

1

そこには必要のないコードがたくさんあります。空の WAV ファイルを作成する必要はありません。また、の必要はありませんWaveInProvider。実際、何も読み取っていないため、それがバッファフル例外の原因です。

于 2013-01-27T07:17:03.347 に答える