1

Je travaille sur un petit jeu, et j'ai un problème avec la musique de fond. J'utilise AVAudioPlayer pour jouer de la musique en boucle. Il est ressembler à ceci:Comment traiter AVAudioPlayer correctement dans l'objectif-c

NSString *path = [[NSBundle mainBundle] pathForResource:@"background" ofType:@"ogg"]; 
NSError *error; 

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:path] error:&error]; 

NSLog(@"%@", [error description]); 

[player setNumberOfLoops:-1]; 
player.delegate = self; 
[player play]; 

J'ai dans Supproting Files fichier background.ogg, background.mp3, background.wav et personne ne joue. Qu'est-ce qui va pas avec ça?

Et quand j'utilise NSLog imprimer erreur de description que j'ai:

Error Domain=NSOSStatusErrorDomain Code=1954115647 "The operation couldn’t be completed. (OSStatus error 1954115647.)" 

S'il vous plaît aider.

+1

Ceci est le code de 'kAudioFileUnsupportedFileTypeError'. Mais iOS peut certainement lire des fichiers MP3 et WAV, tout au plus ne peut-il pas gérer les fichiers OGG. Je suppose que le problème est que vous devriez utiliser '+ [NSURL fileURLWithPath:]' au lieu de 'URLWithString:' car un chemin de fichier lui-même n'est pas une URL valide. –

+0

@ H2CO3, 'error = (null)' quand j'utilise .mp3 et '+ [NSURL fileURLWithPath:]' mais toujours aucun son. –

Répondre

-1

C'était si facile. Il y a une chose de plus. Lorsque vous utilisez par exemple NSTimer vous devez ivalidate dans un endroit. Lorsque vous utilisez AVAudioPlayer vous devez stop dans une certaine place.

[player stop]; 
+0

où avez-vous mis cela dans votre code ci-dessus? – ngb

+0

À l'endroit où vous voulez arrêter la musique. –

0

Quelques fois, juste parce que se correspond pas à la qualité de votre fichier audio ce qu'il a besoin, comme l'échantillonnage rate.Please vérifier jusqu'à si votre taux d'échantillonnage audio est inférieure à 24 kHz. J'ai testé un audio, Et j'ai trouvé que lorsque le taux d'échantillonnage audio est supérieur à 44kHz, il fonctionne bien, mais s'il est inférieur à 44kHz & supérieur à 22kHz, l'AudioToolbox ne peut pas lire les sons en premier pendant que AVAudioPlayer peut fonctionner parfois. Et si elle est inférieure à 22kHz les deux ne pourront pas lire ces fichiers audio (format de fichier audio que j'ai testé juste "m4a", "mp3", "wav")

Par ailleurs, si vous voulez pour convertir le faible taux d'échantillonnage audio à 44kHz "m4a" fichier utiliser iTunes, il ne peut pas non plus travailler. Ne perdez pas votre temps sur ce point.

Questions connexes