【发布时间】:2013-06-01 12:52:16
【问题描述】:
我正在寻找有关如何使用 Naudio + WASAPI 捕获麦克风音频的示例代码。
(我对直接到磁盘录制不感兴趣,我需要实时处理输入缓冲区以做一些音频效果。)
我搜索了很多,但在网上找不到任何像样的样本。
你能帮忙吗?
附:也欢迎 BASS 库和 C# 示例!
【问题讨论】:
标签: capture microphone naudio bass wasapi
我正在寻找有关如何使用 Naudio + WASAPI 捕获麦克风音频的示例代码。
(我对直接到磁盘录制不感兴趣,我需要实时处理输入缓冲区以做一些音频效果。)
我搜索了很多,但在网上找不到任何像样的样本。
你能帮忙吗?
附:也欢迎 BASS 库和 C# 示例!
【问题讨论】:
标签: capture microphone naudio bass wasapi
NAudio source code 附带一个演示应用程序,展示如何使用 WASAPI 捕获音频。看NAudioDemo\RecordingDemo\RecordingPanel.cs。
【讨论】:
MSDN 有很多代码示例,虽然没有涵盖 NAudio,但它们确实有一些示例详细展示了如何使用 Windows 音频会话 API。
由于 WASAPI 是纯本机 API,因此有两个示例项目向您展示如何从纯本机应用程序 Here 使用该 API,以及向您展示如何构建包装 API 的本机组件的示例从 CSharp 应用程序消费。我找不到指向 C#/C++ 示例的直接链接,但它包含在 Windows 8 App Samples 包中。然后可以选择完全为 API 编写托管包装器,但除非您享受痛苦并且正在寻找编组的冒险,否则我不会推荐它......
如果您正在为 Windows Phone 开发,那么 WP8 SDK 中有一个 VOIP 示例,其中介绍了如何使用 WASAPI 捕获和呈现 PCM 音频数据。
正如 Mark 所指出的,pcm 数据缓冲区的大小可能会随时间而变化,这部分是因为 WASAPI 是一种低延迟音频 API,因此消费者(您的应用程序)之间的抽象很少和生产者(司机)尽可能。尽管没有什么可以阻止您自己进行一些修复大小缓冲,并且仅在您自己的缓冲区已满时才将数据传递给您的应用程序。
【讨论】: