iOS通过AVPlayer打造视频

来源 :科技风 | 被引量 : 0次 | 上传用户:wyp345
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:AVPlayer是用于管理媒體资产的播放和定时控制。它提供了控制播放器的方法,如它可以在媒体的时限内播放,暂停,和改变播放的速度,可以使用AVPlayer来播放本地和远程的视频媒体文件,如QuickTime影片和MP3音频文件,以及视听媒体使用HTTP流媒体直播服务。获取源代码,请访问我的GitHub。
  关键词:m3u8流媒体;AVPlayer;iOS视频播放器;自定义播放
  1 AVPlayer播放的两个层
  1.1 一个普通播放器的组成
  1.2 创建播放层视图类
  (1)使用AVPlayer需导入AVFoundation框架
  (2)创建类VideoPlayerView。
  (3)播放器的初始化,在VedioPlayerView里创建AVPLayerLayer并把AVPlayer加入
  (4)接着设置下播放窗口大小为试图大小并加到视图的层上。注意这里也可以先加AVURLAsset,本例未使用这个方式,self.asset可以记录缓存大小,而使用AVURLAsset初始化URL代码太复杂。
  (5)播放层视图类里的属性。
  (6)视频播放需大量使用KVO和NSNotificationCenter。
  1.3 创建控制层视图类
  (1)控制层在视频视图层的上面一层,用来控制视频的播放,如图
  (2)创建类ControlView。控制层在视频视图的上面一层,用来控制视频的播放。
  (3)拖拽按钮到控制层视图类里,并添加属性。
  2 AVPlayer的功能和组成
  基于AVPlayer封装的轻量级播放器,可以播放本地网络视频,易于定制,适合初学者学习打造属于自己的视频播放器。
  2.1 初始化播放器和配置
  2.1.1 播放器的初始化
  初始化
  2.1.2 播放窗口放置方式videoGravity
  放置方式有以下三种:
  (1)AVLayerVideoGravityResizeAspect 按比例填充
  (2)AVLayerVideoGravityResizeAspectFill 按比例最大化填充
  (3)AVLayerVideoGravityResize 拉伸填充
  这里使用按比例最大化填充
  2.1.3 如果播放时需要显示视频里附带的字母可以设置显示字幕
  字幕选择
  2.2 横屏全屏以及旋转
  (1)点击全屏按钮或者旋转手机的时候,判断旋转方向并全屏播放。
  (2)收到系统屏幕旋转的通知调用deviceDidRotate方法。
  (3)当横屏时播放窗口放置在APP最上层,竖屏时销毁。横屏时调用的方法主要完成,1在父窗口移除播放器,2横屏全屏尺寸,3把播放器加在视图最上层。
  (4)竖屏时调用的方法主要完成,1在父窗口移除播放器,2竖屏窗口尺寸,3把播放器加回到原先fatherView竖屏窗口。
  2.3 进度条
  刷新进度条包括,1当前时间显示、2进度百分比。在播放器里添加一个观察者每一秒钟监听一次并刷新进度。
  2.4 前后台切换播放
  收到系统播放退到后台的通知调用appWillResignActive方法。
  收到系统播放进入前台的通知调用appDidBecomeActive方法。
  2.5 播放的销毁
  当播放器被父视图移除时候(removefromSuperView())会调用播放视图的deinit()方法。需要同时销毁观察者和纪录退出时的播放时间。
  3 使用封装好的AVPlayer
  3.1 播放的加载
  在视图控制器ViewController加入PlayURL方法。
  3.2 播放\暂停
  在视图控制器ViewController加入播放、暂停按钮的点击事件。
  3.3 手势的调用
  (1)在手势添加在播放视图上。方法和属性添加到控制器中。
  (2)在视图控制器ViewController加入单击播放窗口出现控制视图,再次点击控制视图消失。
  3.4 分享等自定义其他功能
  在视图控制器ViewController拖入分享图标的方法,让ShareView弹出到控制器的view视图的最上层。加入其他功能方法以此类推。
  4 结语
  表述能力有限,如果大家喜欢的话,希望进入github网址star一下。
  我的GitHub:https://github.com/zhangpengfic/ZPlayer。
其他文献
哈佛、柏林、剑桥、东京等世界一流大学制度创新的做法对中国的启示是:世界一流大学发展的切入点是制度创新,创建世界一流大学的主要问题不在于资金、设备、基础设施等物质基
阐述严重烧伤后围休克期并发腹腔间隙综合征(ACS)与全身炎症反应综合征(SIRS)的相关性。临床分析认为,SIRS是致ACS的主要原因之一,ACS是SIRS未及时有效控制和超量补液导致;另从循证
企业人力资源管理因其与人的因素有内在的密切联系而使人力资源管理的复杂性日显突出.人力资源管理在现状评估、目标设定、计划执行、评价和反馈等方面存在的复杂性,使得企业
政府作为教育政策的制定者与教育产业的管理者,应当在不同的教育领域中如何分配有限的教育资源,使其达到最优配置,是一个十分值得研究的课题.政府在产业化教育和福利化教育中
21世纪是知识经济的时代,人本主义的思想逐渐为人们所认识和接受.传统的会计学只计量货币资本和实物资本,却把最重要的人力资本放在视线之外,是典型的见物不见人的做法.人力
在素质教育与职业教育理念下提出了计算机网络专业的创新教学,并从教学观念、教学组织、教学手段、考核方式四个方面,阐述了计算机网络专业教学的创新因素,最后提出了实施创新教学的支持系统。  创新因素 教学观念 教学组织 教学手段 考核方式  创新是社会发展的动力,是人类自身提高的关键因素。把“创新”应用于教育,则会为社会培养出高起点、高素质和具有创新意识与能力的人才,从而促进社会的进步。  一、进行教学
财会人才培养模式是决定财会教育质量的重要因素,我国现行的会计教育模式存在许多问题,主要表现为与当前的社会需求不相适应,因此,改革现行会计教育模式已成为会计教育的主要任务