C++ 我应该使用哪个API在Windows上播放音频?

C++ 我应该使用哪个API在Windows上播放音频?,c++,windows,audio-player,C++,Windows,Audio Player,在Windows上播放声音的方式有很多种。每种方法的区别、优点和缺点是什么 我知道至少有5种方法: 1991年 1995年MCIWnd(根据@casablanca的建议) 一九九六年 1998年退潮 1999年亚洲信息组织 1999 Windows Media Player ActiveX控件 2005年(XAudio2使用-如@Han所建议) 2007年 ,则它将与应用程序的其余部分完全匹配,而且它不仅可以在Windows上工作,还可以在Mac OS X和Linux上工作。找到一个对开发人员不

在Windows上播放声音的方式有很多种。每种方法的区别、优点和缺点是什么

我知道至少有5种方法:

  • 1991年
  • 1995年MCIWnd(根据@casablanca的建议)
  • 一九九六年
  • 1998年退潮
  • 1999年亚洲信息组织
  • 1999 Windows Media Player ActiveX控件
  • 2005年(XAudio2使用-如@Han所建议)
  • 2007年
  • ,则它将与应用程序的其余部分完全匹配,而且它不仅可以在Windows上工作,还可以在Mac OS X和Linux上工作。找到一个对开发人员不太友好的核心、特定于平台的API,然后在核心之上构建无数对开发人员更友好的API,这种情况并不少见。使用核心API的速度可以忽略不计,但是使用这些核心之上的层 API几乎总是更方便、更易于维护,并保护您免受底层核心的更改

    编辑
    从:

    XAudio2是一种适用于Microsoft Windows和Xbox 360的低级跨平台音频API。它为游戏提供了信号处理和混合基础,类似于它的前辈、DimtSoad和XoDead。对于Windows游戏开发者来说,XAudio2是期待已久的DirectSound替代品

    因此,如果您想要一个核心的、特定于平台的音频库,那么它看起来就是要使用的API

    编辑2

    我的第一个答案有点快。。。真的,这取决于你想做什么。如果你只想播放一个音频文件,那么QSound就是最好的选择。但是,如果您希望动态混合和生成音频,则可以使用功能更强的库,如XAudio2(它是DirectX的一部分,用于在视频游戏中创建声音)。

    这取决于您想要做什么。对于大多数常见的场景,我发现这些函数工作得很好:它们非常易于使用,并且可以播放安装了编解码器的任何格式

    DirectSound使用起来有点困难,但它可以让您更好地控制输出;它允许您添加特殊效果和模拟三维定位


    waveOut
    函数是您可以使用的最低级别的API,它们是一把双刃剑:您可以精确控制扬声器输出的内容,但它们只接受原始波形数据,这意味着您负责输入数据的所有解码和后处理。本质上提供了一个很好的包装。

    我真的很好奇你怎么知道他的应用程序是基于Qt的。这个问题被编辑了吗?这是贾德的另一个问题吗?@Ben,我没有。。。警告:waveOut函数在不同的Windows版本中的行为有着非常轻微的不同,这在我的代码中导致了“ifdef地狱”。如果说这是一个一刀切的方法,那么多年来我在多个窗口同时播放声音时,我从来没有见过它,也没有无意中发现过它。如果没有视频内容,我会认为(或mciSendString)远远优于MCIWnd。从历史的角度来看,我添加了每个API的推出日期