gpt4 book ai didi

iPhone - MPMoviePlayerController 识别何时停止播放和何时开始

转载 作者:行者123 更新时间:2023-12-03 20:45:50 25 4
gpt4 key购买 nike

在我的应用程序中,我使用 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 速度慢或不可用,播放器可能正在流式传输,但我没有收到任何通知。为什么我在视频播放时没有收到通知?

此外,当视频在中间播放时,播放器会停止并抛出“已完成”通知。如何防止流媒体播放时停止......

最佳答案

首先,我认为您应该指定 movieSourceType 属性:

self.avPlayer.movi​​ePlayer.movi​​eSourceType = MPMovieSourceTypeStreaming;

现在,关于通知,

  • 首先,为什么不检查之前和之后的 playbackState 属性,了解通知被调用的原因、何时以及是否被调用。
  • 也许更可靠的指标是处理 MPMoviePlayerLoadStateDidChangeNotification 并检查 loadState,因为这些似乎是连接问题。属性(与 PlaybackStateChanged 的​​通知一样,没有 userinfo 字典,因此您必须通过 loadState 属性读取它)。
  • 最后,对于在流式传输过程中抛出的 MPMoviePlayerPlaybackDidFinishNotification ,我猜测存在一些错误,因为其他选项可能是电影到达结尾或用户自己停止电影。同样,您可以通过读取作为通知的 userinfo 字典参数中的键传递的 MPMovieFinishReason 常量来检查调用通知的原因。

关于iPhone - MPMoviePlayerController 识别何时停止播放和何时开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7054897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com