8

我想使用 C# 不断地从我的 PC 的音频线中采样(然后处理该数据)。进行抽样的最佳方法是什么?

4

4 回答 4

3

您可以使用开源NAudio .NET 音频库进行一些(基本)音频捕获。查看 NAudioDemo 项目,了解使用 WaveIn 函数录制到 WAV 文件的简单示例。NAudio 现在还包括使用 WASAPI(Windows Vista 及更高版本)和 ASIO(如果您的声卡有 ASIO 驱动程序)捕获音频的能力。

于 2008-10-23T07:39:12.357 回答
2

.NET 框架中没有用于处理声音的内置库,但如果您使用的是 Win32,则可以使用 DirectSound 等非托管库来执行此操作。

Ianier Munoz 展示了如何通过 CodeProject 上的P/Invoke使用waveIn在 C# 中编写全双工音频播放器。他提到托管 DirectSound是一种更通用的方法。

于 2008-10-23T06:04:44.620 回答
2

还有Alvas Audio库,不是免费的,如果你不付费,它会有一个烦人的屏幕,但效果很好。而且文档很好,如果您发现错误或其他问题,支持也很好。

于 2008-10-23T06:26:49.787 回答
1

托管 DirectX 支持直接捕获音频并且非常易于使用,但不再受支持,并且已于去年从 DirectX SDK 中删除。仍然可以通过安装 2007 年 8 月之前的 SDK 版本来获得它。

虽然不能严格满足您的要求,但更强大的方法是围绕本机 C++ DirectSound API 创建一个 C++/CLI 包装程序集,同样来自 DirectX SDK。然后可以直接从 C# 代码中调用它。尽管需要一些 C++ 和 COM 知识,但这绝对是一种更强大且可维护的方法。

我过去使用过这两种技术,它们都运行良好。

于 2008-10-23T10:38:50.573 回答