如何将音频流从输出设备发送到输入设备?

Posted

技术标签:

【中文标题】如何将音频流从输出设备发送到输入设备?【英文标题】:How can I send an audio stream from the output device to an input device? 【发布时间】:2015-01-20 20:04:20 【问题描述】:

我正在开展一个项目,我正在通过软件电话通过电话向某人播放使用 naudio 的波形文件。打电话的人戴着 USB 耳机(这是一个外部声卡)需要能够与波形文件一起说话。现在,我正在使用双 3.5 毫米音频线从输出到计算机背面的输入来实现这一点。这让我不得不使用板载声卡来发出声音,而耳机则让人说话,这意味着我必须按需切换默认输入音频设备以允许听到人或听到声音.这会导致软件电话应用出现问题,具体取决于其设备的设置方式。我想完全去掉板载声卡。我想将我的波形音频和说话的人都发送到同一个输入设备中。

当我播放音频时,这是我调用的代码:

WaveStream waveStream = new WaveFileReader(@"C:\Users\Public\Music\tester.wav");

WaveOut waveOut = new WaveOut();

waveOut.DeviceNumber = int.Parse(device1);

WaveOut.Init(waveStream);

WaveOut.Play();

此时,我不仅希望发送到选定的输出设备,还希望发送到输入设备。有什么简单的方法可以做到这一点吗?提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

不幸的是,各种 Windows 音频 API 无法让您将实际输入设备接收的音频替换为您自己的音频,因此您无法使用 NAudio 开箱即用地实现这一点。您需要的是创建一个虚拟音频输入设备。这是相当多的工作,所以最简单的解决方案是购买类似Virtual Audio Cable 的东西,这样您就可以创建虚拟声音设备并将它们拼凑在一起。

【讨论】:

谢谢马克,我很害怕。我通过将耳机输入发送到板载输出找到了一个临时解决方法(从输入到输出似乎更容易,然后反过来),但我昨晚测试了它,它似乎导致音频质量大幅下降.波浪听起来不错,但声音很糟糕。希望我能找到解决办法。

以上是关于如何将音频流从输出设备发送到输入设备?的主要内容,如果未能解决你的问题,请参考以下文章

将音频流读取到输出设备

如何将系统麦克风音频流传输到附加设备的麦克风音频流

如何将音频 HEX 文件发送到 Ble 设备

如何将音频输出发送到 Apple TV?

将音频源(并发)动态发送到 ASIO 设备上的特定通道

如何更改 Objective-C 中的音频输出设备?