0

マルチチャンネルミキサーベースのAUGraphを介して同期し、最大3つを同時に再生して、一度に複数のステレオオーディオファイル(数秒から4分までの範囲)を処理する必要があるiOSアプリを開発しています。私のオーディオファイルは、MP3、AAC、またはCAFのいずれかとして圧縮されていますが、バッファにロードされると、32ビット形式に変換されます(私のコードはAppleのiPhoneMultichannelMixerTestAudioUnitSampleTypeに基づいています)。言うまでもなく、このような大きなバッファでは、アプリのメモリがすぐに問題になります。

Appleのドキュメントには、iOSデバイスは一度に1つのMP3 / AACファイルをハードウェアでデコードできると記載されており、ソフトウェアでのデコードが必要な他のファイルにはCAF(IMA4)形式が推奨されています。再生中にオーディオを動的にロードするシステムを開発する前に、圧縮ファイルをバッファに直接ロードして(これによりメモリ要件を大幅に削減)、AUGraphにオンザフライで変換させることができるかどうかを知りたいですか?

4

1 に答える 1

0

私自身の質問に答えるには、Audio Unit 処理を使用して可能なカスタム処理を使用せずに、オーディオの正確な再生同期が必要な場合は、AVFoundation のAVPlayerAVAsset、およびAVCompositionクラスを確認してください。

この方法はビデオの再生により適しているように見えますが、オーディオ アセットのみを使用しても完全に機能します。これらのクラスは、メディア アセット (CAF、AAC、MP3 を含む) のすべての読み込みとバッファリングを処理し、その際に少量のメモリを使用し、AVURLAssetPreferPreciseDurationAndTimingKey. また、再生中の特定の時間に呼び出すように設定できる便利なコールバック メソッドがあります (UI の更新など)。最後に、Mac (10.7+) で利用できるようになったので、普遍的な Cocoa 開発に適したソリューションです。

于 2012-03-27T14:03:26.260 に答える