iOS播放video黑屏?

我一直在谷歌浏览各种解释,但我仍然无法弄清楚,当这个代码触发屏幕是黑色的。 任何人都可以发现一个错误?

UPDATE

- (IBAction)playVideo:(id)sender { NSURL *videoUrl = [[DataStore singletonInstance] getVideoUrl:self withUuid:self.eventDetailVC.event.uuid]; if ([videoUrl checkResourceIsReachableAndReturnError:nil] == NO) { NSLog(@"Video doesn't not exist."); return; } MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:videoUrl]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:player]; [previewView addSubview:player.view]; player.view.frame = previewView.bounds; player.controlStyle = MPMovieControlStyleDefault; [player play]; } - (void)moviePlayBackDidFinish:(NSNotification*)notification { NSLog(@"moviePlayBackDidFinish: called"); MPMoviePlayerController *player = [notification object]; [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player]; // Checking for errors NSDictionary *notiUserInfo = [notification userInfo]; if (notiUserInfo != nil) { NSError *errorInfo = [notiUserInfo objectForKey:@"error"]; if ([[errorInfo domain] isEqualToString:@"MediaPlayerErrorDomain"]) { UIAlertView *notice = [[UIAlertView alloc] initWithTitle:@"Error" message:[errorInfo localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [notice show]; return; } } // Remove from view [player.view removeFromSuperview]; [player stop]; } 

FYI moviePlayBackDidFinish根本不被调用。 我不知道为什么。

为MPMoviePlayerController创build属性,因为在将其添加为子视图后保留视图,但不保留控制器。

 @property (strong, nonatomic) MPMoviePlayerController *player; ... @synthesize player = _player; ... - (IBAction)playVideo:(id)sender { NSURL *videoUrl = [[DataStore singletonInstance] getVideoUrl:self withUuid:self.eventDetailVC.event.uuid]; if ([videoUrl checkResourceIsReachableAndReturnError:nil] == NO) { NSLog(@"Video doesn't not exist."); return; } self.player = [[MPMoviePlayerController alloc] initWithContentURL:videoUrl]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; [previewView addSubview:_player.view]; _player.view.frame = previewView.bounds; _player.controlStyle = MPMovieControlStyleDefault; [_player play]; } - (void)moviePlayBackDidFinish:(NSNotification*)notification { NSLog(@"moviePlayBackDidFinish: called"); [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; // Checking for errors NSDictionary *notiUserInfo = [notification userInfo]; if (notiUserInfo != nil) { NSError *errorInfo = [notiUserInfo objectForKey:@"error"]; if ([[errorInfo domain] isEqualToString:@"MediaPlayerErrorDomain"]) { UIAlertView *notice = [[UIAlertView alloc] initWithTitle:@"Error" message:[errorInfo localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [notice show]; return; } } // Remove from view [_player.view removeFromSuperview]; [_player stop]; self.player = nil; }