如果你的视频使用的是HLS(m3u8)协议的,是不会由于升级ios10出现这个播放问题的。

如果不是基于HLS协议的,解决方法如下

self.player = [AVPlayer playerWithPlayerItem:self.playerItem];
//        [self.player replaceCurrentItemWithPlayerItem:self.playerItem];
if([[UIDevice currentDevice] systemVersion].intValue>=10){
//      增加下面这行可以解决iOS10兼容性问题了self.player.automaticallyWaitsToMinimizeStalling = NO;
}

ios10种AVPlayer增加了多个属性,其中有几个需要注意一下

  1. timeControlStatus
  2. automaticallyWaitsToMinimizeStalling
    正是第二个属性的默认值导致了不使用HLS的方式(比如使用localhttpserver间接实现在线播放、或者下载到本地再播放的方式)就会播放不了的问题。

重点就在上述第二条的官网文档的这段描述

ImportantFor clients linked against iOS 10.0 and later or macOS 10.12 and later (and running on those versions), the default value of this property is true. This property did not exist in previous OS versions and the observed behavior was dependent on the type of media played:* HTTP Live Streaming (HLS): When playing HLS media, the player behaved as if automaticallyWaitsToMinimizeStalling is true.* File-based Media: When playing file-based media, including progressively downloaded content, the player behaved as if automaticallyWaitsToMinimizeStalling is false.You should verify that your playback applications perform as expected using this new default automatic waiting behavior.

在之前的版本中,我们通过rate来判断avplayer是否处于播放中

- (Boolean)isPlaying
{return self.player.rate==1;
}

在iOS10中,AVPlayer多了一个timeControlStatus,我们就应该这么实现

- (Boolean)isPlaying
{if([[UIDevice currentDevice] systemVersion].intValue>=10){return self.player.timeControlStatus == AVPlayerTimeControlStatusPlaying;}else{return self.player.rate==1;}
}

当时的具体问题是这样的,我们的场景是有声绘本,在翻页时使用了seek来设定起始时间。在调用了[self.player play]方法之后播放器并没有播放(此时loadedTimeRanges已经足以播放了) self.player.timeControlStatus 是wait状态。
这时候其实可以通过另外一个iOS10新增加的属性reasonForWaitingToPlay来查看wait的原因。

总的来说,如果在不使用HLS的情况下,AVPlayer新增加的属性可以比较好的反应实际播放中的一些状态,而无需我们自己去维护状态了。

我们问题解决了。如果你的问题还没有解决可以再看下这篇WWDC的文章,Advances in AVFoundation Playback。

升级iOS10后,AVPlayer有时候播放延时和播放不了的问题相关推荐

  1. ios解锁动态图片_升级iOS10后的解锁界面 正确的打开方式是这样!(图)

    刚升级到iOS 10的小伙伴最直观的感受可能就是锁屏界面的改变了.从前只要按下电源键点亮屏幕,手指轻触Home键(不需要按下)就能轻松解锁手机.而现在点亮之后则必须按下Home键才行(广大非iPhon ...

  2. android升级SDK后,XML graphical layout无法预览的解决

    本人升级SDK后,以前项目的所有XML在graphical layout都无法预览了,觉得有点纳闷,就网上搜了一下,网上给出了两种方案: 方案一:去SDK目录下删掉Temp这个文件夹,并关掉eclip ...

  3. win10无法更新计算机的启动配置,电脑升级win10后一开机关机总是显示正在配置更新请不要关闭您的计算机...

    电脑升级win10后一开机关机总是显示正在配置更新请不要关闭您的计算机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 电 ...

  4. mac 苹果电脑升级系统后蓝牙耳机只有一边有声音 苹果电脑连接耳机音质不好 苹果电脑浏览网页音视频嘈杂

    本教程可以解决: mac 苹果电脑升级系统后蓝牙耳机只有一边有声音 苹果电脑连接耳机音质不好 苹果电脑浏览网页音视频嘈杂 环境: 电脑系统: 耳机: 手工定制蓝牙平头耳机 蓝牙模块:高通5141 情况 ...

  5. AVPlayer v1.4 - 超强媒体播放器 中文版

    AVPlayer v1.4 - 超强媒体播放器 中文版 一款功能非常强大的视频播放器,支持多种格式视频文件流畅播放.支持 XVID/DIVX,AVI,WMV,RMVB,ASF,H264,MKV 等格式 ...

  6. 乐播投屏为什么显示登录服务器失败,升级iOS11后电视投屏没法用?可以试试这两个办法...

    iOS11发布半个月来负面评价不少,最近看到有些人说升级iOS11后家里电视的投屏功能不能用了,试了身边的几台电视/盒子设备,的确有些不能正常进行投屏操作,会出现无法连接.电视黑屏的现象,这是什么原因 ...

  7. 升级android10后费电,荣耀V20升级更新安卓10的Magic UI 3.0后耗电速度变快了

    荣耀V20升级更新安卓10的Magic UI 3.0后,手机的耗电速度变快了,大家有没有觉得,手机显示屏幕耗电特别快,界面好看了,耗电快的夸张,平时看会新闻小说,顶多消耗百分之8,升级后消耗快百分之2 ...

  8. Fedora 18下 升级内核后VirtualBox不能正常使用的问题

    最近因为需要安装了VirtualBox来虚拟xp环境,本来用着好好的,但是最近升级内核后,重启机器再次运行VirtualBox,发现不能正常使用了,启动虚拟机会提示如下内容: Kernel drive ...

  9. CentOS 6.5升级Python后yum不可用的解决方案

    CentOS 6.5升级Python后yum不可用的解决方案 参考文章: (1)CentOS 6.5升级Python后yum不可用的解决方案 (2)https://www.cnblogs.com/he ...

  10. 升级pip后出错:无法导入名称“ main”

    本文翻译自:Error after upgrading pip: cannot import name 'main' Whenever I am trying to install any packa ...

最新文章

  1. HTML5中常用的标签(及标签的属性和作用)
  2. linux 使用spinlock的配对关系问题
  3. oracle中快速复制数据表(创建数据表)
  4. matlab 三维矩阵向量化,Matlab:向量化三维矩阵的工艺
  5. 安装mysql5.3_源码安装mysql5.3.35
  6. Android简明开发教程二十一:访问Internet 绘制在线地图
  7. lamp中php怎么连接mysql_LAMP分离安装环境下,php无法连接mysql的问题
  8. x86_64 arm制linux-gcc,arm-linux-gcc 制作
  9. linux-top命令
  10. 一个按钮多个ajax,如何为表格中的多个按钮设置AJAX调用
  11. matlab打开模型步骤,基于Matlab/Simulink的模型开发(连载一)
  12. java人脸识别开源算法_开源-人脸识别认证-java封装
  13. iOS快速清除全部的消息推送
  14. 计算机窗口演示,认识电脑窗口
  15. AVPlayer实现视频播放
  16. fan类java_(Fan类)(Fan class)
  17. SQL 正则表达式检索数据表中某字段值全是数字
  18. 计算机毕业论文选题推荐|软件工程|系列十一
  19. 微PE装Win10详细教程:UEFI+GPT方式
  20. java里面的ture和false

热门文章

  1. NS方程由精确解求源项matlab代码
  2. w讠ndows Boot Manager,Win10电脑无法开机提示Windows boot manager的解决方案
  3. scratch---植物大战僵尸游戏实现,完整代码分享,多种僵尸与植物特效都有素材包!
  4. 利用Trie(字典树)实现敏感词过滤算法
  5. 【WPF】调用线程必须为STA,因为许多UI组件都需要
  6. MMKV_高性能MMKV数据交互分析-MMKV初始化
  7. 仿QQ音乐(HTML+CSS)
  8. MySQL sql语句总结
  9. CPDA数据分析师:为什么Python在数据科学方面超越R和SQL?
  10. 利用ABBYY Screenshot Reader快速截取网页并识别文本