的MPMoviePlayerController播放视频终止完成
问题描述:
我无法理解这个类,并得到它才能正常工作之前,这里是一段代码,我使用它:的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搜索了一下周围,但没有找到任何有用的提示,可能会有人告诉我,什么是错的或者什么,我忘了
答
如果”不要将新创建的MPMoviePlayerController
实例分配给除局部范围变量(moviePlayer
)以外的其他任何内容,则在电影播放前将取消分配电影播放器。 (我认为thumbnailImageAtTime
通话会使它保持一段时间。)
尝试将电影播放器实例分配给保留的(强)实例变量或属性。当然,它应该在完成时被释放,因为多个电影播放器实例不能很好地一起玩。
此外,请注意,从iOS 5起,需要拨打prepareToPlay
。以下是马特·纽伯格的编程的第28章的iOS 5,第二版:
之前可以显示电影与的MPMoviePlayerController你的界面,则必须调用prepareToPlay,这是通过MPMediaPlayer供应协议(由MPMoviePlayerController采用)。这个要求在iOS 5中是新的,并且是与以前版本系统的主要区别;如果没有进行此调用,您的旧代码可能会中断。
删除这些行[moviePlayer setShouldAutoplay:YES]; [moviePlayer prepareToPlay];并检查。如果你正在调用[moviePlayer play];那么不需要这两条线。 – 2012-07-06 18:52:04