Browse Source

1.merge master

wenweiwei 3 years ago
parent
commit
6951476207

+ 21 - 12
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -454,6 +454,7 @@ public class BFRecordScreenController: BFBaseViewController {
                     // 加入到语音数组里
                     // 加入到语音数组里
                     model.endTime = sself.currentAssetProgress.seconds
                     model.endTime = sself.currentAssetProgress.seconds
 
 
+                    // ********** 开始处理冲突的录制部分
                     let newRange = CMTimeRange(start: CMTime(seconds: model.startTime, preferredTimescale: 1000), end: CMTime(seconds: model.endTime, preferredTimescale: 1000))
                     let newRange = CMTimeRange(start: CMTime(seconds: model.startTime, preferredTimescale: 1000), end: CMTime(seconds: model.endTime, preferredTimescale: 1000))
 
 
                     var deletedVoices = [(PQVoiceModel, Int)]()
                     var deletedVoices = [(PQVoiceModel, Int)]()
@@ -463,22 +464,30 @@ public class BFRecordScreenController: BFBaseViewController {
 
 
                         if CMTimeRangeGetIntersection(originRange, otherRange: newRange).duration.seconds > 0 {
                         if CMTimeRangeGetIntersection(originRange, otherRange: newRange).duration.seconds > 0 {
                             deletedVoices.append((m, i))
                             deletedVoices.append((m, i))
+                            for titleS in sself.itemModels[sself.currItemModelIndex].titleStickers {
+                                if titleS.audioFilePath == m.wavFilePath {}
+                            }
+
                             continue
                             continue
                         }
                         }
                     }
                     }
+
+                    // 删除冲突的音频
                     sself.itemModels[sself.currItemModelIndex].voiceStickers.removeAll { m in
                     sself.itemModels[sself.currItemModelIndex].voiceStickers.removeAll { m in
                         let originRange = CMTimeRange(start: CMTime(seconds: m.startTime, preferredTimescale: 1000), end: CMTime(seconds: m.endTime, preferredTimescale: 1000))
                         let originRange = CMTimeRange(start: CMTime(seconds: m.startTime, preferredTimescale: 1000), end: CMTime(seconds: m.endTime, preferredTimescale: 1000))
                         return CMTimeRangeGetIntersection(originRange, otherRange: newRange).duration.seconds > 0
                         return CMTimeRangeGetIntersection(originRange, otherRange: newRange).duration.seconds > 0
                     }
                     }
                     BFLog(1, message: "添加录音文件:\(model.startTime) -- \(model.endTime)")
                     BFLog(1, message: "添加录音文件:\(model.startTime) -- \(model.endTime)")
 
 
-                    var event = sself.events.last
-                    if event != nil {
-                        event!.deletedVoices = deletedVoices
-                        sself.events.removeLast()
-                        sself.events.append(event!)
-                    }
                     sself.itemModels[sself.currItemModelIndex].voiceStickers.append(model)
                     sself.itemModels[sself.currItemModelIndex].voiceStickers.append(model)
+
+                    // ***********处理冲突的录音部分资源 end
+
+                    // 添加撤销记录点
+                    var event = WithDrawModel(type: 2, timestamp: model.startTime)
+                    event.deletedVoices = deletedVoices
+                    sself.events.append(event)
+
                     if sself.itemModels[sself.currItemModelIndex].mediaType == .IMAGE {
                     if sself.itemModels[sself.currItemModelIndex].mediaType == .IMAGE {
                         var duration: Double = 0
                         var duration: Double = 0
                         sself.itemModels[sself.currItemModelIndex].voiceStickers.forEach { temp in
                         sself.itemModels[sself.currItemModelIndex].voiceStickers.forEach { temp in
@@ -521,8 +530,6 @@ public class BFRecordScreenController: BFBaseViewController {
                 subtitleCount = self?.itemModels[self?.currItemModelIndex ?? 0].titleStickers.count ?? 0
                 subtitleCount = self?.itemModels[self?.currItemModelIndex ?? 0].titleStickers.count ?? 0
                 BFLog(2, message: "删除\(voiceModel?.wavFilePath ?? "")对应的字幕  后 count\(subtitleCount)")
                 BFLog(2, message: "删除\(voiceModel?.wavFilePath ?? "")对应的字幕  后 count\(subtitleCount)")
 
 
-                // 取消录制以后重置进度
-                self?.withdrawAction()
                 // 重置录制开始时间
                 // 重置录制开始时间
                 self?.recordStartTime = 0
                 self?.recordStartTime = 0
                 /// 重置进度
                 /// 重置进度
@@ -831,7 +838,6 @@ public class BFRecordScreenController: BFBaseViewController {
         if !isDragingProgressSlder, isStopAtRecordRange != -1, isStopAtRecordRange < itemModels[currItemModelIndex].voiceStickers.count {
         if !isDragingProgressSlder, isStopAtRecordRange != -1, isStopAtRecordRange < itemModels[currItemModelIndex].voiceStickers.count {
             let model = itemModels[currItemModelIndex].voiceStickers[isStopAtRecordRange]
             let model = itemModels[currItemModelIndex].voiceStickers[isStopAtRecordRange]
             itemModels[currItemModelIndex].voiceStickers.remove(at: isStopAtRecordRange)
             itemModels[currItemModelIndex].voiceStickers.remove(at: isStopAtRecordRange)
-            events.append(WithDrawModel(type: 3, timestamp: currentAssetProgress.seconds, deletedVoices: [(model, isStopAtRecordRange)]))
             indirectionView?.deleteItem(index: isStopAtRecordRange)
             indirectionView?.deleteItem(index: isStopAtRecordRange)
             // 注:删除录音后图片素材需要回撤指针进度,同时后面录音往前挪
             // 注:删除录音后图片素材需要回撤指针进度,同时后面录音往前挪
             if itemModels[currItemModelIndex].mediaType == .IMAGE {
             if itemModels[currItemModelIndex].mediaType == .IMAGE {
@@ -854,7 +860,11 @@ public class BFRecordScreenController: BFBaseViewController {
                 indirectionView?.resetAllSubViews(items: itemModels[currItemModelIndex].voiceStickers, percenWidth: progressThumV.thumbImageWidth / 2.0, totalDuration: itemModels[currItemModelIndex].materialDuraion)
                 indirectionView?.resetAllSubViews(items: itemModels[currItemModelIndex].voiceStickers, percenWidth: progressThumV.thumbImageWidth / 2.0, totalDuration: itemModels[currItemModelIndex].materialDuraion)
             }
             }
             searchStopAtRecordRange()
             searchStopAtRecordRange()
+
             deleteTitles(voiceModel: model)
             deleteTitles(voiceModel: model)
+            var event = WithDrawModel(type: 3, timestamp: currentAssetProgress.seconds, deletedVoices: [(model, isStopAtRecordRange)])
+            event.deletedTittles = nil
+            events.append(event)
         }
         }
     }
     }
 
 
@@ -887,8 +897,6 @@ public class BFRecordScreenController: BFBaseViewController {
         if recordStartTime <= 0 {
         if recordStartTime <= 0 {
             recordStartTime = currentAssetProgress.seconds
             recordStartTime = currentAssetProgress.seconds
         }
         }
-        // 添加撤销记录点
-        events.append(WithDrawModel(type: 2, timestamp: model.startTime))
 
 
         isRecording = true
         isRecording = true
 
 
@@ -1302,7 +1310,8 @@ public class BFRecordScreenController: BFBaseViewController {
         soundSettingBtn.isHidden = false
         soundSettingBtn.isHidden = false
         withDrawBtn.isHidden = false
         withDrawBtn.isHidden = false
         recordBtn.isHidden = isRecording ? false : isEndPlay
         recordBtn.isHidden = isRecording ? false : isEndPlay
-        //        movie?.cancelProcessing()
+        let su = isEndPlay
+        isEndPlay = su
         assetPlayer?.pause()
         assetPlayer?.pause()
         recordPlayer?.pause()
         recordPlayer?.pause()
         recordStartPlayTime = CMTime.zero
         recordStartPlayTime = CMTime.zero

+ 1 - 0
BFRecordScreenKit/Classes/RecordScreen/View/BFIndirectionProgressView.swift

@@ -50,6 +50,7 @@ class BFIndirectionProgressView: UIView {
 
 
     /// 重绘view
     /// 重绘view
     /// - Parameter items: <#items description#>
     /// - Parameter items: <#items description#>
+    ///  - Parameter  percenWidth: 图片为固定值要传入,视频的话可以计算,也可以传入
     func resetAllSubViews(items: [PQVoiceModel]?, percenWidth: CGFloat = 0, totalDuration: Float64) {
     func resetAllSubViews(items: [PQVoiceModel]?, percenWidth: CGFloat = 0, totalDuration: Float64) {
         frame.size.width = superview?.bounds.width ?? 0
         frame.size.width = superview?.bounds.width ?? 0
         self.totalDuration = totalDuration
         self.totalDuration = totalDuration