当 AVPlayer 播放来自网络流的 Assets 时,它会在下载内容结束时暂停。
所以,我的问题是,如何知道它是因为网络不好而停止的?以及如何在下载后播放它,比如说,接下来 10 秒的 Assets ?
最佳答案
当 AVPlayer 获得空缓冲区时,您可以添加一个观察者:
[[self.tracksPlayer currentItem] addObserver:self
forKeyPath:@"playbackBufferEmpty"
options:NSKeyValueObservingOptionNew
context:nil];
还有一个观察者,这样你就可以知道 AVPlayer 何时缓冲到足以跟上:
[[self.tracksPlayer currentItem] addObserver:self
forKeyPath:@"playbackLikelyToKeepUp"
options:NSKeyValueObservingOptionNew
context:nil];
然后只需在您的 KVO 回调中检查:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if (object == [self.tracksPlayer currentItem] &&
[keyPath isEqualToString:@"playbackBufferEmpty"]) {
if ([self.tracksPlayer currentItem].playbackBufferEmpty) {
NSLog(@"Buffer Empty");
}
} else if (object == [self.tracksPlayer currentItem] &&
[keyPath isEqualToString:@"playbackLikelyToKeepUp"]) {
if ([self.tracksPlayer currentItem].playbackLikelyToKeepUp) {
NSLog(@"LikelyToKeepUp");
}
}
}
关于ios - 在AVPlayer中播放互联网不畅的视频流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22813557/