c# - 在 PC 上以流的形式实时捕获音频

标签 c# naudio

在 NAudio 中,您可以使用此代码捕获音频

capture.Start();
Console.ReadKey();
capture.Stop();

但我不想等待 capture.Stop(); 我想访问捕获并立即将其流式传输到另一个音频设备,例如在 CsCore 中,您可以流式传输语音合成这段代码

using (var stream1 = new MemoryStream())
     using (var speechEngine1 = new SpeechSynthesizer())
     {
       speechEngine1.SetOutputToWaveStream(stream1);
       speechEngine1.Speak(text_to_read);
       using (var waveOut1 = new CSCore.SoundOut.WaveOut { 
            Device = new WaveOutDevice(audio_device_id) })
            using (var waveSource1 = new MediaFoundationDecoder(stream1))
                 {
                  waveOut1.Initialize(waveSource1);
                  waveOut1.Play();
                  waveOut1.WaitForStopped();
                  }
      }

我可以做类似这段代码的事情吗,但不是语音合成,我想将我的默认音频设备流式传输到另一个音频设备。

最佳答案

您可以通过订阅事件来获取字节 block 。 https://github.com/naudio/NAudio/blob/master/Docs/WasapiLoopbackCapture.md

capture.DataAvailable += (s, a) =>
{
    writer.Write(a.Buffer, 0, a.BytesRecorded);
    if (writer.Position > capture.WaveFormat.AverageBytesPerSecond * 20)
    {
        capture.StopRecording();
    }
};

关于c# - 在 PC 上以流的形式实时捕获音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59955065/

相关文章:

c# - 为什么多次调用 app.UseEndpoints(..) 时中间件不执行?

c# - C# 中的 MVC 与 VB 中的 Webforms 共存。它会发生吗?

c# - 在 Visual Studio 中 Hook 构建过程

c# - NAudio效果不起作用,并且在不同的声卡上的行为不同

vb.net - 使用 NAudio 流式传输非 PCM 原始音频

c# - 使用NAudio录音时如何显示录音时间?

c# - 我正在尝试制作我的统一程序,检测地形并更改足迹/环境,但是我发现可以检测到它的代码未编译

c# - 将 Signal R 整合到现有的 Web 应用程序中

c# - NAudio fft 结果给出所有频率的强度 C#

c# - 听到来自麦克风的传入音频