Browse Source

修改恢复功能的时间戳

harry 3 years ago
parent
commit
353414ab0c

+ 16 - 16
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -20,7 +20,7 @@ import UIKit
 
 struct WithDrawModel {
     var type: Int // 0:拖动; 1:预览播放暂停 2: 录音结束  3: 删除录音
-    var timestamp: Double
+    var timestamp: CMTime
     var deletedVoices: [(PQVoiceModel, Int)]?
     // add by ak 保存删除的字幕数据用于恢复
     var deletedTittles: [PQEditSubTitleModel]?
@@ -354,7 +354,7 @@ public class BFRecordScreenController: BFBaseViewController {
                     return
                 }
                 if isStart {
-                    sself.events.append(WithDrawModel(type: 0, timestamp: sself.currentAssetProgress.seconds))
+                    sself.events.append(WithDrawModel(type: 0, timestamp: sself.currentAssetProgress))
                 }
 
                 sself.isDragingProgressSlder = true
@@ -498,7 +498,7 @@ public class BFRecordScreenController: BFBaseViewController {
 
         // 录音字幕回调
         recorderManager?.subtitleRecordHandle = { [weak self] eventCode, recordId, asrResult, audioFilePath, _ in
-            BFLog(1, message: "eventcode:\(eventCode), recordid:\(recordId), asr:\(asrResult)")
+            BFLog(1, message: "eventcode:\(eventCode), recordid:\(String(describing: recordId)), asr:\(String(describing: asrResult))")
             
             DispatchQueue.global().async { [weak self] in
                 let newSubtitle = PQEditSubTitleModel()
@@ -538,21 +538,21 @@ public class BFRecordScreenController: BFBaseViewController {
                         if tempVoice != nil {
                             tempItem = item
                         }
-                        BFLog(3, message: "字幕回调-找到录音文件:taskID=\(taskID ?? ""),audioFilePath=\(audioFilePath ?? ""),index=\(index)")
+                        BFLog(3, message: "字幕回调-找到录音文件:taskID=\(taskID ),audioFilePath=\(audioFilePath ?? ""),index=\(index)")
                     }
                 }
                 // 2:如果通过titleTaskId没找到录音文件,则通过
                 if tempVoice == nil && (self?.isRecording ?? false) && self?.itemModels[self?.currItemModelIndex ?? 0].voiceStickers.last?.recordId == nil {
-                    BFLog(3, message: "字幕回调-如果通过titleTaskId没找到录音文件:taskID=\(taskID ?? ""),audioFilePath=\(audioFilePath ?? "")")
+                    BFLog(3, message: "字幕回调-如果通过titleTaskId没找到录音文件:taskID=\(taskID ),audioFilePath=\(audioFilePath ?? "")")
                     tempVoice = self?.itemModels[self?.currItemModelIndex ?? 0].voiceStickers.last
                 }
                 // 3:如果通过titleTaskId跟audioFilePath都没找到录音文件,则默认为recorderManager?.voiceModel
                 guard let currentVoice = (tempVoice ?? self?.recorderManager?.voiceModel) ?? self?.itemModels[self?.currItemModelIndex ?? 0].voiceStickers.last else {
-                    BFLog(3, message: "字幕回调-最终没找到录音文件:taskID=\(taskID ?? ""),audioFilePath=\(audioFilePath ?? "")")
+                    BFLog(3, message: "字幕回调-最终没找到录音文件:taskID=\(taskID ),audioFilePath=\(audioFilePath ?? "")")
                     return
                 }
                 guard let currentItem = tempItem ?? self?.itemModels[self?.currItemModelIndex ?? 0] else {
-                    BFLog(3, message: "字幕回调-最终没找到录音文件:taskID=\(taskID ?? ""),audioFilePath=\(audioFilePath ?? "")")
+                    BFLog(3, message: "字幕回调-最终没找到录音文件:taskID=\(taskID ),audioFilePath=\(audioFilePath ?? "")")
                     return
                 }
                 newSubtitle.timelineIn = currentVoice.startCMTime + CMTime(seconds: Float64((((payload?["begin_time"]) as? Int) ?? 0) + 300) / 1000.0, preferredTimescale: 1000)
@@ -635,7 +635,7 @@ public class BFRecordScreenController: BFBaseViewController {
                 // ***********处理冲突的录音部分资源 end
 
                 // 添加撤销记录点
-                var event = WithDrawModel(type: 2, timestamp: model.startCMTime.seconds)
+                var event = WithDrawModel(type: 2, timestamp: model.startCMTime)
                 event.deletedVoices = deletedVoices
                 event.deletedTittles = deletedTitlesTemp
                 sself.events.append(event)
@@ -1030,7 +1030,7 @@ public class BFRecordScreenController: BFBaseViewController {
             let model = itemModels[currItemModelIndex].voiceStickers[isStopAtRecordRange]
             itemModels[currItemModelIndex].voiceStickers.remove(at: isStopAtRecordRange)
             indirectionView?.deleteItem(index: isStopAtRecordRange)
-            var event = WithDrawModel(type: 3, timestamp: currentAssetProgress.seconds, deletedVoices: [(model, isStopAtRecordRange)])
+            var event = WithDrawModel(type: 3, timestamp: currentAssetProgress, deletedVoices: [(model, isStopAtRecordRange)])
             event.deletedTittles = deleteTitles(voiceModel: model)
             events.append(event)
 
@@ -1226,11 +1226,11 @@ public class BFRecordScreenController: BFBaseViewController {
     @objc func withdrawAction() {
         pause()
         if let action = events.last {
-            var jumpTime = action.timestamp
+            let jumpTime = action.timestamp
             if action.type == 2 {
                 // 撤销录制
                 if let modelIndex = itemModels[currItemModelIndex].voiceStickers.firstIndex(where: { mod in
-                    mod.startCMTime.seconds == action.timestamp
+                    CMTimeCompare(mod.startCMTime, action.timestamp) == 0
                 }) {
                     // 移除音频
                     let model = itemModels[currItemModelIndex].voiceStickers[modelIndex]
@@ -1315,9 +1315,9 @@ public class BFRecordScreenController: BFBaseViewController {
             let dur = itemModels[currItemModelIndex].materialDuraion.seconds
             if dur > 0 {
                 if itemModels[currItemModelIndex].mediaType == .IMAGE {
-                    changeProgress(isBack: true, progress: Float(jumpTime))
+                    changeProgress(isBack: true, progress: Float(jumpTime.seconds))
                 } else {
-                    changeProgress(changCMTime: CMTime(seconds: jumpTime, preferredTimescale: 1000))
+                    changeProgress(changCMTime: jumpTime)
                 }
             } else {
                 changeProgress(progress: Float(0))
@@ -1326,7 +1326,7 @@ public class BFRecordScreenController: BFBaseViewController {
             currentPlayRecordIndex = -1
             BFLog(3, message: "重置播放index-\(#function) = \(currentPlayRecordIndex)")
             hadPrepareToPlayRecord = false
-            progressThumV.progress = jumpTime
+            progressThumV.progress = jumpTime.seconds
 
             if let event = events.last {
                 changeWithDrawBtnLayout(event.type)
@@ -1364,7 +1364,7 @@ public class BFRecordScreenController: BFBaseViewController {
             pause()
             searchStopAtRecordRange()
         } else {
-            events.append(WithDrawModel(type: 1, timestamp: currentAssetProgress.seconds))
+            events.append(WithDrawModel(type: 1, timestamp: currentAssetProgress))
             changeWithDrawBtnLayout(0)
             play()
         }
@@ -2131,7 +2131,7 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
                 endRecord()
             }
             recorderManager?.cancelTitleService()
-//            events.append(WithDrawModel(type: 0, timestamp: currentAssetProgress.seconds))
+//            events.append(WithDrawModel(type: 0, timestamp: currentAssetProgress))
 //            // 重设撤销栈
 //            itemModels[currItemModelIndex].events = events
 //            events = itemModels[page].events