MPMoviePlayerViewController

MPMoviePlayerViewController

This question already has an answer here:
Dismiss MPMoviePlayerViewController on play error
                            
                                (1个答案)
                            
                    
                5年前关闭。
        

    

嘿,我使用MPMoviePlayerViewController来显示视频。我不知道该如何处理网络问题。我想在出错时关闭MPMoviePlayerViewController控制器。 dismissMoviePlayerViewControllerAnimated方法仅在第一次,第二次出现黑屏时才起作用。

示例代码:

// VideoViewController.h
#import <MediaPlayer/MediaPlayer.h>
@interface VideoViewController : MPMoviePlayerViewController
{
}
@end

// VideoViewController.m
@implementation VideoViewController
- (void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieDidLoad:) name:MPMoviePlayerContentPreloadDidFinishNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieDidLoad:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
}

-(void)movieDidLoad:(NSNotification*)notification
{
    [self dismissMoviePlayerViewControllerAnimated];
}
@end

// XController's function to call it
- (void)showVideoView
{
    VideoViewController * controller = [[VideoViewController alloc] initWithContentURL:[NSURL URLWithString:@"http://myvideos.com/movie.m4v"]];
    [self presentMoviePlayerViewControllerAnimated:controller];
    [controller.moviePlayer play];
    [controller release];
}


请告诉我如何处理网络问题。另请注意,视频始终处于全屏状态。

最佳答案

为什么创建VideoViewController有任何特殊原因?如果您想自定义某些内容,则可以在不创建内容的情况下完成所有操作。另一件事是,对于这两个通知,您都已注册“ movieDidLoad”此方法,这将关闭您的视图。当视频准备好播放时,由于已为“ MPMoviePlayerContentPreloadDidFinishNotification”注册了此方法,因此您的视图将被关闭。该链接将为您提供更多帮助:

- (void)playbackFinished:(NSNotification*)notification {
NSNumber* reason = [[notification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];
switch ([reason intValue]) {
    case MPMovieFinishReasonPlaybackEnded:
        NSLog(@"playbackFinished. Reason: Playback Ended");
        break;
    case MPMovieFinishReasonPlaybackError:
        NSLog(@"playbackFinished. Reason: Playback Error");
        break;
        case MPMovieFinishReasonUserExited:
        NSLog(@"playbackFinished. Reason: User Exited");
        break;
    default:
        break;
}
[self.movieController setFullscreen:NO animated:YES];


}

10-07 20:23