【发布时间】:2009-12-10 16:02:42
【问题描述】:
我正在尝试在 .NET 3.5 下使用一个简单的音频应用程序(最好在 VB.NET 中,但会很乐意使用 C#)。我想做的是:
- 从(默认)Windows 音频输入设备以 8 位/样本 PCM 格式持续录制音频
- 对于捕获的每 N 个字节,对原始音频进行一些分析(一些 RMS 和/或 SPL 计算 - 基本上你需要一个漂亮的 VU 条形图)
- 如果分析后发现音频片段很有趣,请使用压缩文件格式(例如 MP3)保存它
我注意到的第一件事是基本 .NET Framework 中几乎不存在音频支持。谷歌搜索了一下发现了一些示例代码,主要使用托管 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.
...我认为可以粗略地翻译为“甚至不要尝试使用这些东西。”我在这里遗漏了什么,还是托管 DirectX 真的死了? Another StackOverlow question 建议 XNA 是托管 DirectX 的替代品,但它缺少我需要的那种低级功能。
那么,哪个 API 或第三方库实际上对 .NET 下的音频开发有用?使用 COM 互操作或 P/Invoke 是可以接受的,只要有一些不错的 .NET 示例代码可以开始使用...
【问题讨论】:
标签: c# .net vb.net audio managed-directx