2009-10-27 53 views
5

Tôi đang tìm thư viện có thể được sử dụng để thao tác các tệp âm thanh. Về cơ bản những gì tôi muốn làm là:Xử lý âm thanh C++

  1. tải một tập tin MP3/WAV

  2. Nhận một clip 15 giây của tập tin

  3. Overlay một file MP3/WAV ontop của nó

  4. Render như một tập tin MP3/WAV mới

Trả lời

0

Bạn có thể sử dụng bất kỳ API codec MP3 phổ biến nào để giải mã luồng, làm việc với nó và lưu lại. Ví dụ: bạn có thể sử dụng libLAME cho phần này.

Để pha trộn, bạn có thể tự làm điều đó (ví dụ, ngây thơ, thêm hai mẫu và chia cho hai mẫu - có thể không quá tốt) hoặc tìm một thư viện thích hợp cho nó.

Bạn cũng có thể quan tâm trong một câu hỏi Stack Overflow liên quan tại best c audio library linux

1

Thư viện libsox từ bít tất (và không http://libsox.sourceforge.net/ mà là một cái gì hoàn toàn khác nhau) dường như có một API đơn giản mà có thể được sử dụng. Tài liệu cung cấp ví dụ sau về âm thanh nổi để trộn đơn âm:

Trình bày mẫu làm số nguyên gây ra sự cố khi xử lý âm thanh . Ví dụ, nếu ảnh hưởng đến trộn xuống kênh trái và phải vào một kênh đơn âm là để sử dụng dòng

*obuf++ = (*ibuf++ + *ibuf++)/2; 

méo có thể xảy ra kể từ khi Ngoài trung gian có thể tràn 32 bit. Dòng

*obuf++ = *ibuf++/2 + *ibuf++/2; 

sẽ nhận được vòng vấn đề tràn (tại các chi phí của các bit ít quan trọng ).

0

Bạn có thể thử đưa ra này một cái nhìn qua http://terminatorx.org/ Tôi đã nhìn vào nó để làm một cái gì đó tương tự.

3

Nó không hỗ trợ MP3 vì lý do sáng chế, nhưng libsndfile là thư viện mã nguồn mở rất tốt (LGPL) để tải và lưu âm thanh ở nhiều định dạng âm thanh khác, bao gồm WAV. Đối với phần lớp phủ, thật dễ dàng khi bạn đã tải mẫu vào bộ nhớ ... bạn chỉ cần tính tổng mỗi mẫu trong tệp A với mẫu tương ứng của nó trong tệp B (và có thể mở rộng giá trị mẫu kết quả xuống một bit bằng cách nhân với hằng số, nếu bạn lo lắng về việc cắt bớt).

+0

+1 cho libsndfile. –

0

Thư viện âm thanh/synth C++ rất tốt là STK.Nó tải các công cụ và theo giấy phép loại BSD/MIT tức là bạn có thể sử dụng nó để phát triển các sản phẩm thương mại. Wav được hỗ trợ nhưng không phải MP3. Đối với MP3, bạn có thể sử dụng irrklang, ví dụ, miễn phí cho mục đích phi thương mại (cũng là MAD theo giới hạn, được sử dụng bởi vô số người).

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