MPMoviePlayerController播放在video结束之前终止

我无法理解这个类并使其正常工作,下面是我使用它的一段代码:

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行仍然存在的唯一原因是因为我没有得到video播放,直到我只是试图看看它是否会从那里得到的形象,然后突然开始工作…sorting。 现在它播放2-3秒,然后终止而不发送MPMoviePlayerPlaybackDidFinishNotification或MPMoviePlayerPlaybackStateDidChangeNotification我search了一下,找不到任何有用的提示,有人可以告诉我什么是错的或我忘了

如果您不是将新创build的MPMoviePlayerController实例分配给除局部范围( moviePlayer )的variables之外的其他任何内容,则将在电影播放之前取消分配电影播放器​​。 (我想thumbnailImageAtTime调用保持一段时间。)

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

另外请注意,从iOS 5起,需要调用prepareToPlay 。 以下是Matt Neuberg 编程iOS 5第二版的第28章:

在使用MPMoviePlayerController在界面中显示影片之前,您必须先调用prepareToPlay,该文件是通过MPMediaPlayer协议(MPMoviePlayerController采用的)提供的。 这个要求在iOS 5中是新的,与以前版本的系统有很大的不同。 如果没有进行此调用,您的旧代码可能会中断。