目标c - 显示从远程服务器播放音频时的缓冲进度

时间:2012-12-10 18:52:58

标签: iphone objective-c ios avaudioplayer avplayer

我使用AVPlayer播放来自远程服务器的音频。

我想显示一个进度条,显示缓冲进度和"播放的时间"进度,就像播放电影时MPMoviePlayerController所做的那样。

AVPlayer是否有任何显示此信息的UI组件?如果没有,我怎样才能得到这个信息(缓冲状态)?

由于

1 个答案:

答案 0 :(得分:20)

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是您的期望。

您必须手动绘制缓冲区进度。

参考here