【发布时间】:2015-02-03 23:40:32
【问题描述】:
我正在使用 MPMoviePlayerController 播放来自 url 的 .m3u 类型的一些流媒体视频。他们的视频播放器完美启动,视频也开始完美播放,但只要我按下 Seek Forward 或 Next 或 beginSeekingForward 按钮,视频就会完全停止/冻结。之后,我可以单击Done 关闭播放器或擦洗progress bar,它将返回播放视频。但是我无法点击play/pause,或者至少似乎什么也没做。
我花了很长时间在网上四处寻找答案或至少一个提示,以便我可以在正确的方向上解决这个问题,但不是运气。所以,我真的希望有人可以帮助解决这个问题。顺便说一句,这只发生在 iOS 8+ 上,目前我正在 iOS 8.1 中测试它。
这就是我创建播放器并将视频加载到其中的方式。
NSURL *videoURL = [NSURL URLWithString:self.video.flvurl];
self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: videoURL];
self.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
self.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
self.moviePlayer.shouldAutoplay = NO;
self.moviePlayer.fullscreen = YES;
self.moviePlayer.repeatMode = YES;
self.moviePlayer.view.backgroundColor = [UIColor blackColor];
self.moviePlayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.moviePlayer.view.frame = self.containerView.frame;
[self.view addSubview:self.moviePlayer.view];
[self.moviePlayer prepareToPlay];
[self.moviePlayer play];
我尝试使用多个不同的通知来查看我是否可以在其中一个通知中捕捉到这一点,但完全不是运气。到目前为止,我已经测试了所有这些通知。我已将其添加到 self.moviePlayer 和 self.moviePlayer.view 中,但两者都不是运气。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(willResignActive:)
name:UIApplicationWillResignActiveNotification
object:self.moviePlayer.view];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(videoPlaybackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:self.moviePlayer.view];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(videoStartedPlaying:)
name:MPMoviePlayerNowPlayingMovieDidChangeNotification
object:self.moviePlayer.view];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(videoLoadState:)
name:MPMoviePlayerLoadStateDidChangeNotification
object:self.moviePlayer.view];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(videoPlaybackState:)
name:MPMoviePlayerPlaybackStateDidChangeNotification
object:self.moviePlayer.view];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(videoPlaybackUserInfoKey:)
name:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey
object:self.moviePlayer.view];
好吧,如果您需要更多相关代码,请告诉我。我真的需要一些帮助。在此先感谢。
【问题讨论】:
标签: ios objective-c ios8 mpmovieplayercontroller