c++ - WASAPI + windows store 应用程序初始化

标签 c++ audio microsoft-metro wasapi

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

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

Visual Studio 说:

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

我不明白这是什么意思。我将不胜感激。

最佳答案

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

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

WASAPI sample for Windows 8

关于c++ - WASAPI + windows store 应用程序初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17493603/

相关文章:

windows-8 - 在 Windows 8 上以编程方式显示/隐藏键盘

c++ - 是否可以使用 highgui/opencv 在视频序列上显示文本?

vb.net - 使用 Visual Basic.Net 录制系统音频

c# - 使用 Sqlite 数据库捕获、保存和检索图像/图片

swift - Google Nearby for Swift - 如何仅发现音频?

python - 录制和播放从麦克风录制的音频流

c# - 在已完成的事件 Windows 8 App 中从 Storyboard 获取 UIElement

c++ - 最小化进程之间的上下文切换时间

c++ - 在 C++ 中搜索和删除字符串中的某些字符

c++ - 获取错误无法从C++ 17编译器的间接库继承构造函数