在.NET应用程序中处理音频的推荐方法是什么?

7

我想开始一个简单的音频应用程序,使用.NET 3.5(最好是VB.NET,但也可以使用C#)。我的目标是:

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

首先我注意到的是,基本.NET框架中的音频支持几乎不存在。在Google搜索一些示例代码时,大多数都使用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真的已经死了?另一个StackOverlow问题表明XNA是Managed DirectX的替代品,但它缺乏我所需要的低级功能。

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

4个回答

4

2

我一直是 BASS 库 的粉丝,它有一个 .NET API。


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

谢谢,这是另一个有前途的解决方案,我的谷歌搜索能力不足竟然忽略了它。 - mdb

1

谢谢 - 商业使用有点贵。与此同时,我发现另一个网站是http://www.ambiera.com/irrklang/irrklang_pro.html,但它的许可证也有些奇怪。 - mdb
我认为IrrKlang的许可证并不奇怪...开发者为您提供了选择最适合您情况的许可证选项。 - sourcenouveau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接