Browse Source

Merge branch 'demo'

* demo:
  播放结束隐藏UI
  抛留功能适配
harry 3 years ago
parent
commit
a07f618ad2

+ 4 - 36
BFRecordScreenKit/Classes/BFRecordExport.swift

@@ -39,18 +39,15 @@ public class BFRecordExport {
 
     
     //MARK: -
-    public func prepareData(){
-        if let data = data, data.count > 0{
-            _ = generationTimeRanges(voiceStickers: data.first!.voiceStickers)
-        }
-    }
 
     /// synthesisAll: 合成所有还是只合成录音部分
     public func startExprot(synthesisAll:Bool){
         // 1,背景视频素材
         if let itemModels = data {
+            
             var totalDur = 0.0
             for (index, itemModel) in itemModels.enumerated() {
+                itemModel.videoStickers.removeAll()
                 let asset = itemModel.baseMaterial
                 if let dur = asset?.duration.seconds {
                     if synthesisAll {
@@ -96,23 +93,6 @@ public class BFRecordExport {
         
     }
     
-    func generationTimeRanges(voiceStickers:[PQVoiceModel]) -> [CMTimeRange]{
-        
-        var ranges = [CMTimeRange]()
-        var start : Double = 0
-        for model in voiceStickers {
-            if model.startTime > start{
-                let range = CMTimeRange(start: CMTime(seconds: start, preferredTimescale: 100), duration: CMTime(seconds: model.startTime - start, preferredTimescale: 100))
-                ranges.append(range)
-                
-            }
-            ranges.append(CMTimeRange(start: CMTime(seconds: model.startTime, preferredTimescale: 100), end: CMTime(seconds: model.endTime, preferredTimescale: 100)))
-            start = model.endTime
-        }
-        
-        return ranges
-    }
-    
     func splitBaseMaterial(timelineIn:Double, model_in:Double, duration:Double) -> PQEditVisionTrackMaterialsModel{
         let bgMovieInfo: PQEditVisionTrackMaterialsModel = PQEditVisionTrackMaterialsModel()
         if let asset = data?.first?.baseMaterial {
@@ -126,6 +106,7 @@ public class BFRecordExport {
             bgMovieInfo.volumeGain = 1
             bgMovieInfo.aptDuration = bgMovieInfo.timelineOut
             bgMovieInfo.duration = bgMovieInfo.timelineOut
+            BFLog(1, message: "hhh- timIn:\(timelineIn), modIn:\(model_in), dur:\(duration)")
         }
         
         return bgMovieInfo
@@ -189,7 +170,7 @@ public class BFRecordExport {
             
             BFLog(message: "导出设置的码率为:\(orgeBitRate)")
             if exporter!.prepare(videoSize: size, videoAverageBitRate: orgeBitRate) {
-                exporter!.start(playeTimeRange: CMTimeRange(start: CMTime.zero, end: composition.duration))
+                exporter!.start(playeTimeRange: CMTimeRange(start: CMTime.zero, end: synthesisAll ? asset?.duration as! CMTime : composition.duration))
             }
             exporter?.progressClosure = { [weak self] _, _, progress in
                 //            BFLog(message: "正片合成进度 \(progress * 100)%")
@@ -205,7 +186,6 @@ public class BFRecordExport {
                     
                     BFLog(1, message: "无水印的视频导出完成: \(String(describing: url)) 生成视频时长为:\(outSeconds)")
                     cShowHUB(superView: nil, msg: ( outSeconds == 0) ? "合成失败请重试。" : "合成成功")
-                    self?.saveVideoToPhoto(url: url)
                     self?.exportCompletion?(nil, url)
 
                 }else{
@@ -226,18 +206,6 @@ public class BFRecordExport {
 
     }
     
-    func saveVideoToPhoto(url:URL){
-        PHPhotoLibrary.shared().performChanges {
-            PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: url)
-        } completionHandler: { isFinished, _ in
-            if isFinished {
-                DispatchQueue.main.async {
-                    cShowHUB(superView: nil, msg: "保存成功")
-                }
-            }
-        }
-    }
-    
     func dealAsset(){
 //        asset?.tracks.first(where: { track in
 //            if track.mediaType == .audio{

+ 24 - 8
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -42,7 +42,11 @@ public class BFRecordScreenController: BFBaseViewController {
             recordBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#28BE67", alpha: isRecording ? 0.6 : 1)
         }
     }
-    
+    var isEndPlay = false {
+        didSet{
+            recordBtn.isHidden = isEndPlay
+        }
+    }
     var isNormalPlaying = false {               // 是否正在播放
         didSet{
             playBtn.isSelected = isNormalPlaying
@@ -267,6 +271,8 @@ public class BFRecordScreenController: BFBaseViewController {
                     sself.pause()
                 }
                 sself.isDragingProgressSlder = true
+                BFLog(1, message: "drag 进行中")
+
                 sself.changeProgress(progress: process)
             }
         }
@@ -490,9 +496,9 @@ public class BFRecordScreenController: BFBaseViewController {
     }
     
     @objc func startRecord(){
-        BFLog(1, message: "start \(UIControl.Event.touchDown)")
+        let point = progressThumV.progressView.contentOffset
+        progressThumV.progressView .setContentOffset(point, animated: false)
         isRecording = true
-
         pause()
         
         events.append(WithDrawModel(type: 2, timestamp: self.currentAssetProgress.seconds))
@@ -605,7 +611,7 @@ public class BFRecordScreenController: BFBaseViewController {
         isDragingProgressSlder = false
         currentPlayRecordIndex = -1
         hadPrepareToPlayRecord = false
-        
+        BFLog(1, message: isDragingProgressSlder ? "drag false" : "drag  tr")
         searchStopAtRecordRange()
     }
     
@@ -614,6 +620,8 @@ public class BFRecordScreenController: BFBaseViewController {
         let elems = itemModels[currItemModelIndex].voiceStickers.enumerated().filter({ elem in
             elem.1.startTime <= self.currentAssetProgress.seconds && elem.1.endTime > self.currentAssetProgress.seconds
         })
+        isEndPlay = false
+        
         if elems.count > 0{
             //  TODO: 停在了录音区间,显示删除按钮
             isStopAtRecordRange = elems.first!.0
@@ -757,6 +765,13 @@ public class BFRecordScreenController: BFBaseViewController {
         isNormalPlaying = true
         assetPlayer?.volume = 0.2
         movie?.startProcessing()
+        if isEndPlay {
+            isEndPlay = false
+            assetPlayer?.seek(to: CMTime.zero)
+            progressThumV.progress = 0
+            currentPlayRecordIndex = -1
+            recordBtn.isHidden = false
+        }
         
         self.assetPlayer?.play()
     }
@@ -884,13 +899,14 @@ public class BFRecordScreenController: BFBaseViewController {
         NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: assetPlayer?.currentItem, queue: .main) { [weak self] notify in
             BFLog(1, message: "AVPlayerItemDidPlayToEndTime = \(notify)")
             self?.isNormalPlaying = false
-            self?.assetPlayer?.seek(to: CMTime.zero)
-            self?.progressThumV.progress = 0
-            
-            self?.currentPlayRecordIndex = -1
+//            self?.assetPlayer?.seek(to: CMTime.zero)
+//            self?.progressThumV.progress = 0
+            self?.isEndPlay = true
+//            self?.currentPlayRecordIndex = -1
             if self?.isRecording ?? false {
                 self?.endRecord()
             }
+            self?.recordBtn.isHidden = true
         }
     }