我正在尋找可能被用來操縱音頻文件庫。基本上就是我想要做的是:C++聲音處理
加載的MP3/WAV文件
獲取文件
覆蓋另一個MP3/WAV文件ontop的它
的15秒剪輯呈現爲一個新的MP3/WAV文件
我正在尋找可能被用來操縱音頻文件庫。基本上就是我想要做的是:C++聲音處理
加載的MP3/WAV文件
獲取文件
覆蓋另一個MP3/WAV文件ontop的它
的15秒剪輯呈現爲一個新的MP3/WAV文件
您可以使用任何常見的MP3編解碼器API來解碼流,使用它並再次保存。例如,你可以使用libLAME這個部分。
至於混合,你既可以自己做的(例如,天真,由兩個增加兩個樣品和鴻溝 - 這可能不是聽起來好得),或者爲它找到一個合適的庫。
您可能也有興趣在一個相關的堆棧溢出問題在best c audio library linux
圖書館libsox從SOX(而不是http://libsox.sourceforge.net/這是完全不同的東西),似乎有一個簡單的API,它可以使用。該文檔給出了下面的示例用於立體聲到單聲道混合:
爲整數可以在處理 音頻時 造成問題代表樣本。例如,如果到 效果縮混左和右聲道成 一個單聲道信道分別使用 線可能發生
*obuf++ = (*ibuf++ + *ibuf++)/2;
失真由於 中間除了可以溢出32 位。該生產線
*obuf++ = *ibuf++/2 + *ibuf++/2;
將得到全面的溢出問題 (至少 顯著位的代價)。
,你可以嘗試這給人一種過目 http://terminatorx.org/ 我看着它做類似的事情。
由於專利原因,它不支持MP3,但libsndfile是一個非常不錯的開源(LGPL)庫,用於以各種其他音頻格式(包括WAV)加載和保存音頻。
至於覆蓋部分,這很簡單,一旦你得到加載到內存中的樣本......你剛纔總結每個樣品在文件中的與其對應的樣本文件B(以及可能的規模所產生的採樣值向下如果你擔心剪輯的話,通過乘以一個常數來實現)。
+1爲libsndfile。 – 2009-10-27 23:15:11