如何使用 WASAPI 在 C++ UWP 应用程序上捕获音频?

How to capture audio on c++ UWP app with WASAPI?

我似乎无法在 Internet 上找到任何有关我的问题的教程。
All the simple guide 不适合 UWP。

例如, 要使用 WASAPI 有这些步骤

但是枚举步骤,客户端必须调用CoCreateInstance. But from my understanding this function is not support in UWP. Also I failed at Line 30 when following this code.

所以,我试着理解这个,C++ UWP using WASAPI,但是我找不到任何枚举部分,这个项目对我来说非常复杂。 它包括许多其他文件(DeviceState.h、common.h)
而且我未能提取代码来创建我自己的应用程序。

我的问题是如何使用 WASAPI 在 C++ UWP 应用程序上捕获音频?

如果这个问题太白痴,我会把我的问题改成How to enumerate audio device in c++ UWP application?

而我之所以使用WASAPI是因为我想访问存储在Buffer中的数据。

编辑:
用于枚举。 https://github.com/Microsoft/Windows-universal-samples/blob/7c7832e1f144e4fc836603fd70e1352024a5fe1a/Samples/WindowsAudioSession/cpp/Scenario1.xaml.cpp#L85

是的,您可以使用 WASAPI 在 UWP 中进行音频捕获,这就是您引用的示例 (https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/WindowsAudioSession) 中所做的。

对于枚举,主要功能是 DeviceInformation::FindAllAsync 使用此选择器 MediaDevice::GetAudioCaptureSelector 它将允许您列出捕获设备。

对于流捕获,您需要的主要功能是 ActivateAudioInterfaceAsync,如果您只需要使用默认设备,它将允许您从设备 ID(特定设备)或设备 class(渲染或捕获)创建 IAudioClient。 一旦你有了这个IAudioClient,你就可以用它来得到一个IAudioClientCapture,基本上就是你在示例中看到的东西。