GPVideoClipper裁剪原理

前言

對(duì)于社交類APP,只要允許用戶上傳視頻,為了避免占用服務(wù)器資源以及減少用戶上傳時(shí)間,肯定少不了長(zhǎng)視頻裁剪的功能。

效果預(yù)覽

image

分析

頁(yè)面結(jié)構(gòu)

  • 基于AVPlayer封裝的播放器
  • collectionView進(jìn)行縮略圖展示
  • 選擇框進(jìn)行拖拽裁剪
  • 底部?jī)蓚€(gè)操作按鈕

功能實(shí)現(xiàn)

  • 從相冊(cè)中選取視頻后,獲得視頻的URL
  • 通過URL獲取視頻的總長(zhǎng)
  • 指定選中框的初始開始時(shí)間、結(jié)束時(shí)間
  • 使用AVAssetImageGenerator獲取縮略圖
  • 為左、右兩個(gè)邊框添加panGesture
  • panGesture響應(yīng)的方法中,判斷gesture.state
  • UIGestureRecognizerStateBegan中找到當(dāng)前拖動(dòng)的視圖
  • UIGestureRecognizerStateChanged中處理裁剪時(shí)間
  • UIGestureRecognizerStateEnded中處理結(jié)束拖動(dòng)后播放器進(jìn)度
  • scrollViewDidScroll也要處理選中的時(shí)間范圍
  • 范圍選擇完成后,使用AVAssetExportSession對(duì)視頻進(jìn)行裁剪
  • 最后一步,將視頻寫入相冊(cè)保存

難點(diǎn)

  • 拖動(dòng)進(jìn)度和時(shí)間上的轉(zhuǎn)換,具體可以參考GPVideoClipper源碼。

最后

  • 如果您使用的還不錯(cuò),不要吝嗇給個(gè)start.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容