HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – AVPlayer / AVPlayerItem如何通知我的应用程序无法访问网络故障?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_0@
我正在使用AVPlayer在iOS应用程序中实现自定义视频播放器.要从网络播放视频我分配了一个播放器:
[[AVPlayer alloc] initWithURL:_URL];@H_450_2@ 
 

创建资产:

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:self.URL
options:@{AVURLAssetPreferPreciseDurationAndTimingKey : @(YES)}];@H_450_2@ 
 

异步加载可播放键:

NSArray *keys = @[@"playable"];
[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^{
    dispatch_async(dispatch_get_main_queue(),^{
        for (NS@R_673_10495@ng *key in keys) {
            NSError *error;
            AVKeyValueStatus status = [asset statusOfValueForKey:key error:&error];

            if (status == AVKeyValueStatusFailed) {
                NSLog(@"Failed to load asset key %@ error %@",key,[error localizedDescription]);
                [self fail];
                return;
            }
        }

        if (asset.isPlayablE) {
            [self.player replaceCurrentItemWithPlayerItem:self.playerItem];
        }
        else {
            [self fail];
        }
    });
}];@H_450_2@ 
 

问题是,当设备没有互联网连接或高丢包时,永远不会调用completionHandler(即使在等待几分钟后),因此我不知道何时向用户显示加载视频失败的消息.

我的问题是:

>我错过了什么/有没有更好的方法来处理这个?
>我应该滚动自己的超时逻辑,还是应该永远不会异步加载值:当可达性认为网络无法访问时.
>有关AVPlayer和网络故障的最佳做法是什么?

@H_301_21@解决方法
您应该观察AVPlayerItem的(KVO)功能,揭示缓冲区的运行方式,例如playBACkBufferEmpty等.

大佬总结

以上是大佬教程为你收集整理的ios – AVPlayer / AVPlayerItem如何通知我的应用程序无法访问网络故障?全部内容,希望文章能够帮你解决ios – AVPlayer / AVPlayerItem如何通知我的应用程序无法访问网络故障?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。