ios – 在AVPlayer中播放带有糟糕互联网的流

前端之家收集整理的这篇文章主要介绍了ios – 在AVPlayer中播放带有糟糕互联网的流前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当AVPlayer播放来自网络流的资源时,它会在到达下载内容的末尾时暂停.

所以,我的问题是,如何知道它因网络不良而停止了?如何在下载之后播放它,比方说,下一个10秒的资产?

解决方法

您可以在AVPlayer获取空缓冲区时添加观察者:
  1. [[self.tracksPlayer currentItem] addObserver:self
  2. forKeyPath:@"playbackBufferEmpty"
  3. options:NSKeyValueObservingOptionNew
  4. context:nil];

还有一个观察者,这样你就可以知道AVPlayer何时缓冲到足以跟上:

  1. [[self.tracksPlayer currentItem] addObserver:self
  2. forKeyPath:@"playbackLikelyToKeepUp"
  3. options:NSKeyValueObservingOptionNew
  4. context:nil];

然后在KVO回调中检查一下:

  1. - (void)observeValueForKeyPath:(NSString *)keyPath
  2. ofObject:(id)object
  3. change:(NSDictionary *)change
  4. context:(void *)context {
  5.  
  6. if (object == [self.tracksPlayer currentItem] &&
  7. [keyPath isEqualToString:@"playbackBufferEmpty"]) {
  8.  
  9. if ([self.tracksPlayer currentItem].playbackBufferEmpty) {
  10. NSLog(@"Buffer Empty");
  11. }
  12. } else if (object == [self.tracksPlayer currentItem] &&
  13. [keyPath isEqualToString:@"playbackLikelyToKeepUp"]) {
  14.  
  15. if ([self.tracksPlayer currentItem].playbackLikelyToKeepUp) {
  16. NSLog(@"LikelyToKeepUp");
  17. }
  18. }
  19. }

猜你在找的iOS相关文章