私の他の投稿に続いて、デコードされたオーディオ パケットに対して MFCC 抽出のような処理を行うことができるかどうか疑問に思っています。私が使用するコードは、ffmpeg を使用して mpeg-2 ファイルからオーディオとビデオをデコードします。このライブラリはフレームを 1 つずつ取得することを許可しているため、ビデオの処理は opencv を使用して行われます。対応するオーディオ サンプルを同時に処理する必要があります。
ありがとう。
「Crosstalk」という名前のC++オーディオエンジンを作成しました。
これは「オーディオエンジン」と呼ばれていますが、実際には単なるリアルタイムC ++データ(浮動小数点)処理エンジンです。Crosstalkを使用すると、システムを設計時およびリアルタイムで作成およびルーティングできます。基本的に、エンジンはすべてのデータルーティングを処理し、データを処理するためのコンポーネントを作成するためのシンプルなプラットフォームを提供します(たとえば、「ビデオフィード」コンポーネントと並列に接続された「オーディオフィード」コンポーネント)。ブランチの合計バッファ長が等しい限り、ブランチは完全に同期されます。
とても使いやすいです。mp3ファイルを再生するようにシステムを構成する方法の例を次に示します(ここで使用されるコンポーネントはエンジンに付属しています)。
XtSystem system;
XtMp3Decoder mp3Decoder;
XtAudioDevice audioDevice;
long md = system.addComponent(&mp3Decoder);
long ad = system.addComponent(&audioDevice);
system.connOutToIn(md,0,ad,0);
system.connOutToIn(md,1,ad,1);
mp3Decoder.loadFile("../05 Tchaikovski-Swan Lake-Scene.mp3");
mp3Decoder.play();
ここでAPIドキュメントとライセンスの詳細を確認できます:http ://www.adaptaudio.com/Crosstalk
編集(2012年1月12日):
Crosstalkは、「 DSPatch 」と呼ばれるオープンソースプロジェクトに置き換えられました。DSPatchは基本的に、Crosstalkの背後にあるルーティングエンジンのアップグレードバージョンであり、オーディオ処理のみに限定されなくなりました。DSPatchを使用すると、考えられるほぼすべてのタイプのプロセスチェーンを作成およびルーティングでき、個人的および独自の使用のために無料で使用できます:)