Как запустить и остановить аудиозапись автоматически? - PullRequest
0 голосов
/ 20 ноября 2018

Я работаю над записью звука, используя NAudio в C #, и мне нужно автоматически начать запись и автоматически остановить ее через 6 секунд.Он работает как для запуска и остановки через 6 секунд, но звук повторяется, и кажется, что он входит в бесконечный цикл.

Это код:

public partial class Form1 : Form
{
    System.Windows.Forms.Timer mytimer = new System.Windows.Forms.Timer(); //create a new Timer

    private WaveFileWriter RecordedAudioWriter = null;
    private WasapiLoopbackCapture CaptureInstance = null;

    public Form1()
    {
        InitializeComponent();
        mytimer.Interval = 6000; //set the interval to 1 second.
        mytimer.Tick += new EventHandler(mytimer_Tick);
        mytimer.Enabled = true;
    }

    private void mytimer_Tick(object sender, EventArgs e)
    {
        mytimer.Start();
        string outputFilePath = @"D:\deep\New\Transfare\tf-File\output\out.wav";

        // Redefine the capturer instance with a new instance of the LoopbackCapture class
        this.CaptureInstance = new WasapiLoopbackCapture();

        // Redefine the audio writer instance with the given configuration
        this.RecordedAudioWriter = new WaveFileWriter(outputFilePath, CaptureInstance.WaveFormat);

        // When the capturer receives audio, start writing the buffer into the mentioned file
        this.CaptureInstance.DataAvailable += (s, a) =>
        {
            this.RecordedAudioWriter.Write(a.Buffer, 0, a.BytesRecorded);
        };

        // When the Capturer Stops
        this.CaptureInstance.RecordingStopped += (s, a) =>
        {
            this.RecordedAudioWriter.Dispose();
            this.RecordedAudioWriter = null;
            CaptureInstance.Dispose();
        };
        // Start recording !
        this.CaptureInstance.StartRecording();
        stoprec(sender,e);
    }

  private void stoprec(object sender, EventArgs e)
  {
      this.CaptureInstance.StopRecording();
      this.mytimer.Enabled = false;
      this.Close();
  }

Не могли бы вы помочь мне?

...