Search code examples
iosiphonempmovieplayercontroller

MP movie controller removes when done button is clicked in iphone


I am playing video in MPmovieController it works fine but player removes when complete video is played.I want that when user pressed done button then video should stop here is the code i am using.

     NSURL*myURL=[NSURL fileURLWithPath:url];
     MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:myURL];

     [[NSNotificationCenter defaultCenter] addObserver:self
     selector:@selector(moviePlaybackComplete:)
     name:MPMoviePlayerPlaybackDidFinishNotification
     object:moviePlayerController];

     [moviePlayerController.view setFrame:CGRectMake(0,0,320,480)];
     [self.view addSubview:moviePlayerController.view];
     [moviePlayerController play];

- (void)moviePlaybackComplete:(NSNotification *)notification
     {
    MPMoviePlayerController *moviePlayerController = [notification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self                           name:MPMoviePlayerPlaybackDidFinishNotification                             object:moviePlayerController];
    [moviePlayerController.view removeFromSuperview];
    [moviePlayerController release];
       }

Solution

  • Try this one:

        NSURL *fileURL=[NSURL URLWithString:[[array objectAtIndex:videoid] valueForKey:@"VideoUrl"]];
        self.mpPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:fileURL];
        [self presentMoviePlayerViewControllerAnimated:self.mpPlayer];
        [self.mpPlayer.moviePlayer prepareToPlay];
        self.mpPlayer.moviePlayer.shouldAutoplay=NO;
        [self.mpPlayer.moviePlayer play];
    
    
    
     - (void)moviePlayBackDidFinish:(NSNotification*)notification
       {
          MPMoviePlayerController *moviePlayer = [notification object];
          [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:moviePlayer];
          [moviePlayer pause];
          [self dismissMoviePlayerViewControllerAnimated];
          // [moviePlayer.view removeFromSuperview];
      }
    

    may be it will help.

    happy coding...