2

ユーザーが曲をリミックスできるゲームを作成しています。ミキサーを作成しました(アップルのサンプルコードMixerHost(ミキサーaudioUnitを使用してaudioGraphを作成)に基づいています)が、12トラックをロードするように拡張されました。すべてが正常に機能していますが、ゲーマーが曲をロードするのに非常に長い時間がかかります。リミックスする曲を選択します。これは、音楽の再生を開始する前に、プログラムが12個の個別のmp4ファイルをメモリにロードする必要があるためです。

私が必要としているのは、ミキサーへのファイルのロードを担当するAUFilePlayeraudioUnitを作成することだと思います。AUFilePlayerがその場でファイルのロードを処理できる場合、ユーザーはファイルが100%メモリにロードされるのを待つ必要はありません。私の2つの質問は、1。AUFilePlayerをこのように使用できますか?2.AUFilePlayerのドキュメントは非常に薄いです。iOS(MacOSではない)でAUFilePlayerを適切に実装する方法を示すサンプルコードはどこにありますか?

ありがとう

4

1 に答える 1

3

私はあなたが正しいと思います-この場合、「ディスクから直接」バッファリングアプローチがおそらくあなたが必要とするものです。正しいAudioUnitサブタイプはAudioFilePlayerです。ドキュメントから:

ユニットはオーディオファイルデータを読み取り、独自の内部バッファに変換します。プロセス内のこのユニットのすべてのインスタンス間で共有される優先度の高いスレッドでディスクI/Oを実行します。ディスクの読み取りが完了すると、ユニットは内部で再生用のバッファをスケジュールします。

Mac OS Xでこのユニットを使用する実例は、ChrisAdamsonの著書LearningCoreAudioに記載されています。iOSのコードはそれほど違いはなく、CoreAudio-APIメーリングリストのこのスレッドで説明されています。Adamsonの実用的なコード例はここにあります。これを要件に適合させることができるはずです。

于 2012-07-12T13:40:45.150 に答える