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