Estoy tratando de reproducir un MP3
archivo que se pasa a un UIView
anterior UIView
(almacenado en una NSURL *fileURL
variable).
Estoy inicializando un AVPlayer
con:
player = [AVPlayer playerWithURL:fileURL];
NSLog(@"Player created:%d",player.status);
Las NSLog
impresiones Player created:0,
que imaginé significan que aún no está listo para jugar.
Cuando hago clic en reproducir UIButton
, el código que ejecuto es:
-(IBAction)playButtonClicked
{
NSLog(@"Clicked Play. MP3:%@",[fileURL absoluteString]);
if(([player status] == AVPlayerStatusReadyToPlay) && !isPlaying)
// if(!isPlaying)
{
[player play];
NSLog(@"Playing:%@ with %d",[fileURL absoluteString], player.status);
isPlaying = YES;
}
else if(isPlaying)
{
[player pause];
NSLog(@"Pausing:%@",[fileURL absoluteString]);
isPlaying = NO;
}
else {
NSLog(@"Error in player??");
}
}
Cuando ejecuto esto, siempre entro Error in player??
en la consola. Sin embargo, si sustituyo la if
condición que comprueba si AVPlayer
está listo para reproducirse, con un simple if(!isPlaying)
..., la música se reproduce la SEGUNDA VEZ que hago clic en reproducir UIButton
.
El registro de la consola es:
Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Playing:http://www.nimh.nih.gov/audio/neurogenesis.mp3 **with 0**
Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Pausing:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
2011-03-23 11:06:43.674 Podcasts[2050:207] Playing:http://www.nimh.nih.gov/audio/neurogenesis.mp3 **with 1**
Veo que la SEGUNDA VEZ player.status
parece contener 1, que supongo que es AVPlayerReadyToPlay
.
¿Qué puedo hacer para que la reproducción funcione correctamente la primera vez que hago clic en la reproducción UIButton
? (es decir, ¿cómo puedo asegurarme de que AVPlayer
no solo se haya creado, sino que también esté listo para jugar?)