質問
オーディオファイルの操作に使用できるライブラリを探しています。基本的に私がやりたいことは:
-
MP3 / WAVファイルの読み込み
-
ファイルの15秒のクリップを取得
-
その上に別のMP3 / WAVファイルをオーバーレイ
-
新しいMP3 / WAVファイルとしてレンダリング
解決
一般的なMP3コーデックAPIを使用して、ストリームをデコードし、ストリームを操作して、再度保存できます。たとえば、この部分に libLAME を使用できます。
ミキシングについては、自分で行うことができます(たとえば、単純に2つのサンプルを追加し、2つに分割します-あまり良くないかもしれません)。
他のヒント
特許上の理由でMP3をサポートしていませんが、 libsndfile は非常に便利です。 WAVを含むさまざまな他のオーディオ形式でオーディオをロードおよび保存するためのオープンソース(LGPL)ライブラリ。
オーバーレイ部分については、サンプルをメモリにロードしたら簡単です...ファイルAの各サンプルとファイルBの対応するサンプルを合計するだけです(結果のサンプル値を少し縮小することもできます)クリッピングを心配している場合は、定数を乗算します)。
soxのライブラリ libsox ( http://libsox.sourceforge.net/ (これはまったく異なるものです)には、使用できるシンプルなAPIがあるようです。ドキュメントには、ステレオからモノラルへのミキシングに関する次の例が記載されています。
サンプルを整数として表現すると、 処理時に問題を引き起こす オーディオ。たとえば、 左右のチャンネルをミックスダウンします 1つのモノラルチャンネルは 行
*obuf++ = (*ibuf++ + *ibuf++)/2;
中間加算はオーバーフローする可能性があります32 ビット。行
*obuf++ = *ibuf++/2 + *ibuf++/2;
オーバーフローの問題を回避します (最小限の費用で 有効ビット)。
これを見てみるといいかも http://terminatorx.org/ 同様のことをするために見ていました。