naudio 立即停止录音

问题描述

我正在尝试使用带有 naudio 的麦克风录制用户,但是在录制开始后,waveSource_RecordingStopped调用并且不再录制。

我想知道为什么会发生这种情况以及我该如何解决

这是我的代码

private WaveFileWriter waveFile = null;
private WaveIn waveSource = null;
private static bool isRecording = false;

private void record_Button_Click(object sender,RoutedEventArgs e)
    {
        string directory = System.IO.Directory.GetCurrentDirectory().Replace("\\bin\\Debug","");
        string saveLocation = System.IO.Directory.GetCurrentDirectory().Replace("\\voice-assistant_client\\voice-assistant_client\\bin\\Debug","");
        Soundplayer startRecording = new Soundplayer(directory + "\\sounds\\beep-start.wav");
        Soundplayer stopRecording = new Soundplayer(directory + "\\sounds\\beep-stop.wav");
        bool hasMicrophone = true;

        if (!isRecording)
        {
            waveSource = new WaveIn();
            waveSource.WaveFormat = new WaveFormat(44100,1);

            try
            {
                waveSource.StartRecording();
                waveSource.StopRecording();
            }
            catch (Exception exeption)
            {
                Console.WriteLine(exeption);
                hasMicrophone = false;
                this.error.Visibility = Visibility.Visible;
            }
            if (hasMicrophone)
            {
                this.error.Visibility = Visibility.Hidden;

                waveSource.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
                waveSource.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);

                waveFile = new WaveFileWriter(saveLocation + "/Test0001.wav",waveSource.WaveFormat);

                startRecording.PlaySync();
                waveSource.StartRecording();

                isRecording = true;
            }
        }
        else
        {
            waveSource.StopRecording();             
            stopRecording.PlaySync();

            isRecording = false;
        }
    }

    void waveSource_DataAvailable(object sender,WaveInEventArgs e)
    {
        if (waveFile != null)
        {
            waveFile.Write(e.Buffer,e.BytesRecorded);
            waveFile.Flush();
        }
    }

    void waveSource_RecordingStopped(object sender,StoppedEventArgs e)
    {
        if (waveSource != null)
        {
            waveSource.dispose();
            waveSource = null;
        }

        if (waveFile != null)
        {
            waveFile.dispose();
            waveFile = null;
        }
    }

感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)