This question already has an answer here:
Dismiss MPMoviePlayerViewController on play error
(1个答案)
5年前关闭。
嘿,我使用MPMoviePlayerViewController来显示视频。我不知道该如何处理网络问题。我想在出错时关闭MPMoviePlayerViewController控制器。 dismissMoviePlayerViewControllerAnimated方法仅在第一次,第二次出现黑屏时才起作用。
示例代码:
请告诉我如何处理网络问题。另请注意,视频始终处于全屏状态。
}
(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