【问题标题】:Resume AVPlayer stream playback last sampleResume AVPlayer 流播放最后一个样本
【发布时间】:2017-07-12 04:44:41
【问题描述】:

我正在尝试使用本机播放器 (AVPlayer) 在 iOS 上重现直播。但是,我无法恢复播放。当我停止播放并在几秒钟后继续播放时,播放从我暂停的那一刻开始,而不是再现当前(最后一个)直播样本。

有没有办法获得最后一个样本,o 配置 AVPlayer 以在点击播放按钮时从最后一个样本重现?

【问题讨论】:

  • 从 URL 重新创建 AVPlayerItem 是否可以实现所需的行为?
  • 最后,我找到的唯一解决方案是每次需要恢复播放时都请求直播URL。
  • 你是怎么做到的?
  • 基本上,停止播放器(销毁对象)并创建一个新的 AVPlayer 实例来配置 ViewController。我可以粘贴你的代码以备不时之需。
  • 您应该添加代码作为答案并接受它

标签: ios avplayer live-streaming http-live-streaming avplayerviewcontroller


【解决方案1】:

我的解决方案是基于拒绝用户让播放器暂停。也就是说,每次恢复播放时都会销毁播放器。并且每次创建一个新实例,播放的目的是恢复。

根据 Apple 的建议,要知道 AVPlayer 是否停止的唯一解决方案是添加 KVO。这是:

- (void)setupPlayer {
    AVPlayer *player = [AVPlayer playerWithURL:streamURL];
    AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc] init];
    playerViewController.player = player;
    self.playerViewController = playerViewController;

    [self configureConstraintsForView:self.playerViewController.view]; //Add Player to View

    [self setupObservers];

    [player play];
}

- (void)setupObservers {
    [self.playerViewController.player addObserver:self
                                       forKeyPath:@"rate"
                                          options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
                                          context:NULL];

}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey, id> *)change context:(void *)context
    if ([keyPath isEqualToString:@"rate"] && self.playerViewController.player.rate == CGPointZero.x) {
        [self.playerViewController.view removeFromSuperview];
        [self.playerViewController.player removeObserver:self forKeyPath:@"rate"];
        [self.playerViewController.player pause];
        self.playerViewController = nil;
    }
}

然后,当用户想要重新使用播放器时,只需调用 -(void)setupPlayer 从最后一个现场样本开始播放。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多