我知道这听起来像一个主观的问题,但我需要一些关于这个论题有理有据的观点:WPF中的音频播放框架?
在C#/ WPF GUI我需要播放短波文件作为用户交互的响应。
的规格如下:
- 低延迟(回放立即开始)
- 代码应该是原生的C#(.NET 4.0)
- 必须用WPF相处
- 多路同时回放
- 声音缓冲区操作没有限制
- 保证未来(我想用几年后仍会有支持的东西。)
- 声音播放器模块应该是一个简单的类(= C#代码),而不是一个封装的DLL
直到现在我用的DirectSound相处得很好(使用微软的DirectX SDK),它适合所有提到的要求以上。由于Visual Studio 2010(.Net 4.0),Managed DirectX(MDX)不再受支持,并且它也从最新的DirectX SDK中消失。
我现在有哪些选择?
- XNA对我来说看起来有些矫枉过正(太大),因为我没有开发一款游戏,而是一款应用程序。有关更多信息,请参阅this question。
它应该是MDX的替代品,但我读了很多关于它的实现的可怕故事。或者是所有的童话故事? - SlimDX可能是一个选项,但它是第三方产品,也是一个相当大的项目。
- 有一些 “更小” 的解决方案,我所知道的,每个都有它自身的缺点:与WINMM
- PlaySound
- 声音播放
-
- 的MediaElement(只有WMP10 +)
- 的P/Invoke MediaPlayer
- 有很多自定义音频库在野外工作,或多或少地工作湖
(n音讯,BASS,waveOut ...)
我真的很疑惑,我应该使用一个新的项目,之一。我不想深入研究一个全新的框架,只是为了发现它的局限性阻止我使用它。
在此先感谢!
我很好奇你为什么排除第三方非托管库。毕竟,DirectX是非托管代码。任何声音库都会在某个级别具有非托管代码。为什么Microsoft非托管库可以,第三方库不可以? – 2011-02-14 13:32:45
他们一开始就没问题,因为我认为M $会为他们自己的产品提供比第三方解决方案更好的支持,但是因为他们停止了DirectX,所以我甚至不知道这些......现在我害怕一些未来的.Net版本将不支持现在可能工作的任何东西,因为它不是来自M $。 – 2011-02-14 13:45:24