我无法理解这个类并让它正常工作,这是我使用它的代码段:
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 :(得分:3)
如果您没有将新创建的MPMoviePlayerController
实例分配给具有局部范围(moviePlayer
)的变量以外的任何内容,则在电影播放之前将取消分配电影播放器。 (我想thumbnailImageAtTime
调用会让它保持更长时间。)
尝试将影片播放器实例分配给保留的(强)实例变量或属性。当然,它应该在完成时发布,因为多个电影播放器实例不能很好地一起播放。
另请注意,从iOS 5开始,需要调用prepareToPlay
。以下是Matt Neuberg的编程iOS 5,第二版的第28章:
在使用MPMoviePlayerController在界面中显示影片之前,必须调用prepareToPlay,它通过MPMediaPlayer协议(由MPMoviePlayerController采用)提供。此要求是iOS 5中的新增功能,与以前版本的系统有很大不同;如果没有拨打此电话,您的旧代码可能会中断。