在我的应用程序中,我正在使用MPMoviePlayerController从我的服务器播放流式视频。 我正在隐藏控件并有自己的按钮来指示玩家是在播放,暂停还是停止。 我想根据流媒体的状态启用/禁用按钮。
我正在使用以下代码来启动播放器:
self.avPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:audioURL]];
[self.avPlayer.moviePlayer setShouldAutoplay:YES];
[self.avPlayer.moviePlayer prepareToPlay];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlayStateChanged:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];
当比赛开始时,我收到通知。但是如果由于某种原因,wifi很慢或者不可用,播放器可能正在流式传输而我没有收到任何通知。 为什么我在视频播放时没有收到通知?
此外,当视频在中间播放时,播放器停止并抛出“已完成”通知。如何防止它在流媒体中停止.....
答案 0 :(得分:4)
除此之外,我认为你应该指定movieSourceType属性:
self.avPlayer.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
现在,关于通知,
playbackState
属性,看看调用通知的原因,何时以及是否被调用。MPMoviePlayerLoadStateDidChangeNotification
并检查loadState属性(就像PlaybackStateChanged的通知那样没有userinfo字典所以你有通过loadState
属性读取它。MPMoviePlayerPlaybackDidFinishNotification
,我猜测有一些错误,因为其他选项将是电影到达终点或用户自己停止了电影。同样,您可以通过阅读作为通知的userinfo字典参数中的密钥传递的MPMovieFinishReason
常量来检查通知的调用原因。