C++ 游戏的跨平台声音API?

C++ 游戏的跨平台声音API?,c++,c,api,audio,C++,C,Api,Audio,是否有只针对声音的API API(如或)为我的需要提供了太多。我只需要一个库,它可以执行以下操作: InitSound(); Sound *door = LoadSound("door.wav"); PlaySound(door,volume); 如果它能支持压缩格式,如或。使用,那也太好了。这是一个可移植的跨平台音频API。如果您习惯使用OpenGL,那么您是否愿意尝试 API与OpenGL非常相似,因此您应该感到宾至如归。我非常喜欢SFML库。它确实提供了额外的图形和网络功能,但与这个问题

是否有只针对声音的API

API(如或)为我的需要提供了太多。我只需要一个库,它可以执行以下操作:

InitSound();
Sound *door = LoadSound("door.wav");
PlaySound(door,volume);

如果它能支持压缩格式,如或。

使用,那也太好了。这是一个可移植的跨平台音频API。

如果您习惯使用OpenGL,那么您是否愿意尝试


API与OpenGL非常相似,因此您应该感到宾至如归。

我非常喜欢SFML库。它确实提供了额外的图形和网络功能,但与这个问题相关的是,它还有整洁的音频包

音频功能包括:

  • 尽可能使用硬件加速
  • 可以加载和保存标准声音格式: 美国国家标准与技术研究院,美国专利局,美国国家标准与技术研究院,美国挥发性有机化合物,美国专利与技术研究院,美国专利与技术研究院
  • 可以直接从内存中的文件加载所有音频资源
  • 三维声音专业化
  • 轻松的音频捕获接口
  • 高效地管理内存,这样您就不必担心资源的生命周期或存储
  • 支持大文件流;您甚至可以为任何源(网络等)编写自定义流媒体类
  • 支持多声道格式(单声道、立体声、4.0、5.1、6.1、7.1)
网站:

< P>我很喜欢,它是用C++编写的,遵循了大多数API设计的规则(等等)。
如果您更喜欢“类似C”的库,则需要提及。

使用非常简单,并为您处理解码。如果你用过,你必须自己解码(反正我上次用过)。不过,我实际上更喜欢OpenAL for games。

如果您正在寻找专业的跨平台声音设计API和创作应用程序,请看一看。它可以做的不仅仅是播放声音。它有效果、复杂的声音逻辑系统、声音分层、剖面、交互式音乐工具等。。。它提供和支持,对非商业项目是免费的。

您可能想看看,这是一个面向游戏和类似交互应用程序的跨平台音频API。它是根据zlib许可证发布的。

试试libao-它非常简单,支持多种平台。我在raspberry pi上成功地试用了它。

虽然它只对非商业应用程序免费,但实际上很容易实现

用法示例:


考虑一下。它不支持压缩或编解码器,但它提供了一个健壮的跨平台声音API。对于你的需求来说,这可能有点低;您正在查找的库可能是建立在libsoundio之上的。

我知道这是一个老问题,但现在遇到这个问题的任何人都可能想去看看

您可以使用低级API来启动simple,然后在以后需要时使用更强大的功能(和FMOD Studio)

下面是播放声音的示例,它引用了API中的示例:

此示例演示如何简单地加载和播放多个声音 FMOD的最简单用法


我将这个低级API用于我开发的跨平台(Mac、Windows)空间入侵者克隆,发现它非常有用

呜呜,你赢了我一分钟。是的,SFML很棒。请阅读我对格雷厄姆的评论。里德斯回答。SFML包括lgpl许可的声音库,gpl许可代码有很多潜在的危险。我打算用SFML来做游戏,但不像自由软件基金会的人(他们似乎已经有钱了,或者有其他人付账),我希望我的努力工作不受任何合理的怀疑。只是一些值得思考的东西。@techniquempire:你一定是糊涂了;LGPL!=GPL。您可以在封闭源项目上使用库。唯一的限制是您在某处提供了一些许可证通知。@v.oddou也许您应该阅读完整的许可证文本。有些事情是可以解释的,比如我的申请是否真的是衍生作品。坦白地说,我宁愿远离任何扩展许可证的人有权窥探我正在做的事情,以决定他们是否想把我告上法庭,迫使我开放代码。“免费”软件基金会。SFML不再是LGPL,但zlib/png:OpenAL与OpenGL不同。这是一个或多或少由一家公司驱动的API,甚至这个“驱动”最近也不存在了。虽然API设计不错,但在各种平台上的可用性并不是很好。它的Windows实现充满了怪癖和bug,特别是硬件(包括创造性硬件)。它最初由Sean Palmer(以及OpenML和其他一些人)在很多年前(iirc)启动,但只有OpenAL获得了动力。它在Linux上广受欢迎,并被Loki games在5月份的Windows游戏到Linux的端口中使用。Loki的消亡(以及Linux作为一个盈利的游戏平台)扼杀了OpenAL,而不是创造性。我的经验可以追溯到几年前,当时看起来还不错,在简单的音频测试中效果很好。由于lgpl许可,我基本上不喜欢像openAL这样的库。任何包含“gpl”的东西,我都会立即避开,我不知道为什么这两个gpl许可证如此流行。它们是我遇到过的病毒最多的单一许可证。当然,您可以链接到lgpl库,这没关系,但许可证中有许多模糊的条款,最终可能会劫持您的应用程序,并迫使其成为lgpl。例如,如果您的程序“依赖”于库中的类型等,请与您的所有工作吻别。对任何GPL的东西都要非常小心。死链接。这和你的工作有关吗?是的。抢手货固定链接。CreativeLabs在Loki Games倒闭时接管了它,而Sean Palmer在创建它时接管了它。我也使用了它——这很容易集成到我的项目中。“目前正在重构,还不太可用”,但在过去8个月里没有提交
// initialize device at 44kHz
if (!BASS_Init(-1,44100,0,0,NULL))
{
    printf("Can't initialize device");
    return 0;
}

HSAMPLE sample;
HCHANNEL channel;

// load from disk
if( sample = BASS_SampleLoad(FALSE,"foo.wav",0,0,1,BASS_SAMPLE_OVER_POS) ) {

    // get playable channel
    channel = BASS_SampleGetChannel( sample,FALSE);

    // play
    BASS_ChannelPlay(channel,TRUE);

    // wait for playback to finish
    while( BASS_ChannelIsActive( channel ) )
         Sleep(100);

   BASS_SampleFree(sample);
}

// cleanup
BASS_Free();