winapi - 使用 Waveform Audio API Windows 从扬声器捕获声音

标签 winapi audio audio-recording xaudio2

我想使用 Waveform Audio API 从扬声器捕获音频.

我搜索并找到了解释如何使用 Waveform Audio 从麦克风捕获音频并保存到文件或播放的帖子。但是,没有人解释如何从扬声器捕获音频。

我的理解是,如果我在 waveInOpen() 中提供播放设备的句柄然后我可以从扬声器捕捉声音。这是我需要帮助的地方。如何获取播放设备的句柄?当我提供 WAVE_MAPPER (or 0) for uDeviceID ,它总是从麦克风录制。如果我设置任何其他值,我总是会出现超出范围的错误。

编辑:

自从我发布问题以来,我做了更多的研究。我找到了可用于音频捕获的其他选项/API。我需要帮助来指出正确的方向,该方向用于从扬声器捕获音频。我不想要任何涉及大量代码的花哨的东西。我的目标操作系统是 XP 及以上。

WaveInOpen 和混音器:

对这些链接的评论/讨论暗示 waveInOpen()可用于从扬声器中获取音频。根据这些,必须打开Mixer。我用过mixerOpen()获得 blender handle ,但不知道如何将此 handle 与 waveInOpen() 一起使用.

How do I capture the audio that is being played?

Sound from mic vs sound from speaker

XAudio2:

我可以使用 XAudio2 从扬声器捕获音频吗?如果是,那么请分享一些示例代码。

最佳答案

API 不是为该用例设计的。扬声器输出是一个输出设备,由 waveOutOpen 访问.一种解决方法是安装虚拟声卡,如 the one at this like这将允许您将音频输出重定向回音频输入。

关于winapi - 使用 Waveform Audio API Windows 从扬声器捕获声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27992964/

相关文章:

html - 降低使用 recorderjs 创建的 WAV 文件的比特率

Android : java. lang.IllegalArgumentException:音频缓冲区大小无效

javascript - iOS safari 浏览器中录音的音频质量很差

windows - 是否有 Windows API 调用可以告诉我是否在 64 位操作系统上运行?

c++ - 绘制具有透明度的位图

c# - 我们什么时候需要将 ProcessStartInfo.UseShellExecute 设置为 True?

android - Android:录制和收听音频

windows - 启动 WinAPI 和 Qt?

java - 流式传输远程.mp4文件,但仅音频

javascript - 音频标签,播放请求被新的加载请求中断