C# WPF中的哪个音频播放框架?

C# WPF中的哪个音频播放框架?,c#,wpf,.net-4.0,audio,C#,Wpf,.net 4.0,Audio,我知道这听起来像是一个主观问题,但我需要一些关于这个话题的有根据的意见: 在C#/WPF GUI中,我需要播放短波文件作为对用户交互的响应。 规格如下: 低延迟(立即开始播放) 代码应为本机C#(.Net 4.0) 必须与WPF合作 多个同时播放 对声音缓冲区操作没有限制 保证未来(我想使用几年后仍有支持的东西。) 声音播放器模块应该是一个简单的类(=C#代码),而不是一个封装的dll 到目前为止,我与DirectSound(使用Microsoft DirectX SDK)相处得很好,它符合

我知道这听起来像是一个主观问题,但我需要一些关于这个话题的有根据的意见:

在C#/WPF GUI中,我需要播放短波文件作为对用户交互的响应。
规格如下:

  • 低延迟(立即开始播放)
  • 代码应为本机C#(.Net 4.0)
  • 必须与WPF合作
  • 多个同时播放
  • 对声音缓冲区操作没有限制
  • 保证未来(我想使用几年后仍有支持的东西。)
  • 声音播放器模块应该是一个简单的类(=C#代码),而不是一个封装的dll
到目前为止,我与DirectSound(使用Microsoft DirectX SDK)相处得很好,它符合上述所有要求。自Visual Studio 2010(.Net 4.0)以来,不再支持托管DirectX(MDX),它也从最新的DirectX SDK中消失

我现在有什么选择

  • XNA对我来说似乎有些过分(太大),因为我不是在开发游戏,而是在开发应用程序。有关更多信息,请参阅。
    它应该是MDX的替代品,但我读了很多关于它实现的恐怖故事。或者这都是童话故事
  • SlimDX可能是一个选项,但它是一个第三方产品,也是一个相当大的项目
  • 据我所知,有一些“较小”的解决方案,每个都有自己的缺点:
    • MediaElement(仅适用于WMP10+)
    • P/Invoke与WinMM
    • 播放声音
    • 音响播放器
  • 在野外有大量的定制音频库,它们或多或少都工作得很好。
    (纳迪奥,巴斯,…)
我真的不知道在新项目中应该使用哪一个。我不想钻研一个全新的框架,只是为了发现它的局限性阻止我使用它


提前谢谢

听起来有很多选项可以满足您的需要,但我会根据您的需求为您提供

低延迟(立即开始播放)

没有音频库将“立即”启动。NAudio可以使用WaveOutAPI轻松地在大约50毫秒的延迟下工作。如果使用WASAPI,可能会更快

代码应该是本机C#(.Net 4.0)

NAudio代码是本机C#&包含Windows API的包装器

必须与WPF融洽相处

NAudio与WPF配合得很好

多个同时播放的节目

支持多个回放。您可以选择创建一个混音器,以进行一次播放并混合不同的输入和输出

对声音缓冲区操作没有限制

这是NAudio相对于您提到的其他一些选项的一大优势。您可以完全访问样本数据,并可以以任何方式进行操作

有保障的未来(我想使用几年后仍有支持的产品)。

开源软件没有任何保证。但是由于它是开源的,没有什么能阻止你自己修复bug。NAudio已经存在10年了

声音播放器模块应该是一个简单的类(=C#代码),而不是封装的dll


您可以将代码复制到自己的项目中,但是有很多帮助器类,因此您可能会发现仅使用DLL更容易。

我很好奇为什么您要排除第三方非托管库。毕竟,DirectX是非托管代码。任何声音库在某种程度上都会有非托管代码。为什么微软的非托管库还可以,而第三方的不行?一开始它们还可以,因为我认为M$可以为它们的产品提供比第三方解决方案更好的支持,但由于它们停止了DirectX,我甚至不能确定这一点。。。现在,我担心未来的.Net版本将不支持任何现在可以工作的东西,因为它不是来自m$。您现在正在使用NAudio吗?或者你决定使用另一个框架了吗?我留在DirectSound,并将这个决定传给了我的继任者(我想它总是这样的…)。下一个可能需要声音的项目,我将尝试NAudio或Qt,具体取决于平台。感谢您,到目前为止,我一定会仔细看看。