【问题标题】:MPMoviePlayerController playback terminates before video finishesMPMoviePlayerController 播放在视频结束前终止
【发布时间】:2013-03-05 20:35:04
【问题描述】:

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

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 我用谷歌搜索了一下,找不到任何有用的提示,有人可以告诉我哪里出了问题或我忘记了什么

【问题讨论】:

  • 删除这些行 [moviePlayer setShouldAutoplay:YES]; [电影播放器​​准备播放];并检查。如果您正在调用 [moviePlayer 播放];那么就不需要这两行了。

标签: iphone objective-c ios mpmovieplayercontroller


【解决方案1】:

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

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

另外,请注意,从 iOS 5 开始,需要调用 prepareToPlay。以下内容来自 Matt Neuberg 的 Programming iOS 5, Second Edition 的第 28 章:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 2013-10-10
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多