ios – AVPlayerAVPlayerItem如何通知我的应用程序无法访问网络故障?

ios – AVPlayerAVPlayerItem如何通知我的应用程序无法访问网络故障?,第1张

概述我正在使用AVPlayer在iOS应用程序中实现自定义视频播放器.要从网络播放视频我分配了一个播放器: [[AVPlayer alloc] initWithURL:_URL]; 创建资产: AVURLAsset *asset = [AVURLAsset URLAssetWithURL:self.URLoptions:@{AVURLAssetPreferPreciseDurationAndTimi 我正在使用AVPlayer在iOS应用程序中实现自定义视频播放器.要从网络播放视频我分配了一个播放器:
[[AVPlayer alloc] initWithURL:_URL];

创建资产:

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

异步加载可播放键:

NSArray *keys = @[@"playable"];[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^{    dispatch_async(dispatch_get_main_queue(),^{        for (Nsstring *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];        }    });}];

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

我的问题是:

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

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

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1099324.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存