GPVideoClipper裁剪原理

前言

对于社交类APP,只要允许用户上传视频,为了避免占用服务器资源以及减少用户上传时间,肯定少不了长视频裁剪的功能。

效果预览

image

分析

页面结构

  • 基于AVPlayer封装的播放器
  • collectionView进行缩略图展示
  • 选择框进行拖拽裁剪
  • 底部两个操作按钮

功能实现

  • 从相册中选取视频后,获得视频的URL
  • 通过URL获取视频的总长
  • 指定选中框的初始开始时间、结束时间
  • 使用AVAssetImageGenerator获取缩略图
  • 为左、右两个边框添加panGesture
  • panGesture响应的方法中,判断gesture.state
  • UIGestureRecognizerStateBegan中找到当前拖动的视图
  • UIGestureRecognizerStateChanged中处理裁剪时间
  • UIGestureRecognizerStateEnded中处理结束拖动后播放器进度
  • scrollViewDidScroll也要处理选中的时间范围
  • 范围选择完成后,使用AVAssetExportSession对视频进行裁剪
  • 最后一步,将视频写入相册保存

难点

  • 拖动进度和时间上的转换,具体可以参考GPVideoClipper源码。

最后

  • 如果您使用的还不错,不要吝啬给个start.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。