|
@@ -58,9 +58,13 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- var isEndPlay = false {
|
|
|
|
- didSet {
|
|
|
|
- recordBtn.isHidden = isEndPlay
|
|
|
|
|
|
+ var isEndPlay = false{
|
|
|
|
+ didSet{
|
|
|
|
+ if itemModels[currItemModelIndex].mediaType == .IMAGE{
|
|
|
|
+ recordBtn.isHidden = false
|
|
|
|
+ }else{
|
|
|
|
+ recordBtn.isHidden = isEndPlay
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -454,6 +458,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 +468,34 @@ 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
|
|
@@ -498,7 +515,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
// 矫正进度
|
|
// 矫正进度
|
|
self?.resetCurrentProgress()
|
|
self?.resetCurrentProgress()
|
|
self?.deleteRecordBtn.isHidden = true
|
|
self?.deleteRecordBtn.isHidden = true
|
|
- self?.recordBtn.isHidden = self?.isEndPlay ?? false
|
|
|
|
|
|
+ self?.isEndPlay = self?.isEndPlay ?? false
|
|
}
|
|
}
|
|
sself.currentPlayRecordIndex = -3 // 刚录音完,不需要播放录音
|
|
sself.currentPlayRecordIndex = -3 // 刚录音完,不需要播放录音
|
|
// 重置录制开始时间
|
|
// 重置录制开始时间
|
|
@@ -521,8 +538,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 +846,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 +868,12 @@ 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)
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -888,8 +907,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,8 +1319,9 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
subtitleBtn.isHidden = false
|
|
subtitleBtn.isHidden = false
|
|
soundSettingBtn.isHidden = false
|
|
soundSettingBtn.isHidden = false
|
|
withDrawBtn.isHidden = false
|
|
withDrawBtn.isHidden = false
|
|
- recordBtn.isHidden = isEndPlay
|
|
|
|
- // movie?.cancelProcessing()
|
|
|
|
|
|
+ let su = self.isEndPlay
|
|
|
|
+ self.isEndPlay = su
|
|
|
|
+
|
|
assetPlayer?.pause()
|
|
assetPlayer?.pause()
|
|
recordPlayer?.pause()
|
|
recordPlayer?.pause()
|
|
recordStartPlayTime = CMTime.zero
|
|
recordStartPlayTime = CMTime.zero
|