跨平台的C ++声音库不是GPL / LGPL?

时间:2011-11-09 22:26:43

标签: c++ audio

寻找任何简单的声音库,以便在不是GPL或LGPL的窗口中播放。也就是说,软件本身不是AND它使用的任何库后端都不是GPL / LGPL。

我一直在寻找很长一段时间,我发现看起来很有前景的所有东西(Allegro,SFML等)都有一些GPL或LGPL代码。我不打算开始关于许可的辩论,这只是我的偏好,所以任何知道简单事情的人都请告诉我。

我不一定在寻找跨平台解决方案,但我不想依赖像PlaySound这样的内置Windows方法...... :)。任何帮助将不胜感激!

P.S。为了清楚我的意思,简单来说,这是我需要的最多功能:

  1. 将内存中的文件名或数据提供给播放功能。
  2. 如果可能,请定义声音完成时的回调。

6 个答案:

答案 0 :(得分:5)

PortAudio是一个低级声音库(在C中),它使用等效的MIT许可证

答案 1 :(得分:3)

http://aumiks.googlecode.com

aumiks::Lib aumiksLibrary(100, aumiks::STEREO_16_44100);
ting::Ref<aumiks::WavSound> snd = aumiks::WavSound::LoadWAV("sample.wav");
ting::Ref<aumiks::Channel> ch = snd->Play();

答案 2 :(得分:2)

在做了更多的挖掘之后,我设法找到了几个合适的库:

煤渣
http://libcinder.org/

使用示例(音频):

audio::SourceRef mAudioSource;
mAudioSource = audio::load( loadResource( MY_RESOURCE ) );
audio::Output::play( mAudioSource );

TempAU
http://www.tempau.com/

Sound sound("somefile.mp3"); // Create sound object
sound.play();                // Play it!

TempAU的来源尚未发布,因为它是全新的。我在开发人员的论坛上看到了一些评论,他计划在不久的将来发布它,我收集的内容。 TempAU现在使用的是LGPL的库,所以我不打算使用它,但我认为无论如何我都会提到它,因为一旦源出来我肯定在ogg支持或者开放的东西中链接起来是微不足道的。

Cinder是根据修改后的BSD许可证授权的,因此几乎唯一的许可证要求是,在与源或二进制文件一起分发时,您可以随处附带许可证副本(ReadMe,无论如何)。因为我已经在cinder中编写了绝大多数功能,所以我只是去掉音频部分并将其构建到自己的lib中。再次感谢,希望这有用!

修改
最后一件事,我从这个优秀的lib列表中偶然发现了这两个库。该列表提供了每个lib中功能的简短描述,以及库发布的许可证。

http://content.gpwiki.org/index.php/Libraries

修改...再次
SDL,从版本1.3+开始是zlib licensed

最后一次编辑......
我一直在与TempAU的开发者交谈,他已经在新的BSD许可下发布了谷歌代码的源代码。

http://code.google.com/p/tempau/

答案 3 :(得分:2)

libsoundio比你要求的要低一些,但它很强大并且MIT获得许可。

答案 4 :(得分:1)

IrrKLang不是GPL(它是商业产品):

  

irrKlang是一个高级2D和3D跨平台(Windows,Mac OS X,Linux)声音引擎和音频库......可以通过极其简单的API访问。

我已经习惯了,而且非常简单。

答案 5 :(得分:1)

BASS在没有命名第三方许可的情况下“免费用于非商业用途”(它看起来与我的麻省理工学院许可相同,但IANAL),我一直很喜欢使用它的C语言API。

他们对每件产品商业许可证的定价也非常合理。