2012-01-26 5 views
4

Итак, я пытаюсь протестировать аудиоплеер на iPhone, и я ушел с iOS-книги Троя Бранта. У меня есть базовые модули Core Audio, Core Foundation, AudioToolbox и AVFoundation, добавленные в мой проект. Сообщение об ошибке, которое я получаю, находится в поле темы. Я прочитал, как 20 страниц результатов поиска Google, прежде чем приступать к заданию здесь! /вздох. Спасибо, если вы можете помочь. Вот мой код, довольно много дословный из его книги:iOS 5.0 AVAudioPlayer Ошибка при загрузке аудиоклипа: операция не может быть завершена. (Ошибка OSStatus -50.)

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"Yonah" ofType:@"caf"]; 
NSLog(@"%@", soundFilePath); 
NSURL *fileURL = [NSURL URLWithString:soundFilePath]; 
NSError *error; 
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error]; 

if (!error) 
{ 
    audioPlayer.delegate = self; 
    //audioPlayer.numberOfLoops = -1; 
    [audioPlayer play]; 
} 
else 
{ 
    NSLog(@"Error loading audio clip: %@", [error localizedDescription]); 
}  

EDIT: Holy Shinto. Я понял, что это было. Я изменил

NSURL *fileURL = [NSURL URLWithString:soundFilePath]; 

в

NSURL *fileURL = [NSURL fileURLWithPath:soundFilePath]; 

к последнему, и я получаю странные ошибки, страннее, чем в теме НО я гугле, что и я изменил свое устройство ввода ОС с веб-камеры для мой внутренний микрофон и угадайте, что он работал по методу fileURLWithPath. Я буду. Проклятый.

+0

.caf должны быть поддержаны в iOS5, но, возможно, вы должны попробовать mp3 или еще что-то. вы не забыли импортировать свой Jonah.caf в проект? Также: почему вы устанавливаете делегата - вам это нужно? Вы получаете ту же ошибку, если вы просто вызываете [audioPlayer prepareToPlay]; вместо [audioPlayer play] ;? –

ответ

0

Попробуйте прочитать звуковой файл с чем-то вроде этого:

audioPlayer_ = [[AVAudioPlayer alloc] initWithContentsOfURL: 
[NSURL fileURLWithPath:[NSString stringWithString:soundFilePath_]] 
error:&error]; 
2

попробовать это Одно- преобразовать URL в NSData

NSString* resourcePath = self.audioStr; //your url 
NSData *_objectData = [NSData dataWithContentsOfURL:[NSURL URLWithString:resourcePath]]; 
NSError *error = [[NSError alloc] init]; 

NSLog(@"url is %@",resourcePath); 

audioPlayer = [[AVAudioPlayer alloc] initWithData:_objectData error:&error]; 
audioPlayer.numberOfLoops = 0; 

if (error) 
{ 
    NSLog(@"Error in audioPlayer: %@", 
      [error localizedDescription]); 
} else { 
    audioPlayer.delegate = self; 
    [audioPlayer prepareToPlay]; 
}`