【发布时间】:2010-09-18 17:22:49
【问题描述】:
我想在使用 C# 时从我的 PC 的音频线连续采样(然后处理该数据)。进行抽样的最佳方法是什么?
【问题讨论】:
标签: c# audio signal-processing audio-recording
我想在使用 C# 时从我的 PC 的音频线连续采样(然后处理该数据)。进行抽样的最佳方法是什么?
【问题讨论】:
标签: c# audio signal-processing audio-recording
您可以使用开源 NAudio .NET 音频库进行一些(基本)音频捕获。查看 NAudioDemo 项目,了解使用 WaveIn 函数录制到 WAV 文件的简单示例。 NAudio 现在还包括使用 WASAPI(Windows Vista 及更高版本)和 ASIO(如果您的声卡有 ASIO 驱动程序)捕获音频的能力。
【讨论】:
托管 DirectX 支持直接捕获音频并且非常易于使用,但已不再受支持,并且已于去年从 DirectX SDK 中删除。仍然可以通过安装 2007 年 8 月之前的 SDK 版本来get it。
虽然不能严格满足您的要求,但更强大的方法是围绕本机 C++ DirectSound API 创建一个 C++/CLI 包装程序集,同样来自 DirectX SDK。然后可以直接从 C# 代码中调用它。尽管需要一些 C++ 和 COM 知识,但这绝对是一种更强大且更易于维护的方法。
我过去使用过这两种技术,它们都很好用。
【讨论】:
.NET 框架中没有用于处理声音的内置库,但如果您使用的是 Win32,则可以使用 DirectSound 等非托管库来完成。
Ianier Munoz 在 CodeProject 上展示 how to write a full-duplex audio player in C# using waveIn via P/Invoke。他提到 Managed DirectSound 是一种更通用的方法。
【讨论】:
还有Alvas Audio 库,不是免费的,如果你不付费,它会有一个唠叨的屏幕,但效果很好。而且文档很好,如果您发现错误或其他问题,支持也很好。
【讨论】: