gpt4 book ai didi

c# - 如何多次录制和播放音频,替换音频文件NAdio

转载 作者:行者123 更新时间:2023-12-03 02:15:06 28 4
gpt4 key购买 nike

我的代码来自各种NAudio教程。我做了一个简单的录音机。其中有一个录音按钮,先停止录音按钮,然后再播放按钮。对于第一次录音,它工作得非常好,我什至可以播放音频。但是每当我再次开始录制时,它就会显示错误,表明我的文件名正在被另一个进程使用。我不知道应该停止什么程序。

这是我的代码

    public void recorUser()
{
waveInStream = new WaveIn();
// writer = null;
writer = new WaveFileWriter(@"D:\2.wav", waveInStream.WaveFormat);
waveInStream.DataAvailable += new EventHandler<WaveInEventArgs>(waveInStream_DataAvailable);
waveInStream.StartRecording();
}
void waveInStream_DataAvailable(object sender, WaveInEventArgs e)
{
writer.Write(e.Buffer, 0, e.BytesRecorded);
}
public void stopRecordUser()
{
waveInStream.StopRecording();
waveInStream.Dispose();
waveInStream = null;
writer.Close();
writer = null;
}
public void playRecordedUser()
{
pcm = new WaveChannel32(new WaveFileReader(@"D:\2.wav"));
//.PadWithZeroes = false;
reductionStream = new BlockAlignReductionStream(pcm);
waveOutDevice = new DirectSoundOut();
waveOutDevice.PlaybackStopped += new EventHandler<StoppedEventArgs>(audioOutput_PlaybackStopped);
waveOutDevice.Init(reductionStream);
waveOutDevice.Play();
// pcm.Close();
// waveOutDevice.Dispose();
}

预先感谢您的回答。 :) 请帮我。

最佳答案

  • 不要使用BlockAlignReductionStream。无论您看到什么教程,都太过时了。
  • 使用AudioFileReader代替WaveFileReader和WaveChannel32。
  • 完成播放后(例如在PlaybackStopped处理程序中)处置音频文件阅读器
  • 关于c# - 如何多次录制和播放音频,替换音频文件NAdio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20673419/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com