我正在使用AVPlayer
从远程服务器播放音频。
我想显示一个进度条,显示缓冲进度和“播放时间”进度,就像MPMoviePlayerController
播放电影时一样。
是否AVPlayer
有任何显示此信息的 UI 组件?如果没有,我怎样才能得到这个信息(缓冲状态)?
谢谢
我正在使用AVPlayer
从远程服务器播放音频。
我想显示一个进度条,显示缓冲进度和“播放时间”进度,就像MPMoviePlayerController
播放电影时一样。
是否AVPlayer
有任何显示此信息的 UI 组件?如果没有,我怎样才能得到这个信息(缓冲状态)?
谢谢
不,AVPlayer 没有 UI 组件。
你应该观察AVPlayerItem.loadedTimeRanges
[yourPlayerItem addObserver:self forKeyPath:@"loadedTimeRanges" options:NSKeyValueObservingOptionNew context:nil];
然后使用KVO观看
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
if(object == player.currentItem && [keyPath isEqualToString:@"loadedTimeRanges"]){
NSArray *timeRanges = (NSArray*)[change objectForKey:NSKeyValueChangeNewKey];
if (timeRanges && [timeRanges count]) {
CMTimeRange timerange=[[timeRanges objectAtIndex:0]CMTimeRangeValue];
}
}
}
timerange.duration
是你所期望的。
而且您必须手动绘制缓冲区进度。
参考这里。