使用系统的AVplayer做点播播放器,断网播放出错后player的duration和playableDuration获取不到,写了get方法获取不到时返回0,然后就掉坑里了。

获取播放时长的get方法

- (NSTimeInterval)duration {return isnan(vodPlay.hlsPlayer.duration)?0:vodPlay.hlsPlayer.duration;}return 0;
}

获取缓存进度的get方法

- (NSTimeInterval)playableDuration {return isnan(vodPlay.hlsPlayer.playableDuration)?0:vodPlay.hlsPlayer.playableDuration;}return 0;
}

因为返回了0,所以播放出错时,totalTime,导致进度条被重置到了0的位置,并没办法滑动。因为

    self.vodSlider.maximumValue = totalTime;self.vodSlider.minimumValue = 0.0;

设置了进度条的最大值是播放时长度,出错后maximumValue被设置成了0,就出现了进度条滑块被重置到0的位置,并无法滑动了的问题。

由于totalTime成了0,playableDuration也成了0,

[self.vodSlider.progressView setProgress:playable/totalTime animated:NO];

playable/totalTime分子分母都为0,导致了不可预知的问题,滑块的缓存进度值就会是个不确定的值,导致缓存显示出问题。

关于Slider

设置滑竿和时间的方法

- (void)setProgressTime:(CGFloat)currentTime totalTime:(CGFloat)totalTime playableValue:(CGFloat)playable
{if (!self.vodSlider.isDragging) {//总时长self.vodTotalTimeLabel.text = [VHPlayerSkinTool timeFormat:totalTime];//更新当前播放时间self.vodCurrentTimeLabel.text = [VHPlayerSkinTool timeFormat:currentTime];//全屏显示时间self.vodfullScreenTimeLabel.text = [NSString stringWithFormat:@"%@/%@",self.vodCurrentTimeLabel.text,self.vodTotalTimeLabel.text];// 更新sliderself.vodSlider.maximumValue = totalTime;self.vodSlider.minimumValue = 0.0;self.vodSlider.value        = currentTime;}//更新缓存时长[self.vodSlider.progressView setProgress:playable/totalTime animated:NO];
}

改成

- (void)setProgressTime:(CGFloat)currentTime totalTime:(CGFloat)totalTime playableValue:(CGFloat)playable
{if (!self.vodSlider.isDragging && currentTime > 0 && totalTime > 0) {//总时长self.vodTotalTimeLabel.text = [VHPlayerSkinTool timeFormat:totalTime];//更新当前播放时间self.vodCurrentTimeLabel.text = [VHPlayerSkinTool timeFormat:currentTime];//全屏显示时间self.vodfullScreenTimeLabel.text = [NSString stringWithFormat:@"%@/%@",self.vodCurrentTimeLabel.text,self.vodTotalTimeLabel.text];// 更新sliderself.vodSlider.maximumValue = totalTime;self.vodSlider.minimumValue = 0.0;self.vodSlider.value        = currentTime;}//NSLog(@"******* playable %f %f %f",playable,currentTime,totalTime);//更新缓存时长,播放出错时,播放器返回的playable和totalTime是0。if (playable > 0 && totalTime > 0) {[self.vodSlider.progressView setProgress:playable/totalTime animated:NO];}
}

AVplayer断网播放出错时player的duration、playableDuration、totalTime相关推荐

  1. Ctdb Rados(二):多场景断网高可用

    Ctdb Rados(二):多场景断网高可用 原文地址: https://www.tony-yin.site/201- 之前写过一篇文章[Ctdb Rados方式导致All Banned的问题],谈到 ...

  2. 断网演练中遇到的问题及总结

    一.背景 断网演练就是模拟单个数据中心完全不可用,但业务部门需要保证断网过程中的业务"零感知".本次是我们系统参与的第六轮断网演练,在断网前,我们也做了充足的准备,如:域名分机房垂 ...

  3. mysql vip切换未重连问题_服务器断网事务未提交导致MYSQL锁表问题(ADSL拨号上网)...

    环境描述: 由于特殊原因服务器的网络是电信ADSL拨号上网的,用"自动切换IP精灵"进行自动断网重连,每次重新连上网络需要2s时间,设置2小时切换一次网络. MYSQL数据库在远程 ...

  4. 播放器php调用不显示不出来,php – Jwplayer:加载播放器时出错:找不到可播放的来源...

    我正在用jwplayer 6实现视频播放. 我有高级版帐户.还使用wowza服务器进行流媒体传输. jwplayer.key = "XXXXXXXXXXXXXXXXXXX"; jw ...

  5. python断网还能用吗_室友打游戏时,让他断网掉线!明明没断网就是没网!Python黑客!...

    原标题:室友打游戏时,让他断网掉线!明明没断网就是没网!Python黑客! 为了满足新手对Python的追求,特写了三个初级Python入门工具.第一期写了三个初级工具,希望新手看完以后可以对Pyth ...

  6. java ftp上传超时_有关java的ftp上传文件时断网的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我有一个java的ftp程序,他既是客户端又是服务端,我把程序放在两台电脑上运行, computer1和computer2,在computer1为文件上传 ...

  7. 播放网易云音乐时,有电话呼入,音乐并不会停止播放。

    偶然发现网易云音乐的一个bug! 手机调成振动时,用网易云音乐播放歌曲,此时有电话呼进,音乐不会停止 今天听音乐时,有电话打进来,一直没听见,按理说有电话呼入音乐应该停止播放,处于好奇尝试复现了一下, ...

  8. 怎么让计算机锁屏之后网络不断,win10系统如何设置锁屏时不断网|win10系统锁屏断网的还原办法...

    win10系统使用久了,好多网友反馈说win10系统如何设置锁屏时不断网|win10锁屏断网的问题,非常不方便.有什么办法可以永久解决win10系统如何设置锁屏时不断网|win10锁屏断网的问题,面对 ...

  9. 断电断网等原因致使重新进入linux时系统进不去,进不了图形界面,出现/dev/sda2 recovery,clean,,,

    断电断网等原因致使重新进入linux时系统进不去,进不了图形界面,出现/dev/sda2 recovery,clean,,, 许多方法说是驱动问题,现在看来不是,至少不完全是,我的意思是重装驱动可能能 ...

最新文章

  1. 3142:[HNOI2013]数列 - BZOJ
  2. adb通信协议分析以及实现(二):adb服务进程发现设备
  3. [数据结构考前必看]中缀表达式转化成后缀表达式_例题超多+分步骤讲解+带你手算
  4. 区分一下强制类型转换运算符重载/赋值运算符重载/对象定义的赋值
  5. 刚回到北京,倒时差中……
  6. Qt工作笔记-ListWidget拖动(拖拽)到QGraphicsScene
  7. 主内存和工作内存交互
  8. Mysql解压版配置环境等
  9. esp8266一键安装arduino板_STM32 与 Arduino
  10. [渝粤题库]西北工业大学大学物理
  11. java structs_Java之Structs框架初探
  12. QSS设置字体透明度
  13. 谷歌浏览器帮助用户在安装前识别不受信任的扩展
  14. 电力电子转战数字IC——我的IC笔试(2022.10.14更新)
  15. php实现推广海报,php微信推广海报PHP CodeIgniter框架源码解析
  16. ZJNU——1259:幸运数字(找规律题)
  17. practice是什么意思_practice是什么意思
  18. 网页版chatGPT,国内直接打开就用的chatgpt
  19. 如何制作捐赠二维码,实现开源项目或免费应用的捐赠收款(支付宝篇)
  20. oracle 判断一年有多少周

热门文章

  1. 解决depot_tools clone不了 443 connection refused
  2. unordered_map使用详解
  3. Expanding Low-Density Latent Regions for Open-Set Object Detection
  4. NGINX做反向代理缓存服务器原理
  5. 程序出现错误如何解决
  6. 概念澄清:如何直接拿到promise的返回值
  7. Android 修改SIM卡默认VOLTE值
  8. 百度直接搜IP可以查看本机外网IP
  9. 高德地图 根据名称搜索坐标,坐标点呈现列表展示
  10. 百度编辑器上传视频以及视频编辑器预览bug解决