我应该使用哪种API在Windows上播放音频? [关闭]

问题描述 投票:6回答:2

在Windows上有很多种播放声音的方法。每种方法的差异,优点和缺点是什么?

我知道至少有5种方法:

  1. 1991 WinMM.dll/mmsys.dll PlaySound
  2. 1995年MCIWnd(由@casablanca建议)
  3. 1996年DirectSound
  4. 1998 WaveOut
  5. 1999年ASIO
  6. 1999 Windows Media Player ActiveX控件?
  7. 2005 WASAPI(由XAudio2使用 - 由@Han建议)
  8. 2007年XAudio2
c++ windows audio-player
2个回答
1
投票

真的取决于你想做什么。对于大多数常见场景,我发现MCIWnd函数运行良好:它们非常易于使用,可以播放任何安装了编解码器的格式。

DirectSound有点难以使用,但可以让您更好地控制输出;它可以让你添加特效和模拟3D定位。

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


5
投票

QSound,然后它将适合你的Qt应用程序的其余部分,它不仅适用于Windows,也适用于Mac OS X和Linux。找到一个对开发人员不是非常友好的核心,特定于平台的API,然后在核心之上构建更多开发人员友好的API,这种情况并不少见。使用核心API的速度可以忽略不计,但使用这些核心API之上的层几乎总是更方便和可维护,并保护您免受低级核心的更改。

编辑 来自description of XAudio2

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

因此,如果您需要一个特定于核心的平台音频库,那么它似乎就是要使用的API。

编辑2 我的第一个答案我有点快......真的,这取决于你想做什么。如果您只想播放音频文件,那么QSound就是您的最佳选择。但是,如果你想动态混合和生成音频,那么使用功能更强大的库,如XAudio2(它是DirectX的一部分,用于创建声音作为视频游戏的一部分)将是通往走。

© www.soinside.com 2019 - 2024. All rights reserved.