Iphone mpmediaplayerController, не может перезапустить видео после того, как пользователь нажал - PullRequest
0 голосов
/ 09 июля 2011

У меня проблемы с контроллером медиаплеера Iphone.

Я могу воспроизвести видео один раз, без проблем.

Когда пользователь нажимает «Готово», я закрываю медиаплеер, ипереместить моего пользователя обратно на предыдущий экран.(Я использую приложение на основе навигации).

Однако, когда я пытаюсь запустить видео снова, нажав кнопку воспроизведения, контроллер медиаплеера перестает работать правильно.

Все, что я получаю, эточерный экран.Нет видео, нет звуков.

Я уже выпустил предыдущий контроллер медиаплеера после получения MPMoviePlayerPlaybackDidFinishNotification или MPMoviePlayerDidExitFullscreenNotification.

Любой совет будет принят с благодарностью.

Подробнее------- Вот фрагмент моего кода:

- (void) viewDidAppear:(BOOL)animated
{
moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
[self.view addSubview:moviePlayerController.view]; 

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

[[NSNotificationCenter defaultCenter] addObserver:self  
                                         selector:@selector(moviePlaybackComplete:)  
                                             name:MPMoviePlayerDidExitFullscreenNotification  
                                           object:nil];  // This is to deal with the user pressing the done button.

[moviePlayerController setFullscreen:YES];
[moviePlayerController play];

}

- (void)moviePlaybackComplete:(NSNotification *)notification  
{  
NSLog(@"movie playback ended");
int reason = [[[notification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] intValue];
if(reason == MPMovieFinishReasonPlaybackEnded)
    NSLog(@"Reason: MPMovieFinishReasonPlaybackEnded");
else if(reason == MPMovieFinishReasonPlaybackError)
    NSLog(@"Reason: MPMovieFinishReasonPlaybackError");
else if(reason == MPMovieFinishReasonUserExited)
    NSLog(@"Reason: MPMovieFinishReasonUserExited");
else
    NSLog(@"Reason: %d", reason);

[[NSNotificationCenter defaultCenter] removeObserver:self  
                                                name:MPMoviePlayerPlaybackDidFinishNotification  
                                              object:nil];  

[[NSNotificationCenter defaultCenter] removeObserver:self  
                                                name:MPMoviePlayerDidExitFullscreenNotification  
                                              object:nil];  

[moviePlayerController.view removeFromSuperview]; 
moviePlayerController.initialPlaybackTime = -1; 
[moviePlayerController pause];
[moviePlayerController stop];
[moviePlayerController release]; 
moviePlayerController = nil;

[[self navigationController] popViewControllerAnimated:YES];
}  

1 Ответ

0 голосов
/ 15 июля 2011
-(void)videoFile:(NSString *)moviepath
{

    //[tools setHidden:YES];
//  bi3.enabled=NO;

    // Register to receive a notification when the movie scaling mode has changed. 


    //NSString *moviePath = [bundle pathForResource:@"video" ofType:@"mp4"];
    NSURL  *movieURL1 = [[NSURL fileURLWithPath:moviepath] retain];
    MPMoviePlayerController *theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movieURL1];
    [theMovie setControlStyle:MPMovieControlStyleFullscreen];
    [theMovie play];
    MPMoviePlayerViewController *moviePlayer11 = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL1];
    [self presentMoviePlayerViewControllerAnimated:moviePlayer11];  // Override point for customization after app launch    
    // [navigationController.view addSubview:];
    //[self.view addSubview:mpMCtr.view];



}
- (void) movieFinishedCallback:(NSNotification*) aNotification 
{
    bi3.enabled=YES;
    [tools setHidden:NO];
    MPMoviePlayerController *player = [aNotification object];
    [[NSNotificationCenter defaultCenter] 
     removeObserver:self
     name:MPMoviePlayerPlaybackDidFinishNotification
     object:player];
   // [player stop];
    //[self.view removeFromSuperview];
[player.view removeFromSuperview];

       [player autorelease];    
}

- (void) moviePlayBackDidFinish:(NSNotification*)aNotification
{

    MPMoviePlayerController* theMovie=[aNotification object]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self 
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:theMovie];
    //[mpMCtr stop];

    [theMovie.view removeFromSuperview];
    [videoTable removeFromSuperview];


    //[self.navigationController popViewControllerAnimated:YES];
}

-(void)videoClick:(id)sender
{
    bi3.enabled=NO;
    path2 = [[NSBundle mainBundle] pathForResource:@"Interview" ofType:@"mp4" inDirectory:nil];
    [self videoFile:path2];

}
...