2010-04-12 12 views
2

Je rencontre des problèmes pour jouer quelques files avec AVAudioPlayer. Quand j'essaie de jouer un certain m4a, ça fonctionne bien. Cela fonctionne également avec un mp3 que j'essaie. Cependant, il échoue sur un mp3 particulier à chaque fois (15 pas, par Radiohead), indépendamment de l'ordre dans lequel j'essaie de les jouer. L'audio n'a tout simplement pas play, bien que le chargement de la vue et tout ce qui se passe simultanément se passe correctement. Le code est ci-dessous. Je reçois le "Lecteur chargé". journal de sortie sur les deux autres chansons, mais pas sur 15 étapes. Je sais que le file path est correct (j'ai le journal sorti plus tôt dans l'application, et c'est correct). Des idées?AVAudioPlayer ne s'initialise qu'avec certains fichiers

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."); 

Répondre

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

Ici, est musicDatanil pour le cas de problème?

aussi:

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

Vous ne devriez pas passer nil des méthodes qui prennent un objet NSError. Il est probable qu'il éclaircira votre problème si vous l'utilisez correctement:

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

Merci pour le conseil avec NSError ... Je suis nouveau à l'objectif-c et ne savais pas comment l'utiliser correctement. Je vais donner un coup de feu. Malheureusement, musicData n'est pas nul dans le problème. J'ai connecté l'URL qui s'y trouve, et c'est correct. Je vais essayer d'autres choses et republier si je continue à avoir un problème. Merci encore! – Brendan

1

Désolé pour entrer dans la fête si tard. Je veux juste poster un conseil pour que cela soit utile pour toute personne qui se réfère à cela dans le futur.

Une petite correction à la réponse de shaggy frog. L'utilisation correcte serait:

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

A eu le même problème - il s'agissait d'un problème intermittent, j'ai changé les données de formulaire en url et cela a fonctionné aussi – yeahdixon