2012-06-11 51 views
0

我使用MPMoviePlayerController,因为我想播放电影。MPMoviePlayerController Performance Hit

一个问题。当我创建MPMoviePlayerController时,该应用会停下来。

这是我的代码:

NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"m4v"]; 
    NSURL *videoURL = [NSURL fileURLWithPath:path]; 

    moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
    moviePlayer.scalingMode=MPMovieScalingModeFill; 
    moviePlayer.controlStyle=MPMovieControlStyleNone; 
    moviePlayer.shouldAutoplay=NO; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(movieRestartCallback:) 
               name:MPMoviePlayerPlaybackStateDidChangeNotification 
               object:nil]; 

    [moviePlayer.view setFrame:CGRectMake(20, 20, 280, 200)]; 
    [self.view addSubview:moviePlayer.view]; 

`

为什么应用程序停止? 这个问题解决方法吗?

+0

几乎没有停止ü意味着黑屏或应用刚刚暂停的几毫秒?给比利。 –

+0

是。那就对了! – Osushi

回答

0

我认为你可以使用多线程功能。

NSOperationQueue是线程安全的(您可以在不需要锁的情况下从不同的线程向其添加操作),并且可以将NSOperation对象链接在一起。

您可以使用以下代码捕捉来使用它们。

NSOperationQueue *queue = [NSOperationQueue mainQueue]; 
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ 
    // your code here 
}]; 

[queue addOperation:operation]; 

我希望对你有帮助。

1

如果您查看MPMoviePlayerController的文档,您会发现在示例中,即使将电影播放器​​添加到视图之前,它们也会调用prepareToPlay

我会加上[mediaPlayer prepareToPlay]你设置的球员。

MPMediaPlayback Protocol Reference说: “以尽量减少播放延迟,可以调用播放以前调用此方法”