首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# CSCore在用户停止通话时停止录音

C# CSCore在用户停止通话时停止录音
EN

Stack Overflow用户
提问于 2017-07-21 20:39:10
回答 1查看 516关注 0票数 2

我目前正在尝试通过WasapiCapture和WaveWriter (CSCore包)录制音频,想在用户停止通话后停止录制。有人能帮我吗?

我想到的是,我可能会创建一个RecordingVolumeHandler,当音量低于某个阈值1到2秒时就会触发。我该怎么做呢?有没有办法从当前正在录制的音频输入中获取音量?

下面的代码是我用来启动和停止录制的两个函数。

代码语言:javascript
复制
    private WasapiCapture capture;
    private WaveWriter writer;

        private void startRecording()
    {
        capture = new WasapiCapture();
        capture.Initialize();
        writer = new WaveWriter("file.wav", capture.WaveFormat);
        capture.DataAvailable += (s, capData) =>
        {
            writer.Write(capData.Data, capData.Offset, capData.ByteCount);
        };
        capture.Start();
    }

    private void stopRecording()
    {
        if (writer != null && capture != null)
        {
            capture.Stop();
            writer.Dispose();
            capture.Dispose();
        }
    }

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2017-07-21 20:46:59

您可以添加Timer计数静默时间。当它到期时-停止录制。我还没有测试过这段代码。定时器可能不会重置,但思路应该是清晰的。

代码语言:javascript
复制
private WasapiCapture capture;
private WaveWriter writer;
private Timer silenceTimer;

public Constructor()
{
    silenceTimer = new Timer();
    silenceTimer.Interval = 5000; // 5 seconds
    silenceTimer.Elapsed +=SilenceTimerElapsed;
}

private void SilenceTimerElapsed(object sender, ElapsedEventArgs e)
{
    silenceTimer.Stop();
    stopRecording();
}

private void startRecording()
{
    capture = new WasapiCapture();
    capture.Initialize();
    writer = new WaveWriter("file.wav", capture.WaveFormat);
    capture.DataAvailable += (s, capData) =>
    {
        writer.Write(capData.Data, capData.Offset, capData.ByteCount);
        silenceTimer.Stop();
        silenceTimer.Start(); // Resetting timer
    };

    silenceTimer.Start();
    capture.Start();
}

private void stopRecording()
{
    if (writer != null && capture != null)
    {
        capture.Stop();
        writer.Dispose();
        capture.Dispose();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45237950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档