c#中的时间延迟后自行停止录音机(使用NAudio) [英] Stop audio recorder on its own after time delay in c# ( using NAudio)

查看:577
本文介绍了c#中的时间延迟后自行停止录音机(使用NAudio)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用C#中的NAudio录制音频,我需要卸下使用的停止按钮,并在经过一段时间的延迟后自行停止录制.

I am making an audio recorded using NAudio in C# and i need to remove the stop button used and simply stop the recording on its own after some time delay.

记录事件的代码是

     private void cmbRecord_Click(object sender, EventArgs e)
     {
            outputFilename = "file address";

            waveInStream = new WaveIn(44100,2);
            writer = new WaveFileWriter(outputFilename, waveInStream.WaveFormat);

            waveInStream.DataAvailable += new EventHandler<WaveInEventArgs>(waveInStream_DataAvailable);
            waveInStream.StartRecording();


            // Just controling the objects on the screen.
            cmbRecord.Enabled = false;
            cmbStop.Enabled = true;

    } 


     void waveInStream_DataAvailable(object sender, WaveInEventArgs e)
    {
        writer.WriteData(e.Buffer, 0, e.BytesRecorded);
        int secondsRecorded = (int)(writer.Length / writer.WaveFormat.AverageBytesPerSecond);

    }

停止"按钮显示为

      private void cmbStop_Click(object sender, EventArgs e)
    {
        waveInStream.StopRecording();
        waveInStream.Dispose();
        waveInStream = null;
        writer.Close();
        writer = null;

        cmbRecord.Enabled = true;
        cmbStop.Enabled = false;
    }

我需要在cmbRecord_Click事件中自动停止录制. 预先感谢.

I need to stop the recording automatically inside the cmbRecord_Click event. Thanks in advance.

推荐答案

使用计时器,设置Interval并将cmbStop_Click事件中的代码复制到计时器的OnTick事件中.在mbRecord_Click事件中启用计时器,然后&记得在cmbStop_Click事件

use a Timer, set the Interval and copy the code in cmbStop_Click event over to timer's OnTick event. Enable the timer in the mbRecord_Click event and & remember to disable the timer in cmbStop_Click event

创建一个新计时器并设置其值

Create a new timer and set its value

//将此行放入表单类级别

//put this line in your form class level

  System.Windows.Forms.Timer mytimer=new System.Windows.Forms.Timer(); //create a new Timer

//在InitializeComponent()之后,将这两个代码放入表单构造函数中;

//put these two into your form constructor just after InitializeComponent();

mytimer.Interval=1000; //set the interval to 1 second.
mytimer.Tick += new EventHandler(mytimer_Tick);

在mbRecord_Click事件中启用计时器

Enable the timer in the mbRecord_Click event

private void cmbRecord_Click(object sender, EventArgs e)
{
            outputFilename = "file address";

            waveInStream = new WaveIn(44100,2);
            writer = new WaveFileWriter(outputFilename, waveInStream.WaveFormat);

            waveInStream.DataAvailable += new EventHandler<WaveInEventArgs>(waveInStream_DataAvailable);
            waveInStream.StartRecording();


            // Just controling the objects on the screen.
            cmbRecord.Enabled = false;
            cmbStop.Enabled = true;

            //Enable the timer to fire
            mytimer.Enabled = true;

}

1秒后停止录制.

void mytimer_Tick(object sender, EventArgs e)
{       
        waveInStream.StopRecording();
        waveInStream.Dispose();
        waveInStream = null;
        writer.Close();
        writer = null;

        cmbRecord.Enabled = true;
        cmbStop.Enabled = false;
//disable the timer here so it won't fire again...
        mytimer.Enabled = false;
}

这篇关于c#中的时间延迟后自行停止录音机(使用NAudio)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆