2011-11-09 40 views
5

Tìm kiếm bất kỳ thư viện âm thanh đơn giản nào để phát lại trong các cửa sổ không phải là GPL hoặc LGPL. Đó là, bản thân phần mềm không phải là VÀ bất kỳ thư viện nào kết thúc mà nó sử dụng không phải là GPL/LGPL.Thư viện âm thanh đa nền tảng C++ không phải là GPL/LGPL?

Tôi đã tìm kiếm một thời gian dài và mọi thứ tôi thấy có vẻ đầy hứa hẹn (Allegro, SFML vv) hóa ra có một số mã GPL hoặc LGPL trong đó. Tôi không cố gắng để bắt đầu một cuộc tranh luận về cấp phép, nó chỉ là sở thích của tôi để bất cứ ai biết về một cái gì đó đơn giản xin vui lòng cho tôi biết.

Tôi không nhất thiết phải tìm giải pháp nền tảng chéo, nhưng tôi không muốn dựa vào các phương pháp Windows tích hợp như PlaySound, .. :). Mọi sự trợ giúp sẽ rất được trân trọng!

P.S. Chỉ cần làm rõ những gì tôi muốn nói một cách đơn giản, đây là chức năng mà tôi yêu cầu nhất:

  1. Cung cấp tên tệp hoặc dữ liệu trong bộ nhớ cho chức năng phát.
  2. Nếu có thể, hãy xác định gọi lại khi âm thanh kết thúc.
+7

Sự cố với LGPL là gì? Nó không đặt giới hạn trên mã của bạn miễn là bạn chỉ liên kết đến nó (IIRC). – eudoxos

+7

Giống như tôi đã nói đó là vấn đề ưu tiên hơn và tôi không muốn tranh luận về những điều này, nhưng tôi đoán tôi sẽ nói rằng có một số đoạn văn không rõ ràng trong giấy phép đầy đủ nếu bạn đọc nó. Ví dụ, có từ ngữ như, nếu chương trình của bạn trở thành "phụ thuộc" trên "loại" trong thư viện, ngay cả khi liên kết động, mã của bạn cũng phải trở thành LGPL. Tôi đã đầu tư khoảng 6 tháng trong cuộc đời mình vào việc viết một game engine đa nền tảng và tôi thực sự muốn không cho đi 6 tháng trong cuộc đời của tôi miễn phí, ngay cả khi cơ hội là cực kỳ nhỏ. :) –

+0

Nếu bạn không cần nền tảng chéo, tại sao bạn không sẵn sàng sử dụng một cái gì đó như DirectSound? Điều đó không có ý nghĩa. –

Trả lời

2

libsoundio là mức thấp hơn một chút so với những gì bạn đang yêu cầu, nhưng nó là mạnh mẽ và MIT được cấp phép.

1

IrrKLang không phải là GPL (Nó là một sản phẩm thương mại):

irrKlang là một mức độ 2D cao và đa nền tảng 3D (Windows, Mac OS X, Linux) động cơ âm thanh và thư viện âm thanh .. có thể được truy cập thông qua một API cực kỳ đơn giản.

Tôi đã sử dụng nó và nó khá đơn giản.

+0

Cảm ơn bạn đã đề xuất, tôi đang lên kế hoạch sản xuất một trò chơi thương mại và ngay bây giờ tôi đang ở chế độ ăn kiêng mr.noodles để bóc tách tiền mặt cho giấy phép ngay bây giờ không nhất thiết phải là một lựa chọn. lol: D –

+2

Đợi đã, vậy bạn cần hệ thống âm thanh không phải của LGPL/GPL VÀ nó phải miễn phí để sử dụng thương mại? Đó là một loạt các hạn chế khá kỳ lạ phải nói - bạn sẽ khó có thể tìm thấy thư viện âm thanh bằng cách sử dụng giấy phép FLOSS không phải là LGPL/GPL –

5

PortAudio là một thư viện âm thanh ở mức độ thấp (trong C) trong đó sử dụng tương đương với một giấy phép MIT

1

BASS là "miễn phí cho sử dụng phi thương mại" mà không đặt tên một giấy phép của bên thứ ba (nó trông giống như giấy phép MIT cho tôi, nhưng IANAL), và tôi luôn thích làm việc với API C của nó.

Giá của chúng cho giấy phép thương mại cho mỗi sản phẩm cũng khá hợp lý.

2

Sau khi thực hiện một số đào hơn xung quanh, tôi cố gắng tìm một vài thư viện phù hợp:

Cinder
http://libcinder.org/

Ví dụ về sử dụng (Audio):

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! 

Nguồn cho TempAU vẫn chưa được phát hành vì nó hoàn toàn mới. Tôi đã nhìn thấy một số ý kiến ​​trên diễn đàn của các nhà phát triển và anh ấy đang có kế hoạch phát hành nó trong tương lai gần, từ những gì tôi thu thập được. TempAU ngay bây giờ sử dụng libs là LGPL vì vậy tôi sẽ không sử dụng nó, nhưng tôi nghĩ rằng tôi muốn đề cập đến nó anyway kể từ khi nguồn ra tôi chắc chắn nó sẽ là tầm thường để liên kết trong hỗ trợ ogg hoặc một cái gì đó mở .

Cinder được cấp phép theo giấy phép BSD đã sửa đổi, do đó, khá nhiều yêu cầu giấy phép duy nhất là bạn bao gồm bản sao giấy phép ở mọi nơi (ReadMe, bất kỳ) khi phân phối với nguồn hoặc tệp nhị phân của bạn. Kể từ khi tôi đã viết phần lớn các chức năng trong chất kết dính, tôi chỉ sẽ loại bỏ phần âm thanh và xây dựng nó thành lib riêng của nó. Cảm ơn một lần nữa, hy vọng điều này là hữu ích!

Chỉnh sửa
Một điều cuối cùng, tôi tình cờ gặp cả hai thư viện này từ danh sách tuyệt vời này của libs. Danh sách cung cấp một mô tả ngắn về chức năng trong mỗi lib, cùng với giấy phép mà thư viện được xuất bản theo.

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

Chỉnh sửa ... một lần nữa
SDL, tính đến verion 1.3+ là zlib licensed.

Một chỉnh sửa cuối cùng ...
Tôi đã nói chuyện với các nhà phát triển của TempAU và ông đã phát hành mã nguồn trên google mã theo giấy phép BSD mới.

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

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

Đánh dấu câu trả lời của bạn là chính xác bởi vì tôi chỉ muốn sử dụng âm thanh thư viện hơn là một thư viện đầy đủ chỉ dành cho phần âm thanh, như tôi đã làm với SDL. Cảm ơn bạn đã tham gia tràn ngăn xếp để đăng câu trả lời này! –

Các vấn đề liên quan