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