首页 文章

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

提问于
浏览
1

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

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

  • 如果为0,则显示"play"按钮 . (播放器已暂停)

  • 如果为1,则显示"pause"按钮 . (玩家正在玩)


除了一种情况外,这种方法很有效 . 当应用程序进入后台然后再次变为活动状态时,速率首先变为“1”然后变为“0” . 所以按钮从“暂停”变为“播放” .

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

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

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

我只是在观察到最后一次“0”速率变化后3秒再次检查速率 . 视频仍在播放,但速率仍为“0” .


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

1 回答

  • 0

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

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

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

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

    我现在暂停播放器 willResignActive: .


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

相关问题