0

私は自分の側で本当に深刻な問題を抱えています:

16種類のサウンドを同時に再生するオーディオ同期BEATBOXを作成しています。

mp3ファイルのTIME-SYNCを実装するために、AVAudioPlayerをあきらめ、次のAUGraphメソッドを含めました。

MixerHostAudio.mおよびMixerHostAudio.h

これは、Appleの開発者向けリソースでダウンロードしました。

実装はシミュレーターでは正常に機能しましたが、4番目のファイルをロードした後にクラッシュしたデバイスでは機能しませんでした...

ファイルをkAudioFormatLinearPCM形式でロードしていました。

次のように変更しました:kAudioFormatMPEGLayer3

すべての.mp3ファイルを出力するので、それが必要な形式になると思いました。

APPはリソースをロードできましたが、startAUGraphメソッドでエラーが発生しました。

APPはデバイスでクラッシュしませんでしたが、サウンドもデバイスでもシミュレータでも再生されません。

ビットレートを32から16に変更してみましたが、役に立ったようです。

4

1 に答える 1

0

解決済み:

圧縮されたオーディオ ファイルを iOS の AUGraph または AudioBuffer にロードする方法はないようです。したがって、linearPCM への変換が必要です。

29 秒の .mp3 ファイルはそれぞれ 500 KB でしたが、linearPCM に変換すると 5 MB のファイルになりました。

iPhone 3G では、アプリケーションごとに約 20 MB の RAM メモリを使用できます。これが、4 番目のファイルをロードした後に APP がクラッシュした理由を説明しています ( 4 * 5 = 20 :p )

理想的な解決策は、毎回ファイルの一部 (たとえば 1 秒) のみをロードするバッファリング アルゴリズムを実装することです。

当時、このソリューションは頭を悩ませていたので、実際のソリューションでは、ループの短いファイルをロードして、3G および 3GS デバイスにロードできるようにしていました。iPhone4 はフル オリジナル ループをロードします。

すべての返信に感謝します。

ヘルナン

于 2011-05-03T10:49:28.710 に答える