el video que se reproduce desde el background de la aplicación hasta el primer plano demora 2 segundos, a partir de la pausa, para reproducirse en iOS 6.0

Tengo VideoController que reproduce video. Ahora VideoController se presiona en el control de navigationController .

  VideoController *ObjVideoController = [[VideoController alloc] init]; ObjVideoController.strVideoURL = [AnimationArr objectAtIndex:SequenceCount]; [self.navigationController pushViewController:ObjVideoController animated:NO]; [ObjVideoController play:[AnimationArr objectAtIndex:SequenceCount]]; 

Play method en VideoController es así:

  - (void)play:(NSString*)videoFile { playbaktime = 0.0; NSBundle *main = [NSBundle mainBundle]; NSURL *url = [NSURL fileURLWithPath:[[main resourcePath] stringByAppendingPathComponent:videoFile]]; if (!self.ctl) { self.ctl = nil; self.ctl = [[MPMoviePlayerController alloc]init]; [self.view addSubview:self.ctl.view]; } [self.ctl prepareToPlay]; self.ctl.contentURL = url; self.ctl.controlStyle = 0; //self.ctl.useApplicationAudioSession = NO; [self.ctl.view setUserInteractionEnabled:NO]; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) [self.ctl.view setFrame:CGRectMake(0,0,480,320)]; else [self.ctl.view setFrame:CGRectMake(0,0,1024,768)]; self.ctl.backgroundView.backgroundColor = [UIColor whiteColor]; [self.ctl play]; } 

Ahora el observer ha sido agregado para UIApplicationWillResignActive , UIApplicationDidBecomeActive . Su selector se da a continuación:

  -(void)Pause_Video:(NSNotification*)notification { Pausevideo = 1; playbaktime = self.ctl.currentPlaybackTime; [self.ctl pause]; } -(void)Play_Video:(NSNotification*)notification { if(self.ctl.loadState == MPMovieLoadStateUnknown) { [self play:self.strVideoURL]; Pausevideo = 0; } else{ if (self.ctl.playbackState == MPMoviePlaybackStatePaused) { [self.ctl play]; Pausevideo = 0; } else { [self.ctl setInitialPlaybackTime:playbaktime]; [self.ctl play]; Pausevideo = 0; } } } 

Espero que entiendan la pregunta y la ayuda será apreciada.

Parece que prepareToPlay llamando a prepareToPlay cada vez que juegas, esto no es necesario, simplemente prepareToPlay una vez cuando cargues el file. No hay necesidad de llamarlo después de hacer una pausa.

Además, está incurriendo en un retraso porque las notifications no se activan al instante. Específicamente, UIApplicationDidBecomeActive solo dispara bien después de que la aplicación haya entrado en primer plano. Lo que quiere en su lugar es observar el UIApplicationWillEnterForegroundNotification , que disparará cuando la aplicación esté entrando en primer plano, y le permitirá disminuir significativamente el retraso.