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

mdb*_*mdb 7 .net c# vb.net audio managed-directx

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

  • 从(默认)Windows音频输入设备以8位每采样PCM格式连续录制音频
  • 对于捕获的每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.
Run Code Online (Sandbox Code Playgroud)

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

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

LBu*_*kin 4

您研究过CodePlex 上的 NAudio吗?看起来它具有您需要的功能。