0

次のコードを実行しています。ビデオは正常に再生されますが、終了後は黒い画面になり、元のビューに戻ることはありません。黒い画面をタップすると、「読み込んでいます.....」というメッセージが表示されます。何が間違っているのか誰か説明してください。ありがとう

- (IBAction)video:(UIBarButtonItem *)sender
{
    {
        NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                             pathForResource:@"IMG_0973" ofType:@"MOV"]];
        moviePlayer=[[MPMoviePlayerController alloc] initWithContentURL:url];


        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDonePressed:) name:MPMoviePlayerDidExitFullscreenNotification object:moviePlayer];



        moviePlayer.controlStyle=MPMovieControlStyleDefault;
        //moviePlayer.shouldAutoplay=NO;
        [moviePlayer play];
        [self.view addSubview:moviePlayer.view];
        [moviePlayer setFullscreen:YES animated:YES];

    }

}

- (void) moviePlayBackDonePressed:(NSNotification*)notification
{
    [moviePlayer stop];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidExitFullscreenNotification object:moviePlayer];


    if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)])
    {
        [moviePlayer.view removeFromSuperview];
    }

    moviePlayer=nil;
}

- (void) moviePlayBackDidFinish:(NSNotification*)notification
{
    [moviePlayer stop];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];

    if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)])
    {
        [moviePlayer.view removeFromSuperview];
    }
}
4

3 に答える 3

1

この通知メソッドを追加

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePreloadDidFinish:) name:MPMoviePlayerLoadStateDidChangeNotification
                                               object:player];

このメソッドは、ムービーがロードされた後に呼び出され、このメソッドで moviePlayer ビューを追加します。

-(void)moviePreloadDidFinish:(NSNotification*)notification
{

   moviePlayer.controlStyle=MPMovieControlStyleDefault;
   [self.view addSubview:moviePlayer.view];
   [moviePlayer play];
   [moviePlayer setFullscreen:YES animated:YES];

}
于 2013-05-13T07:16:07.460 に答える
0
i think this will help you .....


 -(void)playVideo
{

    NSString *contentURL = [[NSBundle mainBundle] pathForResource:@"xyz" ofType:@"mp4"];

    MPMoviePlayerViewController *moviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:contentURL]];

    if (moviePlayerViewController)
    {
        [moviePlayerViewController.moviePlayer setMovieSourceType:MPMovieSourceTypeFile];

        [moviePlayerViewController.moviePlayer setFullscreen:YES];

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MovieFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerViewController.moviePlayer];

        [moviePlayerViewController.moviePlayer play];

        [navi presentModalViewController:moviePlayerViewController animated:NO];

        [moviePlayerViewController release];

        moviePlayerViewController  = nil;
    }

}
-(void)MovieFinished:(NSNotification *)notification
{
    MPMoviePlayerController *player = (MPMoviePlayerController *)notification.object;

   [player stop];


    [[NSNotificationCenter defaultCenter] removeObserver:self];

//do rest of the stuff


}
于 2013-05-13T05:32:17.877 に答える