MPMovieplayerViewController滞后于ios中的视频播放

时间:2013-06-13 11:01:26

标签: iphone ios mpmovieplayercontroller

我想在全屏播放当前viewcontroller播放视频。 所以我使用MPMoviePlayerViewController播放全屏视频,但问题是它不能流畅播放。 播放视频时它有点滞后。 这是我用于播放全屏视频的我的代码,该视频存储在phone / ipad的文档目录中

-(void)PlayVideo:(NSString *)videoFilePath
  {
NSURL *videoURL = [NSURL fileURLWithPath:videoFilePath];

NSLog(@"videoURL: %@", videoURL);

MPMoviePlayerViewController *playerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];

// Remove the movie player view controller from the "playback did finish" notification observers
[[NSNotificationCenter defaultCenter] removeObserver:playerVC
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:playerVC.moviePlayer];

// Register this class as an observer instead
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(movieFinishedCallback:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:playerVC.moviePlayer];

// Set the modal transition style of your choice
playerVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

// Present the movie player view controller
[self presentViewController:playerVC animated:NO completion:nil];

// Start playback
[playerVC.moviePlayer prepareToPlay];
[playerVC.moviePlayer play];

  }
- (void)movieFinishedCallback:(NSNotification*)aNotification
 {
// Obtain the reason why the movie playback finished
NSNumber *finishReason = [[aNotification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];

// Dismiss the view controller ONLY when the reason is not "playback ended"
if ([finishReason intValue] != MPMovieFinishReasonPlaybackEnded)
{
    MPMoviePlayerController *moviePlayer = [aNotification object];

    // Remove this class from the observers
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:moviePlayer];

    // Dismiss the view controller
    [self dismissViewControllerAnimated:YES completion:Nil];
   }
   }

1 个答案:

答案 0 :(得分:0)

除了

之外,没有发现任何代码问题
[[NSNotificationCenter defaultCenter] removeObserver:playerVC
                                            name:MPMoviePlayerPlaybackDidFinishNotification
                                          object:playerVC.moviePlayer];

removeObserver应该是self而不是playerVC

但是,你不会像你提到的那样引起任何问题。

我建议您尝试分析您的应用,这可能会引导您找到导致问题的代码。当播放视频时可能会在后台执行某些操作,导致视频滞后。