恢复AVPlayerstream播放的最后一个示例

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

有没有办法得到最后一个样品,oconfigurationAVPlayer从最后一个样品点击播放button时重现?

我的解决scheme是基于拒绝用户保持播放器暂停。 这是每次播放恢复时都会损坏播放器。 并且每次创build一个新的实例,播放都打算重新开始。

根据苹果的build议,知道AVPlayer是否停止的唯一解决scheme是添加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来从最后的现场采样开始播放。