开发者

Iphone mpmediaplayerController, unable to restart video after user presses done

开发者 https://www.devze.com 2023-03-19 12:33 出处:网络
I\'m having trouble with Iphone\'s mediaplayercontroller. I\'m able to play the video once, with no problems.

I'm having trouble with Iphone's mediaplayercontroller.

I'm able to play the video once, with no problems.

When the user presses done, I close the mediaplayer, and move my user back to the previous screen. (I'm using a navigation based application).

However, when I try to start the video again by pressing the play button, the mediaplayercontroller no longer works correctly.

All I get is a black screen. No video, no sounds.

I've already released the previous mediaplayper controller after getting the MPMoviePlayerPlaybackDidFinishNotification or the MPMoviePlayerDidExitFullscreenNotification.

Any advice would be greatly appreciated.

More Info------- Here is a snippet of my code:

- (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  
            开发者_Python百科                                  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];
}  


-(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];

}
0

精彩评论

暂无评论...
验证码 换一张
取 消