使用Qt录制系统声音

3
我有一个关于录制系统声音的问题(不是麦克风,而是整个PC发送到扬声器的所有声音)。我知道通常应该使用WASAPI或BASS,但是WASAPI文档太糟糕了(至少对我来说),我不知道他们实际上想让我做什么才能使这个工作。与优秀的Qt示例相比,BASS文档也没有那么吸引人。
是否有任何Qt封装器或类似的东西,可以让我以简单的方式捕获这个终点音频,而不必直接使用WASAPI呢?

Qt在Windows上仍然无法摆脱MME的困扰。 - dtech
那么有没有简单的方法来完成这个任务,而不需要分析微软提供的可怕示例?Qt采用简单的方式 - 只提供执行一个特定功能的代码部分,并简要解释为什么它看起来像那样。大多数情况下,它本身就是自我解释的。与此同时,微软提供了一个同时执行多个任务的示例,并让你独自面对“一个月或两个月后,你将猜测其中的内容以及为什么它看起来像那样”的情况。 - Khaine
嗯,它应该仍然可以与MME一起使用。问题在于,在Windows中,默认情况下禁用立体声混音录制。因此,请转到控制面板中的录音设备设置,右键单击麦克风和线路下方的空白处,选择“显示禁用设备”,然后启用它。之后,Qt应该能够看到它。 - dtech
嗯,程序是否可能自动启用它?我的意思是 - 我希望它是相当便携的,并且需要用户最少的干预。启用此设备并不像安装第三方音频驱动程序那样糟糕,该驱动程序模拟麦克风,同时作为端点音频记录器,我指的是这个-> http://vb-audio.pagesperso-orange.fr/Cable/index.htm。 然而,它仍然不是“我点击它就可以工作!耶!”实际上,我已经命令它显示禁用的设备,但我仍然没有看到任何新内容。 - Khaine
不是来自Qt。它只使用系统提供的内容。可能可以通过M$ API实现 - 我不知道,我尽量避免使用他们的东西。 - dtech
如果他们的所有内容都像WASAPI一样有文档记录,那么我真的很难感到惊讶。我应该在声音管理器中看到这个混音录音设备吗? - Khaine
1个回答

0
如评论中所述,在显示隐藏设备并从控制面板的声音设置中启用“立体声混音”录音设备后,该设备将随时可用于Qt。

enter image description here

您可以快速查询系统以验证以下内容:

auto info = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
foreach (auto i, info) qDebug() << i.deviceName();

对我来说输出:

"Microphone (Realtek High Defini"
"Stereo Mix (Realtek High Defini"

从那时起,您可以遵循Qt 文档教程


我在那里没有看到新设备,这正常吗? - Khaine
实际上,在我命令显示隐藏之后,没有要启用的东西。 没有新的内容。 - Khaine
在这种情况下,您的设备驱动程序可能不支持它。 - dtech
那是个问题 - 如果不仅我的驱动程序不支持它怎么办? - Khaine
这不是一个经常使用的功能。购买一个信号分配器、一根额外的电缆,将分配器插入输出线路,将一端连接到扬声器,将另一端连接到输入线路,然后就可以使用了。顺便说一句,我这里还有一款价值1000美元的专业USB音频接口,它也不支持立体声输出录制。 - dtech
另外,请记住可能有一种方法可以通过MS API实现,但我宁愿去拿电缆也不想处理那个... - dtech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接