Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone MPMoviePlayerController播放在视频结束前终止_Iphone_Objective C_Ios_Mpmovieplayercontroller - Fatal编程技术网

Iphone MPMoviePlayerController播放在视频结束前终止

Iphone MPMoviePlayerController播放在视频结束前终止,iphone,objective-c,ios,mpmovieplayercontroller,Iphone,Objective C,Ios,Mpmovieplayercontroller,我很难理解这个类并让它正常工作,下面是我使用它的一段代码: MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:_videoURL]; UIImage *videoThumbnail = [moviePlayer thumbnailImageAtTime:0 timeOption:MPMovieTimeOptionNearestKeyFrame]; [lastImag

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

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];
视频缩略图行仍然存在的唯一原因是因为我没有播放视频,直到我尝试看它是否能从那里获得图像,然后它突然开始工作。。。某种程度上。 现在播放2-3秒,然后在不发送MPMoviePlayerPlaybackDidFinishNotification或MPMoviePlayerPlaybackStateDidChangeNotification的情况下终止
我在谷歌上搜索了一下,找不到任何有用的提示,如果您没有将新创建的
MPMoviePlayerController
实例分配给具有本地作用域的变量(
moviePlayer
)以外的任何对象,有人能告诉我出了什么问题或忘记了什么吗,然后,电影播放器将在电影播放之前解除分配。(我想
thumbnailImageAtTime
调用可以让它保持更长的时间。)

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

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

在使用MPMoviePlayerController在界面中显示电影之前,必须调用prepareToPlay,它是通过MPMediaPlayer协议(由MPMoviePlayerController采用)提供的。这一要求在iOS 5中是新的,与以前版本的系统有很大区别;如果不打这个电话,你的旧代码可能会被破解


如果您没有将新创建的
MPMoviePlayerController
实例分配给除具有本地作用域的变量(
moviePlayer
)以外的任何对象,则将在播放电影之前释放电影播放器。(我想
thumbnailImageAtTime
调用可以让它保持更长的时间。)

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

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

在使用MPMoviePlayerController在界面中显示电影之前,必须调用prepareToPlay,它是通过MPMediaPlayer协议(由MPMoviePlayerController采用)提供的。这一要求在iOS 5中是新的,与以前版本的系统有很大区别;如果不打这个电话,你的旧代码可能会被破解


删除这些行[moviePlayer设置应自动播放:是];[电影播放器准备播放];检查一下。如果您正在呼叫[moviePlayer play];那么就不需要这两行了。删除这些行[moviePlayer setShouldAutoplay:YES];[电影播放器准备播放];检查一下。如果您正在呼叫[moviePlayer play];那么就不需要这两条线了。