MPMoviePlayerController播放在视频播放完成之前终止

时间:2012-07-06 17:49:19

标签: iphone objective-c ios 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了一下,找不到任何有用的提示,有人能告诉我什么是错的或我忘了什么

1 个答案:

答案 0 :(得分:3)

如果您没有将新创建的MPMoviePlayerController实例分配给具有局部范围(moviePlayer)的变量以外的任何内容,则在电影播放之前将取消分配电影播放器​​。 (我想thumbnailImageAtTime调用会让它保持更长时间。)

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

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

  
    

在使用MPMoviePlayerController在界面中显示影片之前,必须调用prepareToPlay,它通过MPMediaPlayer协议(由MPMoviePlayerController采用)提供。此要求是iOS 5中的新增功能,与以前版本的系统有很大不同;如果没有拨打此电话,您的旧代码可能会中断。