我有这个代码在这里:n音讯录音
NAudio.Wave.WaveIn sourceStream = null;
NAudio.Wave.DirectSoundOut waveOut = null;
NAudio.Wave.WaveFileWriter waveWriter = null;
private void button3_Click(object sender, RoutedEventArgs e) // Start
{
ShowImage();
sourceStream = new NAudio.Wave.WaveIn();
sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(44100, 2);
NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourceStream);
waveOut = new NAudio.Wave.DirectSoundOut();
waveOut.Init(waveIn);
sourceStream.StartRecording();
}
private void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
{
if (waveWriter == null) return;
waveWriter.WriteData(e.Buffer, 0, e.BytesRecorded);
waveWriter.Flush();
}
private void btnStop_Click(object sender, RoutedEventArgs e)
{
if (waveOut != null)
{
waveOut.Stop();
waveOut.Dispose();
waveOut = null;
}
if (sourceStream != null)
{
sourceStream.StopRecording();
sourceStream.Dispose();
sourceStream = null;
}
if (waveWriter != null)
{
waveWriter.Dispose();
waveWriter = null;
}
sourceStream = new NAudio.Wave.WaveIn();
sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(44100, 2);
sourceStream.DataAvailable += new EventHandler<NAudio.Wave.WaveInEventArgs>(sourceStream_DataAvailable);
waveWriter = new NAudio.Wave.WaveFileWriter(@"../../StoryImages/", sourceStream.WaveFormat);
sourceStream.StopRecording();
}
我在做正确吗?我看过教程并尝试过,但是在编程方面我真的很虚弱,这与缓冲区的问题似乎让我的整个应用程序崩溃。它总是说缓冲区已满。 Theres有问题
WriteData(e.Buffer,0,e.BytesRecorded);
我使用n音讯为此在WPF中,我使用Visual Studio 2010中
新naudio,因为我假设它有一些可用的数据(当开始录制时),然后它开始写 – user2376998
所以如果你开始你的应用程序只有按下按钮“开始”会发生什么。 ? – Tintenfiisch
它假设开始记录和显示图像,但它倾向于在几秒钟后出现此缓冲区已满的错误消息 – user2376998