簡體   English   中英

如何多次錄制和播放音頻,替換音頻文件NAdio

[英]how to record and play audio multiple times, replacing audio file NAdio

我在這里有各種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();
    }

預先感謝您的回答。 :) 請幫我。

  1. 不要使用BlockAlignReductionStream。 無論您看到什么教程,都太過時了。
  2. 使用AudioFileReader代替WaveFileReader和WaveChannel32。
  3. 完成播放后,處置音頻文件閱讀器(例如,在PlaybackStopped處理程序中)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM