私の質問は、iOSサンドボックスにオーディオファイルを含めるように事前構成して、ビルド後すぐにオーディオキュー構造をテストできるようにする方法だと思います。
サーバーでホストしているストリームからオーディオを再生するiOSアプリに取り組んでいます。HTTPストリームからデータを取得する方法に取り組む前に、AudioQueueServicesを使用して電話からファイルを再生することから始めようと思いました。一度に複数のオーディオストリームを再生したい場合は、AVPlayerやその他のサービスではなく、オーディオキューを使用する必要があることを理解しています。
私が抱えている問題は、ファイルが見つからないためにCFURLRefを構成できないことです。
AudioBufferPlayer *player = (AudioBufferPlayer*) inUserData;
if (player.playing) {
NSString *path = @"/Users/acopp/Library/Application Support/iPhone Simulator/5.1/Applications/F9CA1197-A661-4B2F-9B42-68A991F61B19/";
const char *filePath = [path cStringUsingEncoding:[NSString defaultCStringEncoding]];
CFURLRef audioFileURL = CFURLCreateFromFileSystemRepresentation(NULL, (const UInt8*)filePath, strlen(filePath), false);
OSStatus result = AudioFileOpenURL(audioFileURL, kAudioFileReadPermission, kAudioFileCAFType, player.mAudioFile);
UInt32 numBytesReadFromFile;
UInt32 numPackets = player.mNumPacketsToRead;
AudioFileReadPackets(
*(player.mAudioFile),
false,
&numBytesReadFromFile,
NULL,
player.mCurrentPacket,
&numPackets,
inBuffer->mAudioData
);
if (numPackets > 0) {
inBuffer->mAudioDataByteSize = numBytesReadFromFile;
AudioQueueEnqueueBuffer(inAudioQueue, inBuffer, 0, NULL);
player.mCurrentPacket += numPackets;
}
AudioFileReadPacketsでEXC_BAD_ACCESSというエラーが表示され、この時点でOSStatusの結果が-50に設定されているため、AudioFileOpenURL呼び出しが失敗していると思います。
私の問題は、この時点で*パスが実際には何も指していないことだと思います。問題は私が行くときです
@"/Users/acopp/Library/Application Support/iPhone Simulator/5.1/Applications/F9CA1197-A661-4B2F-9B42-68A991F61B19/"
私の4つのオプションは、Demo3、Documents、Library、およびtempです。これらのどれにも、プロジェクトに追加したquick.cafファイルがありません。
TL、DR-何かを見落とさない限り、iPhoneシミュレーターでコードをテストできるように、ビルドする前にサンドボックスにオーディオファイルを追加する方法を尋ねていると思います。