在.NET应用程序中使用音频的推荐方法?

时间:2009-12-10 16:02:42

标签: c# .net vb.net audio managed-directx

我正在尝试使用.NET 3.5下的简单音频应用程序(最好是在VB.NET中,但很乐意使用C#)。我想做的是:

  • 以每个样本8位的PCM格式从(默认)Windows音频输入设备连续录制音频
  • 对于捕获的每N个字节,对原始音频进行一些分析(一些RMS和/或SPL计算 - 基本上你需要一个漂亮的VU条形图东西)
  • 如果在分析后发现音频片段很有趣,请使用压缩文件格式(例如MP3)保存它

我注意到的第一件事是基本.NET Framework中的音频支持几乎不存在。谷歌搜索了一些示例代码,主要是使用Managed DirectX。然而,缺乏MSDN文档,图书馆的复古(2004)以及VS.NET 2008中的以下威胁性MDA例外,使我确信这是一个死胡同:

Message: DLL 'Microsoft.DirectX.dll' is attempting managed execution inside 
OS Loader lock. Do not attempt to run managed code inside a DllMain or image
initialization function since doing so can cause the application to hang.

...我认为松散地翻译为“甚至不尝试使用这些东西。”我在这里遗漏了什么,或者Managed DirectX真的死了吗? Another StackOverlow question表明XNA是Managed DirectX的替代品,但它缺乏我需要的那种低级功能。

那么,哪个API或第三方库实际上对.NET下的音频开发有用?使用COM互操作或P / Invoke是可以接受的,只要有一些不错的.NET示例代码可用于开始...

4 个答案:

答案 0 :(得分:4)

你有没有看过NAudio on CodePlex?看起来它具有您需要的功能。

答案 1 :(得分:2)

我一直是拥有.NET API的BASS library的粉丝。

答案 2 :(得分:1)

如果您想尝试基于DirectX的声音解决方案,可以使用SlimDX。它支持DirectSound和XAudio接口。

答案 3 :(得分:1)

另一个是FMOD