一个非GPL/LGPL的跨平台C++音频库?

6
寻找不受GPL或LGPL限制的适用于Windows的简单声音库以供播放。也就是说,软件本身和任何它使用的库后端都不受GPL/LGPL限制。我已经搜索了很长时间,但发现所有看起来有希望的东西(如Allegro、SFML等)都含有一些GPL或LGPL代码。我不想引发关于许可证的争论,只是出于个人偏好而已,如果有人知道简单的解决方案,请告诉我。我并不一定需要跨平台的解决方案,但也不想依赖内置的Windows方法(如PlaySound..: ))。非常感谢您的帮助!P.S. 为了明确我的需求,这是我所需要的最基本的功能:
1. 提供文件名或内存数据给播放函数。 2. 如果可能,定义回调函数以通知声音已经播放完毕。

7
LGPL有什么问题吗?只要你仅链接到它,它就不会对你的代码施加限制(如果我没记错的话)。 - eudoxos
9
就像我之前所说的,这更多是个人喜好的问题,我不想就这些事情进行辩论,但我想我可以说一下,在完整的许可证中有一些晦涩的条款,如果你仔细阅读它的话。例如,有这样一些措辞:“如果你的程序在动态链接时依赖于库内部的‘类型’,即使是动态链接,你的代码也必须成为LGPL。” 我已经投入了大约六个月的时间来编写一个跨平台的游戏引擎,即使机会很小,我也不想白白花费这六个月的生命。 :) - user562566
如果您不需要跨平台,为什么不愿意使用类似DirectSound的东西呢?这没有道理。 - Nathan Monteleone
1
因为我正在使用的针对Android等后端的后端本身不是跨平台的,所以我基本上需要为每个后端进行独特的实现。我的意思是,我不想使用类似于Windows中的PlaySound方法之类的东西,因为它在不同版本的Windows中存在很多问题,比如异步播放等问题。至于仅使用纯直接声音,从我研究过的情况来看,它没有提供像我表达的那样简单的接口。不过,如果没有简化此过程的小型库,我就必须咬紧牙关学习了。 :) - user562566
6个回答

7

PortAudio 是一个低级别的声音库(用C语言编写)采用了类似于MIT许可证的等效许可证


4

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

将您的答案标记为正确,因为我更愿意仅使用声音库而不是完整的库来处理音频部分,就像我之前使用SDL一样。感谢您加入Stack Overflow并发布此答案! - user562566

3

libsoundio 比您要求的要稍微低一些,但它非常稳健且遵循 MIT 许可证。


2
经过一番搜索,我成功找到了几个适合的图书馆:

Cinder
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中绝大部分的功能,我只需剥离音频部分并将其构建成自己的库。再次感谢,希望这有所帮助!
编辑
最后,我从这个优秀的库列表中偶然发现了这两个库。该列表提供了每个库内功能的简短描述,以及该库发布的许可证。

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

再次编辑:

再次编辑...
SDL在1.3+版本中是zlib许可证

最后一次编辑...
我已经与TempAU的开发者交谈,他在Google Code上发布了源代码,并使用了新的BSD许可证。

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


1

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

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

我已经使用过它了,非常直观易用。


谢谢你的建议,我计划制作一款商业游戏,但现在我只能吃方便面,所以目前购买许可证并不是一个选择。哈哈 :D - user562566
2
等等,所以你需要一个非LGPL/GPL声音系统,并且它必须可以免费用于商业用途?不得不说这是一组相当奇怪的限制 - 你很难找到使用FLOSS许可证而不是LGPL/GPL的音频库。 - David Roberts

1

BASS是“非商业使用免费”的,没有命名第三方许可证(对我来说看起来与MIT许可证相同,但我不是律师),我一直喜欢使用它的C API。

他们的每个产品商业许可证的定价也相当合理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接