2012-07-06 133 views
0

我无法理解这个类,并得到它才能正常工作之前,这里是一段代码,我使用它:的MPMoviePlayerController播放视频终止完成

MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:_videoURL]; 
UIImage *videoThumbnail = [moviePlayer thumbnailImageAtTime:0 timeOption:MPMovieTimeOptionNearestKeyFrame]; 
[lastImageView setImage:videoThumbnail]; 

[moviePlayer setControlStyle:MPMovieControlStyleNone]; 
[moviePlayer setShouldAutoplay:YES]; 
[moviePlayer prepareToPlay]; 

[moviePlayer.view setFrame:lastImageView.frame]; 
moviePlayer.view.transform = CGAffineTransformMakeRotation((90*M_PI)/180); 
[self.view addSubview:moviePlayer.view]; 

[moviePlayer play]; 

的唯一原因videoThumbnail线仍然有,因为我没有得到视频播放,直到我只是试图看看它是否会从那里得到的图像,然后突然开始工作......有点。 现在效力于2-3秒,然后终止而不发送MPMoviePlayerPlaybackDidFinishNotification或MPMoviePlayerPlaybackStateDidChangeNotification 我用Google搜索了一下周围,但没有找到任何有用的提示,可能会有人告诉我,什么是错的或者什么,我忘了

+0

删除这些行[moviePlayer setShouldAutoplay:YES]; [moviePlayer prepareToPlay];并检查。如果你正在调用[moviePlayer play];那么不需要这两条线。 – 2012-07-06 18:52:04

回答

2

如果”不要将新创建的MPMoviePlayerController实例分配给除局部范围变量(moviePlayer)以外的其他任何内容,则在电影播放前将取消分配电影播放器​​。 (我认为thumbnailImageAtTime通话会使它保持一段时间。)

尝试将电影播放器​​实例分配给保留的(强)实例变量或属性。当然,它应该在完成时被释放,因为多个电影播放器​​实例不能很好地一起玩。

此外,请注意,从iOS 5起,需要拨打prepareToPlay。以下是马特·纽伯格的编程的第28章的iOS 5,第二版

之前可以显示电影与的MPMoviePlayerController你的界面,则必须调用prepareToPlay,这是通过MPMediaPlayer供应协议(由MPMoviePlayerController采用)。这个要求在iOS 5中是新的,并且是与以前版本系统的主要区别;如果没有进行此调用,您的旧代码可能会中断。

相关问题