核心1.  AVPlayerLayer 用于显示视频

核心2.  监听播放相关属性

A.  status:

AVPlayerStatusReadyToPlay---视频就可以播放了

AVPlayerStatusFailed---视频加载失败,这时可以通过self.player.error.description属性来找出具体的原因

AVPlayerItemStatusUnknown----未知原因

B.  loadedTimeRanges:当前视频缓存情况(缓冲的进度),监听此属性可以在UI中更新缓冲进度,也是很有用的一个属性

C.  playbackBufferEmpty:当前视频缓存是否充足,若缓冲太少继续缓冲,动画继续。

D.  playbackLikelyToKeepUp:和playbackBufferEmpty是一对,用于监听缓存足够播放的状态,由于 AVPlayer 缓存不足就会自动暂停,所以缓存充足了需要手动播放,才能继续播放

核心3.  addPeriodicTimeObserverForInterval 更新频率,用于更新当前播放进度

核心4. 监听 AVPlayerItemDidPlayToEndTimeNotification 视频是否播放完毕

核心5. 缓存不够继续缓存

核心6.  视频总时间CMTimeGetSeconds(self.player.currentItem.duration)

核心7. 视频播放当前时间 CMTimeGetSeconds(self.playerItem.currentTime)

核心8. 快进     [_player seekToTime:seekTime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero completionHandler:completionHandler];

缓存动画触发机制

startAnimation:

1.初始进入启动加载

2.playbackBufferEmpty=YES,缓存为空不足以支撑继续播放

stopAnimating

1. 播放失败 AVPlayerItemStatusFailed

2. 可以继续播放的状态下 playbackLikelyToKeepUp = YES

3. 视频加载成功,准备播放  AVPlayerItemStatusReadyToPlay

demo地址:https://github.com/MadahaCEO/VideoDemo

转载于:https://www.cnblogs.com/madaha/p/9671237.html

ios 网络视频播放---分解ZFPlayer相关推荐

  1. ios 视频旋转---分解ZFPlayer

    1.先看一下图层 下:VC.view 中:containerView 上:playerView(button为subview,用于触发旋转操作) 2.真相探究 核心1. rect转换--- [supe ...

  2. iOS视频播放器之ZFPlayer剖析

    2019独角兽企业重金招聘Python工程师标准>>> 引言 本文主要针对ZFPlayer的功能实现来剖析,以及总结一下大家遇到的问题和解决方案 首先ZFPlayer现在拥有的功能: ...

  3. iOS 音视频之网络视频播放AVPlayerViewController(iOS8.0+使用)

    1.视频播放新功能 iOS8.0之后新增了AVPlayerViewController,集成了AVPlayer iOS9.0之后增加了快进和后退功能,播放视频特别方便,再也不用复杂地封装AVPlaye ...

  4. iOS AVPlayer视频播放器

    代码地址如下: http://www.demodashi.com/demo/11168.html 一.运行效果 二.实现过程 ①.创建播放器avPlayer //创建播放器url = [url str ...

  5. AVPlayer 本地、网络视频播放相关

    AVPlayer 本地.网络视频播放相关 作者 阿聪o 关注 2016.06.21 09:42 字数 1582 阅读 2445评论 6喜欢 42 iOS开发常用的两种视频播放方式,一种是使用MPMov ...

  6. 我想写一个网络视频播放器

    最近两个月跟着斯坦福大学白胡子老头的公开课学习了一下swift语言下的ios应用开发,作为实践,我计划开发自己的第一款App:网络视频播放器. 产品设计 什么,就你一个搬砖的还要产品设计?好好,没有产 ...

  7. iOS网络缓存扫盲篇--使用两行代码就能完成80%的缓存需求

    原文地址:https://github.com/ChenYilong/ParseSourceCodeStudy/blob/master/02_Parse的网络缓存与离线存储/iOS网络缓存扫盲篇.md ...

  8. iOS网络编程-iCloud键值数据存储编程实例

    iCloud键值数据存储设计 iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击"设置iCloud数据"按钮,将控件状态保存到iCloud服务器.右图是设备2 ...

  9. iOS网络开发中的同步、异步和请求队列

    在iOS网络编程中,我们经常会遇到线程的同步和异步问题,同时为了对异步请求更加精准丰富的控制,我们还常常在iOS中使用请求队列,下面就来谈谈iOS开发中同步.异步以及请求队列的使用方法. 1. 同步意 ...

最新文章

  1. 数学知识-- 信赖域(Trust Region)算法是怎么一回事
  2. cmder添加到系统变量中_开发环境搭建之VSCode、Cmder
  3. C#使用Word中的内置对话框实例
  4. boost::hana::monadic_fold_left用法的测试程序
  5. java webview 对象_Android – 将JSON对象从webview javascript传递给java
  6. 大数据学习笔记38:Hive - 内置函数(1)
  7. 三星GalaxyNote 10 Plus官方图曝光:前置相机竟换成了单摄?
  8. html5自动打印图片,html2canvas生成清晰的图片实现打印代码示例
  9. python装饰器详解-学习笔记-Python装饰器详解
  10. Oracle优化避免索引失效
  11. java的constructor怎么用,constructor函数 Java中的构造函数Constructor怎么用
  12. 强力推荐:关于内存中栈和堆的区别
  13. Android measure过程分析
  14. unity api中文手册_unity 中文API之Display
  15. HTML5+CSS3 从入门到精通(2)
  16. 用C语言求解一元高次方程论文,一元高次方程C语言实现(最高五次
  17. Python爬虫 - 02.实现贴吧签到
  18. 六步学会github入门使用
  19. win7桌面右下角的小喇叭音量图标不见了怎么办
  20. 实现Web前端 live2dw小人物的显示

热门文章

  1. python3 if语句嵌套_3.2.3 if语句的嵌套
  2. 记录用户上次访问时间
  3. android,做游戏,20几岁 20多岁
  4. 相同字符串,但是equals为false?我多年的java白学了吗?
  5. 如何安装windows r2 2012 虚拟机
  6. oracle oaf结构,解析OAF页面元数据结构((转自Oracle 探索者)
  7. python回车和换行的区别_回车与换行的解释~!
  8. html 将button居中
  9. struts2 mysql_Struts2连接Mysql的Crud使用
  10. 仿射密码实验——Python实现(完整解析版)