1

我正在从 MPMoviePlayer(不是全屏)播放视频,当我进入全屏时,视频继续播放并显示全屏。但是当我再次关闭全屏时,我只能在播放“小”视频的地方看到黑色背景。它不响应触摸或任何东西。

我从不在我的播放器上调用 stop 并且没有声明 viewdiddissapear (或类似的)函数。电影播放器​​也没有发布。

我希望视频在我关闭全屏时继续播放。有什么想法吗?

**编辑它可以在 iPad 1 上运行,但不能在 iPad 2 上运行……奇怪……我需要它才能正常工作。

电影播放器​​初始化:

NSURL *fileURL = [NSURL fileURLWithPath:filePath];
self.moviePlayer = [[MPMoviePlayerController alloc] init];
self.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
self.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
self.moviePlayer.contentURL = fileURL;
self.moviePlayer.backgroundView.backgroundColor = [UIColor blackColor];
self.moviePlayer.shouldAutoplay = YES;
[self.moviePlayer.view setFrame:CGRectMake(1024, floorf((self.view.bounds.size.height / 2) - (318 / 2)), 425, 318)];
[self.moviePlayer prepareToPlay];


[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(MPMoviePlayerLoadStateDidChange:)
                                             name:MPMoviePlayerLoadStateDidChangeNotification
                                           object:self.moviePlayer];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(MPMoviePlayerDidFinish:)
                                             name:MPMoviePlayerPlaybackStateDidChangeNotification
                                           object:self.moviePlayer];

[self.view addSubview:self.moviePlayer.view];
[self.view bringSubviewToFront:self.moviePlayer.view];

[UIView animateWithDuration:0.25
                      delay:0.0
                    options:UIViewAnimationCurveEaseOut
                 animations:^{
                     self.moviePlayer.view.transform = CGAffineTransformIdentity;
                     self.moviePlayer.view.position = CGPointMake(floorf(787 - (self.moviePlayer.view.frame.size.width / 2)),
                                                      self.moviePlayer.view.position.y);
                 }
                 completion:nil];

通知

- (void)MPMoviePlayerLoadStateDidChange:(NSNotification *)notification
{
NSLog(@"Loadstate changed");
if((self.moviePlayer.loadState & MPMovieLoadStatePlaythroughOK) == MPMovieLoadStatePlaythroughOK)
{
    [self.moviePlayer play];
}
}

- (void)MPMoviePlayerDidFinish:(NSNotification *)notification
{
MPMovieFinishReason finishReason = (MPMovieFinishReason) [notification.userInfo objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];

switch(finishReason)
{
    case MPMovieFinishReasonPlaybackError: NSLog(@"Stopped playback due to error");
    case MPMovieFinishReasonPlaybackEnded: NSLog(@"I just quitted");
    case MPMovieFinishReasonUserExited: NSLog(@"User quitted");
}
}
4

0 回答 0