我創建了一個播放實時視頻的MPMoviePlayerViewController。但是,如果我播放視頻兩次,即打開播放器,單擊完成並再次播放流。結果只是一個沒有MPMoviePlayerViewController控件的黑屏。我需要停止模擬器,因爲我認爲應用程序崩潰。以下是我做的MPMoviePlayerViewController不能在第二次運行
- (void) playUrl:(NSURL *)movieInfo
{
NSURL *streamUrl = movieInfo;
MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentURL:streamUrl];
[[mpvc view] setFrame:self.view.bounds];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
mpvc.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
[mpvc.moviePlayer setControlStyle:MPMovieControlStyleFullscreen];
[mpvc.moviePlayer setShouldAutoplay:YES];
[mpvc.moviePlayer setFullscreen:NO animated:YES];
[mpvc setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[mpvc.moviePlayer setScalingMode:MPMovieScalingModeNone];
[mpvc.moviePlayer setUseApplicationAudioSession:NO];
[self presentMoviePlayerViewControllerAnimated:mpvc];
}
- (void) movieFinishedCallback:(NSNotification*) aNotification
{
MPMoviePlayerController *player = [aNotification object];
[player stop];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:player];
[player.view removeFromSuperview];
NSLog(@"stopped?");
}
嘗試解除當前未顯示視圖的模式視圖控制器,從而解決了該問題。 self = modalViewController = 我收到此消息 –
drbj
嗨,我還看到你有一個'presentMoviePlayerViewControllerAnimated'調用。這是否使用'UIViewController'' presentMoviePlayerViewControllerAnimated'方法?如果是這樣,你應該使用'dismissXXX'對應的刪除它。 – Sheamus
由於'MPMoviePlayerViewController'已被棄用,我還更新了我的答案,並提出了更新到'AVPictureInPictureController'或'AVPlayerViewController'的建議。 – Sheamus