调试时 WASAPI 环回捕获中持续存在音频不连续性

Roy Li - MSFT 32,466 信誉分 Microsoft 供应商
2024-04-26T02:41:21.52+00:00

我正在编写一个程序,该程序使用 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总结而来

Windows API - Win32
Windows API - Win32
一组适用于桌面和服务器应用程序的核心 Windows 应用程序编程接口 (API)。 以前称为 Win32 API。
49 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Tong Xu - MSFT 2,036 信誉分 Microsoft 供应商
    2024-04-26T02:54:48.63+00:00

    你好, 欢迎来到 Microsoft Q&A!

    您可以在 Windows-classic-samples 问题中报告 CaptureSharedEventDriven 示例的问题,这可能没有考虑可以合理预期音频引擎已累积该多音频数据的情况。还可以参考专用环回示例 ApplicationLoopback

    谢谢。


    如果答案是正确的解决方案,请单击“接受答案”并请投赞成票。如果您对此答案有其他疑问,请点击“评论”。

    注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助