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

我似乎无法在网上找到任何关于我的问题的教程.

所有
the simple guide都不适合UWP.

例如,
要使用WASAPI,请执行以下步骤

>枚举设备
>捕获音频
>播放(渲染)音频

但是枚举步骤,客户端必须调用CoCreateInstance.但是从我的理解这个功能is not support in UWP.我在this code跟随30号线时失败了.

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

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

如果这个问题太过分了,我会将我的问题改为如何在c UWP应用程序中枚举音频设备?

我使用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(特定设备)或设备类(渲染或捕获)创建IAudioClient.
一旦你有了这个IAudioClient,你就可以用它来获取IAudioClientCapture,基本上是你在样本中看到的东西.

点赞