c++ - 如何使用 C++ 更改 Window 的事件记录设备?

标签 c++ audio device audio-recording recording

详细说明我为什么要这样做,以帮助您理解我的困境:

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

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

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

这个问题正是我想要回答的问题,但事实并非如此。 How can I write software to play sound clips routed into the recording device?

还有另一个线程 ( Select recording device in C++ (Windows) ) 教我如何找出我有多少录音设备,但实际上没有告诉我如何更改它们。

一个可接受的答案是,没有绕过 Windows 现有安全措施的简单方法。

最佳答案

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

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

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

关于c++ - 如何使用 C++ 更改 Window 的事件记录设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18649929/

相关文章:

C++ 程序不会使用此处不允许的预期表达式和函数进行编译

c++ - 我可以在 C++ 中获得有关此 C 样式字符串的帮助吗?

c++ - 在 C++ 中实现接口(interface)功能

python - 如何在Python/Linux中更快地加载和重新采样(MP3)音频文件?

ios - 使用 Xamarin 运行 calabash-ios 时无法指定设备

c++ - 使用基于数组的列表 c++ 合并 2 个数组

xcode - 每次运行该应用程序时,如何一次运行一个循环的声音文件?

Android开发在单击按钮时播放多个声音文件

windows - 将设备管理器导出到 txt 文件

android - 将设备连接到 Windows 10 上的 Android Studio