Я использую AudioFileOpenURL для доступа к аудиофайлу.Он отлично работает на моем устройстве, но не в симуляторе.Вот где выдается ошибка:
XThrowIfError(AudioFileOpenURL (sndFile, kAudioFileReadPermission, 0/*inFileTypeHint*/, &mAudioFile), "can't open file");
Любые возможные идеи, почему это может быть?
РЕДАКТИРОВАТЬ 1
Здесьмои распечатки sndFile на симуляторе, а затем на устройстве:
SIMULATOR
2011-04-13 12:20:10.259 iMC[51887:207] CreateQueueForFile /var/folders/u6/u6pKbm2MFriwajkdt-OQME+++TI/-Tmp-/LoopExtended.wav
2011-04-13 12:20:10.322 iMC[51887:207] sndFile file://localhost/var/folders/u6/u6pKbm2MFriwajkdt-OQME+++TI/-Tmp-/LoopExtended.wav
Error: can't open file (-43)
2011-04-13 12:20:10.323 iMC[51887:207] URL: /var/folders/u6/u6pKbm2MFriwajkdt-OQME+++TI/-Tmp-/LoopExtended.wav
DEVICE
2011-04-13 12:21:07.829 iMC[3061:307] CreateQueueForFile /private/var/mobile/Applications/16194CBB-F0B3-4D39-9655-8FD67C247D74/tmp/LoopExtended.wav
2011-04-13 12:21:07.846 iMC[3061:307] sndFile file://localhost/private/var/mobile/Applications/16194CBB-F0B3-4D39-9655-8FD67C247D74/tmp/LoopExtended.wav
2011-04-13 12:21:07.859 iMC[3061:307] URL: /private/var/mobile/Applications/16194CBB-F0B3-4D39-9655-8FD67C247D74/tmp/LoopExtended.wav
РЕДАКТИРОВАТЬ 2
void AQPlayer::CreateQueueForFile(CFStringRef inFilePath)
{
// printf("CreateQueueForFile called \n ");
NSString *local_recordFilePath_NSString = (NSString *)inFilePath;
NSLog(@"CreateQueueForFile %@", local_recordFilePath_NSString );
CFURLRef sndFile = NULL;
try {
if (mFilePath == NULL)
{
mIsLooping = false;
sndFile = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, inFilePath, kCFURLPOSIXPathStyle, false);
if (!sndFile) { printf("can't parse file path\n"); return; }
NSLog(@"sndFile %@", sndFile);
XThrowIfError(AudioFileOpenURL (sndFile, kAudioFileReadPermission, 0/*inFileTypeHint*/, &mAudioFile), "can't open file");
UInt32 size = sizeof(mDataFormat);
// printf("SIZE %i\n ", size);
XThrowIfError(AudioFileGetProperty(mAudioFile,
kAudioFilePropertyDataFormat, &size, &mDataFormat), "couldn't get file's data format");
mFilePath = CFStringCreateCopy(kCFAllocatorDefault, inFilePath);
}
SetupNewQueue();
}
catch (CAXException e) {
char buf[256];
fprintf(stderr, "Error: %s (%s)\n", e.mOperation, e.FormatError(buf));
}
if (sndFile)
CFRelease(sndFile);
}
РЕДАКТИРОВАТЬ3
CFStringRef local_recordFilePath;
local_recordFilePath = (CFStringRef)[NSTemporaryDirectory() stringByAppendingPathComponent: @"LoopExtended.wav"];
player->CreateQueueForFile(local_recordFilePath);