iphone - objective-c - 从远程服务器播放音频时显示缓冲进度

标签 iphone objective-c ios avaudioplayer avplayer

我正在使用 AVPlayer 从远程服务器播放音频。

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

AVPlayer 是否有显示此信息的任何 UI 组件?如果没有,我如何获得此信息(缓冲状态)?

谢谢

最佳答案

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 .

关于iphone - objective-c - 从远程服务器播放音频时显示缓冲进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13807278/

相关文章:

CSS 链接不适用于响应式设计

iphone - 如何在另一个 UIView Controller 中显示复杂的 UIViewController?

ios - 不兼容的指针类型将 'UITapGestureRecognizer *' 发送到类型 'UIView * _Nonnull' 的参数

ios - 我可以仅使用 appStoreConnect 帐户将应用程序放入 TestFlight 中吗

ios - 使用 SDWebImage 从视频 URL 获取缩略图

iphone - iOS Storyboard 如何访问控件和添加事件处理程序,以及将数据绑定(bind)到 Storyboard 上添加的控件

iphone - 获取 iPhone 中文件的 MD_5 哈希值

ios - AppLovin SDK for iOS 发生 "unrecognized selector sent to instance"错误

ios - 我可以以编程方式滚动到 UIPickerView 中所需的行吗?

ios - 单个 AVPlayerItem 中的两个声音淡入淡出