|
@@ -713,11 +713,12 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
if isStopAtRecordRange != -1, isStopAtRecordRange < itemModels[currItemModelIndex].voiceStickers.count {
|
|
if 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)]))
|
|
drawOrUpdateRecordProgessLable()
|
|
drawOrUpdateRecordProgessLable()
|
|
searchStopAtRecordRange()
|
|
searchStopAtRecordRange()
|
|
- events.append(WithDrawModel(type: 3, timestamp: currentAssetProgress.seconds, deletedVoices: [(model, isStopAtRecordRange)]))
|
|
|
|
|
|
|
|
deleteTitles(voiceModel: model)
|
|
deleteTitles(voiceModel: model)
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -801,6 +802,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
pause()
|
|
pause()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 撤销
|
|
@objc func withdrawAction() {
|
|
@objc func withdrawAction() {
|
|
pause()
|
|
pause()
|
|
if let action = events.last {
|
|
if let action = events.last {
|
|
@@ -822,7 +824,17 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
itemModels[currItemModelIndex].voiceStickers.insert(tuple.0, at: tuple.1)
|
|
itemModels[currItemModelIndex].voiceStickers.insert(tuple.0, at: tuple.1)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ //恢复字幕
|
|
|
|
+ let titleTuples = action.deletedTittles
|
|
|
|
+ if titleTuples != nil, titleTuples!.count > 0 {
|
|
|
|
+
|
|
|
|
+ titleTuples?.forEach { titleTuple in
|
|
|
|
+ itemModels[currItemModelIndex].titleStickers.insert(titleTuple.0, at: titleTuple.1)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
drawOrUpdateRecordProgessLable()
|
|
drawOrUpdateRecordProgessLable()
|
|
jumpTime = model.startTime
|
|
jumpTime = model.startTime
|
|
}
|
|
}
|
|
@@ -837,6 +849,17 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
itemModels[currItemModelIndex].voiceStickers.insert(tuple.0, at: tuple.1)
|
|
itemModels[currItemModelIndex].voiceStickers.insert(tuple.0, at: tuple.1)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ //恢复字幕
|
|
|
|
+ let titleTuples = action.deletedTittles
|
|
|
|
+ if titleTuples != nil, titleTuples!.count > 0 {
|
|
|
|
+
|
|
|
|
+ titleTuples?.forEach { titleTuple in
|
|
|
|
+ itemModels[currItemModelIndex].titleStickers.insert(titleTuple.0, at: titleTuple.1)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
drawOrUpdateRecordProgessLable()
|
|
drawOrUpdateRecordProgessLable()
|
|
} else {}
|
|
} else {}
|
|
events.removeLast()
|
|
events.removeLast()
|
|
@@ -1119,9 +1142,10 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
itemModel.index = index
|
|
itemModel.index = index
|
|
itemModel.initOriginData(phasset: asset)
|
|
itemModel.initOriginData(phasset: asset)
|
|
itemModels.append(itemModel)
|
|
itemModels.append(itemModel)
|
|
- if index == currItemModelIndex {
|
|
|
|
|
|
+ if index == 0 {
|
|
if asset.mediaType == .video {
|
|
if asset.mediaType == .video {
|
|
- itemModel.fetchAVUrlAsset = { [weak self, weak itemModel] _ in
|
|
|
|
|
|
+ itemModel.fetchAVUrlAsset = { [weak self, weak itemModel] uralss in
|
|
|
|
+ self?.export(avsss:uralss)
|
|
DispatchQueue.main.async { [weak self] in
|
|
DispatchQueue.main.async { [weak self] in
|
|
self?.progressThumV.recordItem = itemModel
|
|
self?.progressThumV.recordItem = itemModel
|
|
self?.progressThumV.isHidden = false
|
|
self?.progressThumV.isHidden = false
|
|
@@ -1177,6 +1201,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
avplayerTimeObserver = assetPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 100), queue: DispatchQueue.global()) { [weak self] time in
|
|
avplayerTimeObserver = assetPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 100), queue: DispatchQueue.global()) { [weak self] time in
|
|
// 进度监控
|
|
// 进度监控
|
|
self?.periodicTimeObserver(item: item, time: time)
|
|
self?.periodicTimeObserver(item: item, time: time)
|
|
|
|
+
|
|
if self?.isNormalPlaying ?? false {
|
|
if self?.isNormalPlaying ?? false {
|
|
// 播放对应的录音音频
|
|
// 播放对应的录音音频
|
|
self?.playRecord(at: time, periodicTimeObserver: { currentT, currentItem in
|
|
self?.playRecord(at: time, periodicTimeObserver: { currentT, currentItem in
|