我知道這聽起來像一個主觀的問題,但我需要一些關於這個論題有理有據的觀點: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