AVPlayer - 观察切换播放/暂停按钮的速率

时间:2015-04-16 18:52:49

标签: ios avfoundation avplayer

我正在使用AVPlayer而我只是试图正确地切换我的播放/暂停按钮。我无法根据用户操作进行切换,因为我有时会自动启动/停止播放器。

所以我正在观察AVPlayer的rate键,当发送通知时,我会检查rate

  • 如果为0,那么我会显示" play"按钮。 (播放器已暂停)
  • 如果为1,那么我会显示"暂停"按钮。 (玩家正在玩)

除了一种情况外,这种方法很有效。当应用程序进入后台然后再次激活时,速率首先进入" 1"然后到" 0"。所以按钮从"暂停"到"玩"。

但是,视频会继续播放,但我从未收到" 1"的另一个rate通知。

我甚至将其添加到观察rate的代码块:

[self performSelector:@selector(logRate) withObject:nil afterDelay:3.0];

我只是在最后一次" 0"之后3秒再次检查费率。观察到了费率变化。视频仍然在播放,但速度仍然是" 0"。


有没有人知道: 1.为什么会这样? 2.除了rate之外,是否有更好的方法来观察AVPlayer是播放还是暂停?

1 个答案:

答案 0 :(得分:0)

我不知道为什么会发生这种情况,但我确实找到了一个孤立的解决方案,也可以帮助更有知识的人解决这个问题。

我发现如果我在前往背景之前“暂停”播放器,当我前往前景并恢复“播放”时,我从未将速率从“1”变为“0”。它去了“1”并留在那里。

所以对于我的情况,我只是添加了一个观察:

  [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(willResignActive:) name:UIApplicationWillResignActiveNotification object:nil];

我现在暂停播放器willResignActive:


这告诉我的是,在AVPlayer正在播放时进入后台会使AVPlayer处于导致我询问的错误的状态,但我不知道任何进一步的详细信息现在

相关问题