1.首先對playerItem 進行監聽
[playerItem addObserver:self forKeyPath:@"playbackBufferEmpty" options:NSKeyValueObservingOptionNew context:nil];
[playerItem addObserver:self forKeyPath:@"playbackLikelyToKeepUp" options:NSKeyValueObservingOptionNew context:nil];
2.在監聽方法里
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
if (!player)
{
return;
}
else if (object == playerItem && [keyPath isEqualToString:@"playbackBufferEmpty"])
{
if (playerItem.playbackBufferEmpty) {
// 做一些緩沖的操作 例如展示label 或者 加載一個緩沖條 playBufferEmpty (用於標識是否處於緩沖狀態)
playBufferEmpty = TRUE;
[indicator startAnimating];
[vidStreaminglabel setText:@"Buffering..."];
[vidStreaminglabel setHidden:NO];
}
}
else if (object == playerItem && [keyPath isEqualToString:@"playbackLikelyToKeepUp"])
{
if (playerItem.playbackLikelyToKeepUp)
{
//做一些結束緩沖的操作
playBufferEmpty = FALSE;
[indicator stopAnimating];
[vidStreaminglabel setHidden:YES];
}
}
}