用于游戏的跨平台声音API?

时间:2010-09-03 14:27:13

标签: c++ c api audio

是否只有声音的API?

AllegroSDL等API为我的需求提供了太多帮助。我只需要一个可以执行以下操作的库:

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

如果它可以支持VorbisMP3等压缩格式,也会很棒。

11 个答案:

答案 0 :(得分:19)

我是SFML库的忠实粉丝。它确实提供了额外的图形和网络功能,但与此问题相关的是它还具有整洁的音频包。

音频功能包括:

  • 尽可能使用硬件加速
  • 可以加载和保存标准声音格式: OggWAVFLACAIFFAuRAW,paf,8SVX,NIST,VOC,{{ 3}},IRCAMW64,MAT5 MAT4PVFHTK,AVR,SDSSD2,WVE ,MPC2K,Core Audio Format
  • 可以直接从内存中的文件加载所有音频资源
  • 3D声音空间化
  • 轻松捕捉音频的界面
  • 有效管理内存,这样您就不必担心资源的生命周期或存储
  • 支持大文件的流媒体;您甚至可以为任何来源(网络,......)编写自定义流媒体类
  • 支持多声道格式(单声道,立体声,4.0,5.1,6.1,7.1)

网站: RF64

答案 1 :(得分:11)

使用PortAudio。它是一种可移植的跨平台音频API。

答案 2 :(得分:8)

如果您习惯使用OpenGL,那么您可能想尝试OpenAL

API与OpenGL非常相似,所以你应该有宾至如归的感觉。

答案 3 :(得分:4)

我非常喜欢SFML,它是用C ++编写的,遵循大多数优秀API设计规则(RAII等等)。

如果您更喜欢更“类似C”的库,则需要提及SDL

答案 4 :(得分:2)

SDL_sound使用起来非常简单,并为您处理解码。如果您使用OpenAL,则必须自己进行解码(最后我使用它,无论如何)。不过,我实际上更喜欢OpenAL用于游戏。

答案 5 :(得分:2)

我知道这是一个古老的问题,但是现在有人磕磕绊绊地想看看FMOD

您可以使用低级API开始简单,然后根据需要使用更强大的功能(和FMOD Studio)。

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

  

这个例子展示了如何简单地加载和播放多个声音   最简单的FMOD用法。

我将这个低级API用于我开发的跨平台(Mac,Windows)Space Invaders克隆,发现它非常有用!

答案 6 :(得分:1)

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

答案 7 :(得分:1)

您可能需要查看Kowalski project,这是一个面向游戏和类似交互式应用程序的跨平台音频API。它是在zlib许可下发布的。

答案 8 :(得分:1)

虽然它只对非商业应用程序免费,但Bass非常容易实现。

使用示例:

// 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();

答案 9 :(得分:1)

考虑libsoundio。它不支持压缩或编解码器,但它确实提供了强大的跨平台声音API。它可能对您的需求有点低;您正在寻找的图书馆可能建立在libsoundio之上。

答案 10 :(得分:0)

尝试 libao http://www.xiph.org/ao/ - 非常简单&支持各种平台。我成功地尝试了覆盆子皮。