文章来源:淘论文网   发布者: 毕业设计   浏览量: 40



还可以点击去查询以下关键词:
[视频]    [播放器]    [VGPlayer]    [视频播放器 VGPlayer]   

项目介绍:

# 源代码

GitHub地址:VGPlayer

有什么意见建议可以提 issues,如果觉得不错,欢迎点star。

# 演示

# 功能

集成了视频播放器常有的手势,包括单击显示控制视图,双击暂停,水平滑动快进、后退,开题报告,竖直滑动亮度和音量调节。

全屏播放,开题报告,自适应手机屏幕旋转方向。

自定义控制视图

# 实现思路

VGPlayer

VGPlayer是一个对AVPlayer封装提供播放功能,displayView为播放器画面绘制。
主要是使用了以下几个类:

AVURLAsset是 AVAsset的子类,用来本地或者网络视频地址的初始化网络请求,也可以用来获取视频每一帧的画面来实现滑动提前预览图的功能(后续应该会版本迭代加上此功能)

AVPlayerItem 是对AVPlayer播放的视频数据管理,对播放的Asset资源进行记录,提供或者视频的时间,播放状态等。

AVPlayer 调控数据和视图

AVPlayerLayer 进行视频视图绘制

VGPlayer封装AVPlayer提供给调用者可选代理方法

// player delegate     // play state     func vgPlayer(_ player: VGPlayer, stateDidChange state: VGPlayerState)     // playe Duration     func vgPlayer(_ player: VGPlayer, playerDurationDidChange currentDuration: TimeInterval, totalDuration: TimeInterval)     // buffer state     func vgPlayer(_ player: VGPlayer, bufferStateDidChange state: VGPlayerBufferstate)     // buffered Duration     func vgPlayer(_ player: VGPlayer, bufferedDidChange bufferedDuration: TimeInterval, totalDuration: TimeInterval)     // play error     func vgPlayer(_ player: VGPlayer, playerFailed error: VGPlayerError)VGPlayerView

VGPlayerView负责画面的展示,,只作为展示,而绘制层则是AVPlayerLayer提供,可继承此类进行控制视图的自定义

VGPlayerView封装AVPlayerLayer提供可选代理方法

// player view delegate     /// fullscreen     func vgPlayerView(_ playerView: VGPlayerView, willFullscreen fullscreen: Bool)     /// close play view     func vgPlayerView(didTappedClose playerView: VGPlayerView)     /// displaye control     func vgPlayerView(didDisplayControl playerView: VGPlayerView) VGPlayerError

VGPlayerError一个 struct 用来播放出现Error时返回

# 细节调整

后端播放的实现
设置工程

// AppDelegate settings  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {         // Override point for customization after application launch.         do         {             try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)         }         catch let error as NSError         {             print(error)         }         return true     }

设置VGPlayer的Background mode

self.player.backgroundMode = .proceed

VGPlayerUtils 提供判断视频类型方法和一些通用的方法

UIButton+VGPlayer 扩展按钮点击范围

Timer+VGPlayer 解决Timer的 retain cycle问题


这里还有:


还可以点击去查询:
[视频]    [播放器]    [VGPlayer]    [视频播放器 VGPlayer]   

请扫码加微信 微信号:sj52abcd


下载地址: http://www.taolw.com/down/6772.docx
  • 上一篇:类似新版摩拜单车小球弹性碰撞的效果
  • 下一篇:一个iOS渐变背景毕业设计动画效果的Switch