1

* .wavファイルはかなり大きいので、アプリにプリロードしたいと思います。viewcontroller1ロードを開始してから、で再生したいと思いviewcontroller15ます。プリロードするコードが必要です。それを再生するためのコードは次のとおりです。

CFBundleRef mainbundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef =CFBundleCopyResourceURL(mainbundle, (CFStringRef) @"america", CFSTR ("wav"), NULL);
UInt32 soundID;
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
AudioServicesPlaySystemSound(soundID);
4

1 に答える 1

1

wavファイルのヘッダーをプリロードするには、ごく少量のデータを読み取る必要があります。これは、オーディオ再生ストリームを初期化するのに十分です。また、再生を開始するには、再生バッファ(読み取るデータの量がかなり少ない)を埋める必要があります。

オーディオファイルのサンプルデータをプリロードするには、AudioFile*APIとカスタムI/Oコールバックを使用できます。

ただし、説明するシナリオは、オーディオファイルのサンプルデータをプリロードしない場合の良い例です。

wavファイルはディスクからリアルタイムでストリーミングできます。再生する前にファイル全体のサンプルデータを読み取る必要はありません。リアルタイム再生には、大きなオーディオファイルをメモリにロードする必要はありません。もちろん、iOSデバイスのメモリの上限も低くなっています。

ストリームのプリロードと初期化が必要な場合は、ExtAudioFile*APIを使用しても、などのAPIを使用してストリーミングできますAudioQueue*

あなたが直面している問題についてのもう少し詳細が役立つかもしれません。この場合、オーディオファイルのサンプルデータをプリロードする正当な理由はわかりません。マイナスの副作用のみ。

于 2012-08-04T05:03:01.397 に答える