WASAPI + windows 商店应用初始化

Posted

技术标签:

【中文标题】WASAPI + windows 商店应用初始化【英文标题】:WASAPI + windows store app initialization 【发布时间】:2013-07-05 16:50:29 【问题描述】:

我正在尝试编写一个程序来捕获您的语音,并将我的效果应用于捕获的音频并立即播放。我正在用 C++ 将这个应用程序写到 Windows 商店。在经历了 MediaCapture 之后,我决定使用 WASAPI 来做到这一点。我正在使用 msdn 中的示例来设置 WASAPI。正如我所料,我很快就遇到了问题。所以问题出在以下两行:

const CLSID CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
const IID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);

视觉工作室说:

Error: operand of __uuidof must have a class or enum type for which __declspec(uuid('..')) has been specified.

我不知道这意味着什么。在这里我将不胜感激。

【问题讨论】:

【参考方案1】:

为了能够使用 __uuidof(),必须为目标声明一个 uuid。在为 Windows 8 Store Apps 编译时,MMDeviceEnumerator 和 IMMDeviceEnumerator 似乎没有任何 uuid 声明,您应该使用 Windows::Devices::Enumeration 命名空间来枚举设备,然后使用 IActivateAudioInterfaceAsyncOperation 来初始化和激活音频设备。

这是一个完整工作示例的链接,该示例捕获 pcm 数据并将其写入 wav 文件。它使用系统的默认音频捕获设备,但枚举可用设备并使用它们中的任何一个都是小菜一碟。 :)

WASAPI sample for Windows 8

【讨论】:

以上是关于WASAPI + windows 商店应用初始化的主要内容,如果未能解决你的问题,请参考以下文章

WASAPI 在 Windows 上捕获的缓冲区大小

启动时暂停 Windows 10 应用商店应用

Windows基础-使用XAudio2播放音频(本质是WASAPI)

修改系统卷时如何修改 WASAPI 环回捕获卷?

Core Audio (WASAPI) 缓冲区事件计时

控制音量混合器