2010-04-12 3 views
2

У меня возникли проблемы с воспроизведением некоторых files с AVAudioPlayer. Когда я пытаюсь сыграть определенную m4a, она работает нормально. Он также работает с mp3, который я пытаюсь. Однако каждый раз он отказывается от одного конкретного mp3 (15 шагов, от Radiohead), независимо от порядка, в котором я пытаюсь их воспроизвести. Звук просто не play, хотя загрузка изображения и все, что происходит одновременно, происходит правильно. Код ниже. Я получаю «Player загружен». выход журнала на две другие песни, но не на 15 Step. Я знаю, что file path правильный (у меня есть журнал, выведенный ранее в приложении, и он правильный). Есть идеи?AVAudioPlayer только инициализирует некоторые файлы

NSData *musicData = [NSData dataWithContentsOfURL:[[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:[song filename] ofType:nil]]]; 

NSLog([[NSBundle mainBundle] pathForResource:[song filename] ofType:nil]); 
if(musicData) 
{ 
    NSLog(@"File found."); 
} 

self.songView.player = [[AVAudioPlayer alloc] initWithData:musicData error:nil]; 

if(self.songView.player) 
{ 
    NSLog(@"Player loaded."); 
} 

[self.songView.player play]; 
NSLog(@"You should be hearing something now."); 

ответ

0
NSData *musicData = [NSData dataWithContentsOfURL:[[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:[song filename] ofType:nil]]]; 

Здесь есть musicDatanil для случая проблемы?

также:

self.songView.player = [[AVAudioPlayer alloc] initWithData:musicData error:nil]; 

Вы не должны пройти nil методы, которые принимают NSError объект. Вероятно, он будет проливать больше света на вашу проблему, если вы используете его правильно:

NSError* error = nil; 
self.songView.player = [[AVAudioPlayer alloc] initWithData:musicData error:&error]; 
if (error) 
{ 
    NSLog(@"Error with initWithData: %@", [error localizedDescription]); 
} 
+0

Спасибо за отзыв с помощью NSError ... Я новичок в объективе-c и не знал, как правильно его использовать. Я сделаю это. К сожалению, musicData не является нулем в случае проблемы. Я зарегистрировал URL-адрес, который входит в него, и это правильно. Я попробую еще несколько вещей и отправлю, если у меня будет проблема. Еще раз спасибо! – Brendan

1

Извините за то, что вы вошли на вечеринку так поздно. Просто хочу отправить отзыв, чтобы он был полезен для любого человека, который ссылается на это в будущем.

Небольшая поправка на ответ shaggy frog. Правильное использование будет:

NSError *anError = nil; 
anAVAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:someURL] error:&anError]; 
if (!anAVAudioPlayer) { 
    NSLog(@"localizedDescription : %@", [anError localizedDescription]); 
} 
+0

Имел ту же проблему - это была периодическая проблема, я переключил данные формы на url, и она тоже работала – yeahdixon

Смежные вопросы