2012-10-16 35 views
7

Tôi muốn xử lý âm thanh trực tuyến/trực tiếp nơi tôi liên tục đọc các mẫu âm thanh từ một tệp âm thanh, xử lý các tệp này (ví dụ: áp dụng một số hiệu ứng) và chuyển tiếp các mẫu đã xử lý đến thiết bị đầu ra âm thanh như một soundcard. Các tập tin đầu vào có các định dạng phổ biến như wav, mp3, thậm chí có thể ogg.Thư viện để đọc các tệp âm thanh

Có thư viện nào tương tự như libav/ffmpeg cho các tệp âm thanh giúp đơn giản hóa việc đọc các định dạng âm thanh khác nhau và cung cấp cho tôi một dòng các mẫu âm thanh thô không đổi? Hoặc là giải pháp tốt nhất để sử dụng các thư viện riêng lẻ cho mỗi định dạng? Các thư viện phải là c/C++ và tương thích chéo plattform (Mac, Win, Linux, ARM).

EDIT Cảm ơn mọi câu trả lời. Tôi đã đánh giá tất cả các thư viện và đi đến kết luận rằng tốt nhất là chỉ cần gắn bó với libav/ffmpeg vì hầu hết các thư viện yêu cầu ffmpeg như một phần phụ trợ.

+1

Tôi không biết về ARM, nhưng trên nền tảng khác mà bạn đề cập, bạn có thể sử dụng thư viện âm thanh BASS (Un4seen phát triển) để giải mã. Nó hỗ trợ các định dạng này một cách tự nhiên. – DuXeN0N

+0

Cảm ơn. Tôi đã kiểm tra trang web của họ và họ nói rằng ARM cũng được hỗ trợ. Nhưng các phần của thư viện dường như là nguồn đóng. Có bất kỳ thư viện LGPL hoặc thư viện được cấp phép tương tự nào không? – Hyndrix

+1

Có lẽ libsndfile (http://www.mega-nerd.com/libsndfile/)? Hoặc SOX (http://sox.sourceforge.net/Main/HomePage)? Đã không sử dụng chúng bản thân mình nhưng họ trông đầy hứa hẹn. –

Trả lời

1

LibVLC có thể thực hiện việc này. libvlc hỗ trợ hầu hết các định dạng âm thanh (và video) khác nhau. Đó là thư viện đa nền tảng C/C++. Nó cũng nên hỗ trợ tạo mã Arm.

3

Khám phá Juce. Nó là một thư viện lớn đã được sử dụng để phát triển các plug-in âm thanh VST cho phần mềm âm nhạc. Có rất nhiều thứ bạn không cần ở đó, nhưng tôi nghĩ bạn có thể chọn và chỉ chọn các phần âm thanh để đưa vào bản dựng của mình. AudioFormatReader và các lớp liên quan của nó có thể thực hiện việc đọc tệp và cũng có các lớp để xuất ra thẻ âm thanh. Có rất nhiều công cụ xử lý âm thanh khác nữa. Đó là giấy phép GPL, nền tảng chéo và họ yêu cầu hỗ trợ Android thử nghiệm. Tôi chưa sử dụng nó cho một dự án, nhưng tôi đang chờ đợi nguồn cảm hứng!

2

tôi muốn kiểm tra libSDL, nó có một hệ thống âm thanh được xây dựng để làm những việc như thế và xử lý ogg, mp3, flac, wav, vv ..

1

Bạn có thể sử dụng irrKlang thư viện. Tôi đã sử dụng nó cho các trò chơi của mình. Nó là thư viện rất đơn giản để sử dụng, ví dụ để chơi một số tập tin "somefile.mp3" bạn chỉ cần viết

engine->play2D("somefile.mp3", true); 

Và thư viện này cũng là nền tảng. Và làm việc với C++, C# và tất cả các ngôn ngữ .NET.

Nhiều tính năng của thư viện này (từ trang web của riêng mình)

Nó có tất cả các tính năng được biết đến từ các thư viện âm thanh ở mức độ thấp cũng như rất nhiều tính năng hữu ích như một động cơ trực tuyến tinh vi, đọc âm thanh mở rộng , chế độ đơn và đa luồng, âm thanh 3d mô phỏng cho phần cứng cấp thấp, hệ thống plugin, nhiều kiểu cuộn và hơn thế nữa. Tất cả điều này có thể được truy cập thông qua một API cực kỳ đơn giản.

0

GAudio Library có thể là một trong những bạn persuit. Nó là đơn giản, mạnh mẽ, đa nền tảng và mở rộng

Các hello world của Gaudio như thế này:

gaudio_init("addons"); 

const char* filename = "..\\media\\trek12.wav"; 

gsource* source = gaudio_source_create_from_file(filename,FALSE); 
if(source == NULL) 
{ 
    printf("load file:%s error!\n",filename); 
    printf("bad source.\nerror code:%d.\n",gaudio_error_get()); 
    gaudio_deinit(); 
    return -1; 
} 

printf("play filename:%s\n",filename); 

gaudio_source_play(source,FALSE); 

printf("\nplaying, press any key to quit.\n"); 
getch(); 

gaudio_source_stop(source); 
gaudio_source_destroy(source); 

gaudio_deinit(); 
Các vấn đề liên quan