如何使用C++更改窗口的活动录制设备?

How can you change Window's active recording device using C++?

本文关键字:活动 C++ 何使用 窗口      更新时间:2023-10-16

关于为什么我想这样做来帮助你理解我的困境的细节:

我很高兴能够在Skype通话中将我的录音设备更改为立体声混音,以便人们可以听到我的音频。这是共享音乐/其他音频的有用工具。

真的很想把它编译成一个音板程序,这样我就可以按下一个按钮,让设备切换到立体声混音,播放声音,然后切换回来。

很简单,但我找不到使用程序更改录音设备的方法。

这个问题正是我想要回答的,但事实并非如此。如何编写软件来播放路由到录音设备的声音剪辑?

还有另一个线程(在C++中选择录音设备(Windows))教我如何找出我有多少录音设备,但没有真正告诉我如何更改它们。

一个可接受的答案是,没有简单的方法可以在不绕过Windows安全性的情况下做到这一点。

Skype 等应用程序绑定到特定的音频设备,并将其用于录制/播放目的。例如,如果Skype用户在音频设置下选择立体声混音作为麦克风设备,那么任何其他应用程序是否能够将其切换到其他设备?它甚至不是Windows安全性,它不止于此 - 您将尝试干扰正在使用的应用程序和API。

实现

这一点或多或少干净的方法是完全控制的虚拟设备,特别是将数据从/转发到那里的真实设备。与立体声混音类似,想象一下在Skype上选择的"我的可切换麦克风"设备,Skype正在从中获取数据。这已经内置到Skype中,只要设备实现遵循标准含义,Skype就能够从那里获取数据。从那里您可以自由地从另一个音频源进行真正的捕获,从网络接收,混合,合成波形。是的,您也可以即时切换底层设备 - 这一切都在您的控制之下。这样它就可以工作了。

标准 API 不允许您欺骗应用程序并伪造音频设备和数据。