MPMoviePlayerController se detiene después de cuatro segundos

Estoy tratando de configurar un reproductor de video muy simple. (iOS 5.1, Xcode 4.3.1)

-(void)playMedia { NSString *movieFile = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"]; MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:movieFile]]; [moviePlayer prepareToPlay]; moviePlayer.view.frame = self.view.bounds; moviePlayer.scalingMode = MPMovieScalingModeAspectFit; moviePlayer.movieSourceType = MPMovieSourceTypeFile; moviePlayer.fullscreen = YES; moviePlayer.controlStyle = MPMovieControlStyleFullscreen; [self.view addSubview: moviePlayer.view]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playMediaFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer]; [moviePlayer play]; } 

Funciona bien cuando se llama, pero solo se reproduce durante cuatro segundos, luego aparece una pantalla negra. Si toco la pantalla durante la reproducción, reproducirá la secuencia completa. Si dejo de tocar la pantalla durante cuatro segundos, aparece la pantalla negra.

¿Qué me estoy perdiendo?

Kurt


La versión editada funciona bien.

En el file de interfaz:

 @property (nonatomic,strong) MPMoviePlayerController *myMovieController; 

En el file .m:

 -(void)playMedia { NSString *movieFile = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"]; MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:movieFile]]; [moviePlayer prepareToPlay]; moviePlayer.view.frame = self.view.bounds; moviePlayer.scalingMode = MPMovieScalingModeAspectFit; moviePlayer.movieSourceType = MPMovieSourceTypeFile; moviePlayer.fullscreen = YES; moviePlayer.controlStyle = MPMovieControlStyleFullscreen; self.myMovieController = moviePlayer; [self.view addSubview: self.myMovieController.view]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playMediaFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer]; [self.myMovieController play]; } 

Si estás usando ARC, creo que necesitas conservar el moviePlayer externo. Lo acabo de asignar a una propiedad nueva. HTH

La solución es que el jugador tendría que ser una variable de instancia o propiedad del controller de vista. Es decir, debemos usar la instancia de MPMoviePlayerController

@property (nonatomic, strong) MPMoviePlayerController * myMovieController;