ios 网络视频播放---分解ZFPlayer
核心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相关推荐
- ios 视频旋转---分解ZFPlayer
1.先看一下图层 下:VC.view 中:containerView 上:playerView(button为subview,用于触发旋转操作) 2.真相探究 核心1. rect转换--- [supe ...
- iOS视频播放器之ZFPlayer剖析
2019独角兽企业重金招聘Python工程师标准>>> 引言 本文主要针对ZFPlayer的功能实现来剖析,以及总结一下大家遇到的问题和解决方案 首先ZFPlayer现在拥有的功能: ...
- iOS 音视频之网络视频播放AVPlayerViewController(iOS8.0+使用)
1.视频播放新功能 iOS8.0之后新增了AVPlayerViewController,集成了AVPlayer iOS9.0之后增加了快进和后退功能,播放视频特别方便,再也不用复杂地封装AVPlaye ...
- iOS AVPlayer视频播放器
代码地址如下: http://www.demodashi.com/demo/11168.html 一.运行效果 二.实现过程 ①.创建播放器avPlayer //创建播放器url = [url str ...
- AVPlayer 本地、网络视频播放相关
AVPlayer 本地.网络视频播放相关 作者 阿聪o 关注 2016.06.21 09:42 字数 1582 阅读 2445评论 6喜欢 42 iOS开发常用的两种视频播放方式,一种是使用MPMov ...
- 我想写一个网络视频播放器
最近两个月跟着斯坦福大学白胡子老头的公开课学习了一下swift语言下的ios应用开发,作为实践,我计划开发自己的第一款App:网络视频播放器. 产品设计 什么,就你一个搬砖的还要产品设计?好好,没有产 ...
- iOS网络缓存扫盲篇--使用两行代码就能完成80%的缓存需求
原文地址:https://github.com/ChenYilong/ParseSourceCodeStudy/blob/master/02_Parse的网络缓存与离线存储/iOS网络缓存扫盲篇.md ...
- iOS网络编程-iCloud键值数据存储编程实例
iCloud键值数据存储设计 iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击"设置iCloud数据"按钮,将控件状态保存到iCloud服务器.右图是设备2 ...
- iOS网络开发中的同步、异步和请求队列
在iOS网络编程中,我们经常会遇到线程的同步和异步问题,同时为了对异步请求更加精准丰富的控制,我们还常常在iOS中使用请求队列,下面就来谈谈iOS开发中同步.异步以及请求队列的使用方法. 1. 同步意 ...
最新文章
- 数学知识-- 信赖域(Trust Region)算法是怎么一回事
- cmder添加到系统变量中_开发环境搭建之VSCode、Cmder
- C#使用Word中的内置对话框实例
- boost::hana::monadic_fold_left用法的测试程序
- java webview 对象_Android – 将JSON对象从webview javascript传递给java
- 大数据学习笔记38:Hive - 内置函数(1)
- 三星GalaxyNote 10 Plus官方图曝光:前置相机竟换成了单摄?
- html5自动打印图片,html2canvas生成清晰的图片实现打印代码示例
- python装饰器详解-学习笔记-Python装饰器详解
- Oracle优化避免索引失效
- java的constructor怎么用,constructor函数 Java中的构造函数Constructor怎么用
- 强力推荐:关于内存中栈和堆的区别
- Android measure过程分析
- unity api中文手册_unity 中文API之Display
- HTML5+CSS3 从入门到精通(2)
- 用C语言求解一元高次方程论文,一元高次方程C语言实现(最高五次
- Python爬虫 - 02.实现贴吧签到
- 六步学会github入门使用
- win7桌面右下角的小喇叭音量图标不见了怎么办
- 实现Web前端 live2dw小人物的显示
热门文章
- python3 if语句嵌套_3.2.3 if语句的嵌套
- 记录用户上次访问时间
- android,做游戏,20几岁 20多岁
- 相同字符串,但是equals为false?我多年的java白学了吗?
- 如何安装windows r2 2012 虚拟机
- oracle oaf结构,解析OAF页面元数据结构((转自Oracle 探索者)
- python回车和换行的区别_回车与换行的解释~!
- html 将button居中
- struts2 mysql_Struts2连接Mysql的Crud使用
- 仿射密码实验——Python实现(完整解析版)