C# WPF中的哪个音频播放框架?
我知道这听起来像是一个主观问题,但我需要一些关于这个话题的有根据的意见: 在C#/WPF GUI中,我需要播放短波文件作为对用户交互的响应。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#(.Net 4.0)
- 必须与WPF合作
- 多个同时播放
- 对声音缓冲区操作没有限制
- 保证未来(我想使用几年后仍有支持的东西。)
- 声音播放器模块应该是一个简单的类(=C#代码),而不是一个封装的dll
- 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,具体取决于平台。感谢您,到目前为止,我一定会仔细看看。