gpt4 book ai didi

c# - WPF 中音频播放的框架是什么?

转载 作者:太空狗 更新时间:2023-10-29 23:03:22 25 4
gpt4 key购买 nike

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

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

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

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

我现在有什么选择?

  • XNA 对我来说似乎有点矫枉过正(太大),因为我不是在开发游戏,而是在开发应用程序。参见 this question了解更多信息。
    它应该是 MDX 的替代品,但我读了很多关于它的实现的可怕故事。或者这都是童话故事?
  • SlimDX 可能是一个选项,但它是第三方产品,而且还是一个相当大的项目。
  • 我知道有一些“较小”的解决方案,每个都有自己的缺点:
    • MediaElement(仅适用于 WMP10+)
    • 使用 WinMM 进行 P/调用
    • 播放声音
    • 声音播放器
    • MediaPlayer
  • 有大量自定义音频库,它们或多或少都运行良好。
    (NAudio,低音,waveOut ...)

我真的很困惑我应该为一个新项目使用哪一个。我不想深入研究一个全新的框架,只是为了发现它的局限性使我无法使用它。

提前致谢!

最佳答案

听起来很多选项都能满足您的需求,但我会回应您对 NAudio 的要求

低延迟(立即开始播放)

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

代码应该是原生 C# (.Net 4.0)

NAudio 代码是原生 C# 并包含 Windows API 的包装器

必须与WPF相处

NAudio 与 WPF 配合良好

多个同时播放

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

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

与您提到的其他一些选项相比,这是 NAudio 的一大优势。您可以完全访问示例数据,并可以按照您喜欢的任何方式进行操作。

有保证的 future (我想使用几年后仍会得到支持的东西。)

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

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

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

关于c# - WPF 中音频播放的框架是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com