我正在编写一个程序,该程序使用 WASAPI 环回捕获在 Windows 设备上捕获输出。原则上它工作正常,但是在我尝试调试它时,它会中断,从断点继续。
我可以在 Windows 自己的示例代码中重现这一点:我正在使用 CaptureSharedEventDriven 示例。
然后我按照说明将此演示更改为使用环回,这很简单:
在 GetDefaultAudioEndpoint 中将 eCapture 更改为 eRender
在 EnumAudioEndpoints 中将 eCapture 更改为 eRender
将AUDCLNT_STREAMFLAGS_LOOPBACK添加到 IAudioClient::Initialize 调用
现在,这可以正确捕获音频输出。但是,当我在 CWASAPICapture::Start(...)末尾添加断点(样本中的第 262 行)然后继续,从那时起捕获就变成了垃圾。捕获的音频每 1056 个样本显示不连续性(这也是 IAudioClient 的缓冲区大小),并且每次迭代都会错过 384 个样本。
此问题由: Persistent audio discontinuity in WASAPI loopback capture when debugging - Microsoft Q&A总结而来