我正在构建由streaming(默认iOS播放器)处理在线AV Player的应用程序。

我想为HD流添加按钮,如何实现?

最佳答案

我发现的解决方案是确保基础AVAsset准备好将基本信息(例如持续时间)返回给AVPlayer。 AVAsset有一个loadValuesAsynchronouslyForKeys:方法,它很方便:

AVAsset *asset = [AVAsset assetWithURL:self.mediaURL];
[asset loadValuesAsynchronouslyForKeys:@[@"duration"] completionHandler:^{
    AVPlayerItem *newItem = [[AVPlayerItem alloc] initWithAsset:asset];
    [self.avPlayer replaceCurrentItemWithPlayerItem:newItem];
}];

在我的情况下,URL是网络资源,replaceCurrentItemWithPlayerItem:实际上将阻塞几秒钟,等待此信息下载。

10-08 15:41