前言
对于社交类APP,只要允许用户上传视频,为了避免占用服务器资源以及减少用户上传时间,肯定少不了长视频裁剪的功能。
效果预览
分析
页面结构
- 基于
AVPlayer
封装的播放器 - collectionView进行缩略图展示
- 选择框进行拖拽裁剪
- 底部两个操作按钮
功能实现
- 从相册中选取视频后,获得视频的URL
- 通过URL获取视频的总长
- 指定选中框的初始开始时间、结束时间
- 使用
AVAssetImageGenerator
获取缩略图 - 为左、右两个边框添加
panGesture
- 在
panGesture
响应的方法中,判断gesture.state
- 在
UIGestureRecognizerStateBegan
中找到当前拖动的视图 - 在
UIGestureRecognizerStateChanged
中处理裁剪时间 - 在
UIGestureRecognizerStateEnded
中处理结束拖动后播放器进度 - 在
scrollViewDidScroll
也要处理选中的时间范围 - 范围选择完成后,使用
AVAssetExportSession
对视频进行裁剪 - 最后一步,将视频写入相册保存
难点
- 拖动进度和时间上的转换,具体可以参考GPVideoClipper源码。
最后
- 如果您使用的还不错,不要吝啬给个start.