【问题标题】:Is DirectSound the best audio abstraction layer for Windows?DirectSound 是 Windows 的最佳音频抽象层吗?
【发布时间】:2010-09-14 13:40:46
【问题描述】:

DirectSound 是 Windows 的最佳音频抽象层吗? 将我的应用从构建到特定芯片组的非常糟糕的声音实现切换到抽象层。

应用程序是本机 Winform,.net 3.5。 DirectX/DirectSound 是可能的选择,但有点担心开销。还有其他选择吗?还是想想别的什么都傻?

【问题讨论】:

  • 您对图层有什么要求(多格式、复音等)?

标签: directx audio directsound


【解决方案1】:

DirectSound 现在不像过去那样受到微软的喜爱。就 DirectX 而言,您可以尝试 XAudio2 或 XACT。有些人喜欢那些,有些人讨厌他们。 XAudio2 是低级的,而 XACT 是相当高级的。两者都可以从 Microsoft XNA 访问,它类似于 Managed DirectX,但正在积极开发中。

但您不仅限于使用 DirectX 附带的功能。如果您想要很棒的东西,请尝试FMod。他们仍然有共享软件/爱好者许可模式和免费软件许可模式,以防您不想花大价钱。

您的选择取决于您想要对声音做什么。

【讨论】:

  • 有趣的是,您提到 DirectSound 并没有像过去那样受到喜爱。我曾经是 DirectX/Direct3D/DirectPlay/DirectSound 开发人员(多年前),我自己注意到它已经停滞不前,这导致我提出了这个问题。
【解决方案2】:

看看SDL 是不是更好看。

【讨论】:

    【解决方案3】:

    嗯,你可以试试OpenAL。 OpenGL 之于 Direct3D 就是 OpenAL 之于 DirectSound(3D)。该界面与 OpenGL 非常相似,如果您不喜欢它,您可能也会不喜欢 OpenAL。此外,我不确定这个库的 Windows 版本是自己的本机实现还是只是调用 DirectSound,因此可能只是它上面的一个(薄?)包装器。

    【讨论】:

    • 是否有用于 OpenAL 的本机 .NET 库?回到过去,我真的很喜欢用 OpenGL 编码。
    【解决方案4】:

    DirectSound 很不错。

    如果您需要低延迟或同时通过多个声卡对声音输入和输出提供良好支持,您可能还想看看 ASIO:

    http://de.wikipedia.org/wiki/Audio_Stream_Input/Output

    【讨论】:

      【解决方案5】:

      waveOut... API 仍然是一个选项。从托管代码中处理起来很棘手,但您可以通过这种方式一次播放多个声音(至少在 XP 和 Vista 中)。

      如果您只是偶尔需要播放声音,System.Media.SoundPlayer 非常好用。但是,您不能使用此组件一次播放多个声音。

      DirectSound 是您唯一的其他主要选择。它有一个内置的软件合成器,如果你需要的话。

      编辑:SDL 看起来很有趣。谢谢思进。

      【讨论】:

        【解决方案6】:

        SharpDX 看起来很有趣。由于托管 DirectX 的 x86 限制,我计划尝试将其作为托管 DirectX 的替代品。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-01
          • 1970-01-01
          • 2011-02-09
          • 1970-01-01
          • 1970-01-01
          • 2011-01-12
          • 2020-10-14
          • 1970-01-01
          相关资源
          最近更新 更多