2012-02-13 11 views
2

ファイルベースのビデオアセットのオーディオストリームをリアルタイムで傍受してサウンドトラックにいくつかのライブエフェクトを適用してミックスしようとしていますビデオの再生中に他のオーディオソースとリアルタイム処理のためにビデオアセットのオーディオトラックの生データにアクセスする

理想的には、AVPlayerオブジェクトのオーディオトラックを取得し、別のアドレス指定可能な入力としてオーディオグラフに挿入し、適切なオーディオユニットを使用してコールバック処理した後、オーディオ出力への配信はリアルタイムで行われますが、元のビデオアセットの整合性を維持しながら簡単な方法を見つけることはできません。私はAVPlayerのオーディオバッファにアクセスして、生のデータをサウンド処理コールバックに転送する方法を見つけることができませんでした。

唯一の適切なアプローチは、オーディオトラックとビデオトラックを別々のファイルとして処理し、AVPlayerを使用してビデオトラックを処理し(オーディオを削除して)、すべてのオーディオ別々のCore Audio処理パスを並行して実行していますが、このアプローチではAV同期を難しくし、面倒なオフライン準備作業を追加することになります。任意のアイデアや代替アプローチ?

答えて

0

私はAVAudioPlayerはリアルタイム対応ではなく、この高レベルのフレームワークを最低レベルのAudio Units(およびオーディオグラフ)と直接接続することはできないと思います。

オーディオグラフにファイルプレーヤーノードを実装することをお勧めします。このプレーヤーノードはビデオからオーディオを再生するものとする。しかし、おそらく新しいAVAudioEngineが良いアプローチですが、このフレームワークは非常にバグが多く、現時点では十分に文書化されていません。 オーディオ信号のリアルタイム処理は、それ自体が難しい話題です。ビデオと組み合わせると、本当に難しいです。あなたのアプリケーションに実現可能なソリューションが見つかった場合は、私に知らせてください。

関連する問題