首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

iOS通过AVPlayer打造视频

作者:张鹏 来源:科技风

摘 要: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。