首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF中的音频播放框架是什么?

WPF中的音频播放框架是什么?
EN

Stack Overflow用户
提问于 2011-02-14 13:17:05
回答 1查看 2.6K关注 0票数 5

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

在C#/WPF GUI中,我需要回放短波文件,作为对用户交互的响应。

这些规格如下:

  • 低延迟(立即开始播放)
  • 代码应该是本机C# (.Net 4.0)
  • 必须与WPF相处
  • 多个同时回放
  • 没有对声音缓冲区操作的限制
  • 有保障的未来(我想用几年后还能得到支持的东西)。
  • 声音播放器模块应该是一个简单的类(= C#代码),而不是封装的dll。

到目前为止,我与DirectSound (使用)相处得很好,它符合上述所有要求。由于Visual 2010 (.Net 4.0),不再支持托管DirectX (MDX),它也从最新的DirectX SDK中消失了。

我现在有什么选择?

  • 在我看来,XNA似乎太过分了(太大),因为我不是在开发一个游戏,而是一个应用程序。有关更多信息,请参见这个问题。 它应该是MDX的替代品,但我读了很多关于它的实现的可怕故事。还是这些都是童话故事?
  • SlimDX可能是一个选择,但它是一个第三方产品,也是一个相当大的项目。
  • 我知道有一些“较小”的解决方案,每个解决方案都有自己的缺点:
    • MediaElement (只适用于WMP10+)
    • P/Invoke与WinMM
    • PlaySound
    • SoundPlayer
    • MediaPlayer

  • 在野外有大量的定制音频库,它们或多或少地工作得很好。 (NAudio,BASS,waveOut.)

我真的很困惑我应该用哪一个来做一个新项目。我不想钻研一个全新的框架,只是为了找出它的局限性,让我无法使用它。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-14 15:54:17

听起来有些选项可以满足您的需要,但我将响应您对NAudio的要求。

低延迟(立即开始播放)

没有音频库将启动“立即”。NAudio可以轻松地在延迟50 of左右的情况下使用WaveOut API。如果使用WASAPI,可能会更快

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

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

必须与WPF相处

NAudio可以很好地处理WPF

多重同步回放

支持多个回放。您可以选择创建一个混频器,有一个回放和混合不同的输入和输出。

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

这是NAudio相对于您提到的其他一些选项的一个巨大优势。您可以完全访问示例数据,并且可以以任何您喜欢的方式操作。

保证了未来(我想使用几年后还能得到支持的东西)

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

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

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4992576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档