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

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #703daa; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #d12f1b; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #d12f1b; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #d12f1b; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #d12f1b; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #008400; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #008400; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #000000; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #008400; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #008400; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #008400; background-color: #ffffff; min-height: 14.0px }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #008400; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #703daa; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #008400; background-color: #ffffff }
span.s1 { color: #000000 }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #3e1e81; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #703daa; background-color: #ffffff }
span.s1 { color: #3e1e81 }
span.s2 { color: #000000 }
span.s3 { color: #ba2da2 }
span.s4 { color: #4f8187 }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #3e1e81; background-color: #ffffff }
span.s1 { color: #000000 }
span.s2 { color: #ba2da2 }
span.s3 { color: #4f8187 }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #3e1e81; background-color: #ffffff }
span.s1 { color: #000000 }
span.s2 { color: #4f8187 }
span.s3 { color: #703daa }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #703daa; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #3e1e81; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #703daa; background-color: #ffffff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #3e1e81; background-color: #ffffff }

原文地址:https://www.cnblogs.com/madaha/p/9671237.html

时间: 2024-08-06 14:52:13

ios 网络视频播放---分解ZFPlayer的相关文章

关于iOS中音视频播放的几种方式介绍

在IOS设计中,音视频的播放通常涉及到大部分设计过程中,因此清晰了解并使用音视频播放结构就很重要了,下面介绍几种常用的音视频的播放方式: (一) 使用系统提供的播放器,用system sound service去播放时长小于30s的音乐,通常是.caf,.aif,.wav格式: 创建一个系统播放对象: AudioServicesCreateSystemSoundID ( CFURLRef inFileURL, SystemSoundID *outSystemSoundID); AudioServ

ios网络学习------9 播放网络视频

IOS提供了叫做MPMoviePlayerController  MPMoviePlayerViewController两个类,可以轻松用来实现视频播放.MPMoviePlayerViewController只能全屏播放视频. #import "MainViewController.h" #import <MediaPlayer/MediaPlayer.h> @interface MainViewController () //视频播放器 @property (strong

ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)

ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:https://github.com/niexiaobo/ 实现功能 :播放视频 ,视频后台下载 (真机调试功能正常) 1.使用ZFPlayer播放视频(可以在线和本地播放,基于AVPlayer,调节音量和屏幕亮度) 2.使用 WHCNetWorkKit 实现下载,后台下载(多任务同时下载,单任务下载,

iOS 网络错误-分类

在进行网络数据交换的时候总是遇到各种各样的错误. 这些网络错误是来自client还是server. 我们来梳理一下: 我们将错误分为三个大类 操作系统错误 http请求错误 应用错误 1.操作系统错误是因为数据包没有到达预定目标导致的,造成原因可能有: 没有网络--没有连接网络 无法路由到目标主机--主要是因为目标主机可能位于隔离网络或者处于离线状态.导致的. 没有应用监听目标port--请求到达目标主机后数据包会发送到指定的port号.假设server没有监听这个port号或者是有太多的请求在

ios网络学习------11 原生API文件上传之断点续传思路

#import "MainViewController.h" @interface MainViewController () @end @implementation MainViewController - (void)viewDidLoad { [super viewDidLoad]; //下载文件 [self download]; } -(void)download { //1. NSURL NSURL *url = [NSURL URLWithString:@"ht

ios网络学习------8 xml格式数据的请求处理 用代码块封装

#pragma mark 加载xml - (void)loadXML { //获取网络数据. NSLog(@"load xml"); //从web服务器加载数据 NSString *str = @"http://www.baidu.com?format=xml"; //这里是乱写的 //1简历NSURL NSURL *url = [NSURL URLWithString:str]; //2建立NSURLRequest NSURLRequest *request =

iOS网络编程笔记——Socket编程

一.什么是Socket通信: Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换.这个双向连路的一端称为socket.socket通常用来实现客户方和服务方的连接.socket是TCP/IP协议的一个十分流行的编程接口.一个socket由一个IP地址和一个端口号唯一确定.TCP/IP协议的传输层又有两种协议:TCP(传输控制协议)和UDP(用户数据报协议).TCP是基于连接的,而UDP是无连接的:TCP对系统资源的要求较多,而UDP少:TCP保证数据的正确性而UDP可能丢包:

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

iOS网络缓存扫盲篇 --使用两行代码就能完成80%的缓存需求 下篇预告:使用80%的代码来完成剩下的20%的缓存需求 .敬请 star (右上角)持续关注. 目录 当我们在谈论缓存的时候,我们在谈论什么? GET网络请求缓存 80%的缓存需求:两行代码就可满足 控制缓存的有效性 文件缓存:借助ETag或Last-Modified判断文件缓存是否有效 Last-Modified ETag 总结 一般数据类型借助 Last-Modified 与 ETag 进行缓存 剩下20%的网络缓存需求--真的

iOS网络编程(六) NSURLSession详解

昨夜浏览Demo的时候,看到别人请求网络数据用的是NSURLSession,当时就在想这里什么,怎么没有用过,引起了我的好奇心,遂去百度-谷歌-官方文档一一查看,有了一定的了解,原来NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的. 查找资料,写了一个小Demo,大家可以看看,有什么不足的地方,可以留言帮我指出来. // // HMTRootViewController.m // // // Created by HMT on 14-6-7.