|
@@ -75,7 +75,6 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
var recordStartPlayTime: CMTime = .zero
|
|
var recordStartPlayTime: CMTime = .zero
|
|
|
|
|
|
var currenStartPlayTime: CMTime = .zero
|
|
var currenStartPlayTime: CMTime = .zero
|
|
-
|
|
|
|
var pauseTime: Double = 0
|
|
var pauseTime: Double = 0
|
|
|
|
|
|
var assetPlayer: AVPlayer?
|
|
var assetPlayer: AVPlayer?
|
|
@@ -432,7 +431,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
|
|
|
|
recorderManager?.recorderProgrossHandle = { [weak self] progress in
|
|
recorderManager?.recorderProgrossHandle = { [weak self] progress in
|
|
-
|
|
+ BFLog(1, message: "curr:录音进度--\(progress),\(self?.isRecording ?? false)")
|
|
self?.drawProgressIndication(progress: (progress.isNaN || progress.isInfinite) ? 0 : progress)
|
|
self?.drawProgressIndication(progress: (progress.isNaN || progress.isInfinite) ? 0 : progress)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -479,6 +478,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
if let sself = self, let model = voideModel, FileManager.default.fileExists(atPath: model.wavFilePath ?? "") {
|
|
if let sself = self, let model = voideModel, FileManager.default.fileExists(atPath: model.wavFilePath ?? "") {
|
|
|
|
|
|
model.endTime = sself.currentAssetProgress.seconds
|
|
model.endTime = sself.currentAssetProgress.seconds
|
|
|
|
+ BFLog(message: "录制结束当前录音文件:\(model.wavFilePath ?? "")-\(model.startTime)-\(model.endTime)-\(model.endTime - model.startTime)")
|
|
|
|
|
|
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))
|
|
|
|
|
|
@@ -486,23 +486,44 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
var deletedTitlesTemp = [(PQEditSubTitleModel, Int)]()
|
|
var deletedTitlesTemp = [(PQEditSubTitleModel, Int)]()
|
|
for (i, m) in sself.itemModels[sself.currItemModelIndex].voiceStickers.enumerated() {
|
|
for (i, m) in sself.itemModels[sself.currItemModelIndex].voiceStickers.enumerated() {
|
|
|
|
+ BFLog(message: "录制结束查询时间重合录音文件:\(i)-\(m.wavFilePath ?? "")-\(m.startTime)-\(m.endTime)-\(m.endTime - m.startTime)")
|
|
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))
|
|
-
|
|
|
|
if CMTimeRangeGetIntersection(originRange, otherRange: newRange).duration.seconds > 0 {
|
|
if CMTimeRangeGetIntersection(originRange, otherRange: newRange).duration.seconds > 0 {
|
|
deletedVoices.append((m, i))
|
|
deletedVoices.append((m, i))
|
|
deletedTitlesTemp += sself.deleteTitles(voiceModel: m)
|
|
deletedTitlesTemp += sself.deleteTitles(voiceModel: m)
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
+ for (item,index) in deletedVoices {
|
|
|
|
+ BFLog(message: "录制结束需要删除的录音文件:\(index)-\(item.wavFilePath ?? "")-\(item.startTime)-\(item.endTime)-\(item.endTime - item.startTime)")
|
|
|
|
+ }
|
|
|
|
|
|
- sself.itemModels[sself.currItemModelIndex].voiceStickers.removeAll { m in
|
|
+ deletedVoices.forEach { (m,i) in
|
|
- let originRange = CMTimeRange(start: CMTime(seconds: m.startTime, preferredTimescale: 1000), end: CMTime(seconds: m.endTime, preferredTimescale: 1000))
|
|
+ sself.itemModels[sself.currItemModelIndex].voiceStickers.removeAll { tempM in
|
|
- return CMTimeRangeGetIntersection(originRange, otherRange: newRange).duration.seconds > 0
|
|
+ return m.wavFilePath == tempM.wavFilePath
|
|
|
|
+ }
|
|
}
|
|
}
|
|
BFLog(1, message: "添加录音文件:\(model.startTime) -- \(model.endTime)")
|
|
BFLog(1, message: "添加录音文件:\(model.startTime) -- \(model.endTime)")
|
|
-
|
|
|
|
sself.itemModels[sself.currItemModelIndex].voiceStickers.append(model)
|
|
sself.itemModels[sself.currItemModelIndex].voiceStickers.append(model)
|
|
|
|
+
|
|
|
|
+ if sself.itemModels[sself.currItemModelIndex].mediaType == .IMAGE {
|
|
|
|
+ if deletedVoices.count > 0 {
|
|
|
|
+
|
|
|
|
+ sself.itemModels[sself.currItemModelIndex].voiceStickers = sself.itemModels[sself.currItemModelIndex].voiceStickers.sorted { voice1, voice2 in
|
|
|
|
+ voice1.startTime < voice2.startTime
|
|
|
|
+ }
|
|
|
|
+ for (index, item) in sself.itemModels[sself.currItemModelIndex].voiceStickers.enumerated() {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ BFLog(message: "录制结束重新排序录音文件:\(index)-\(item.wavFilePath ?? "")-\(item.startTime)-\(item.endTime)-\(item.endTime - item.startTime)")
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ sself.itemModels[sself.currItemModelIndex].voiceStickers.append(model)
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -515,6 +536,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
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
|
|
|
|
+ BFLog(message: "录制结束-最终:\(temp.wavFilePath ?? "")-\(temp.startTime)-\(temp.endTime)-\(temp.endTime - temp.startTime)")
|
|
temp.duration = "\(temp.endTime - temp.startTime)"
|
|
temp.duration = "\(temp.endTime - temp.startTime)"
|
|
duration = duration + (temp.endTime - temp.startTime)
|
|
duration = duration + (temp.endTime - temp.startTime)
|
|
}
|
|
}
|
|
@@ -540,8 +562,6 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
}
|
|
}
|
|
sself.currentPlayRecordIndex = -3
|
|
sself.currentPlayRecordIndex = -3
|
|
BFLog(3, message: "重置播放index-\(#function) = \(sself.currentPlayRecordIndex)")
|
|
BFLog(3, message: "重置播放index-\(#function) = \(sself.currentPlayRecordIndex)")
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
recorderManager?.cancelRecordHandle = { [weak self] voiceModel in
|
|
recorderManager?.cancelRecordHandle = { [weak self] voiceModel in
|
|
@@ -559,9 +579,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?.currentAssetProgress = CMTime(seconds: voiceModel?.startTime ?? 0, preferredTimescale: 1000)
|
|
self?.currentAssetProgress = CMTime(seconds: voiceModel?.startTime ?? 0, preferredTimescale: 1000)
|
|
self?.resetCurrentProgress()
|
|
self?.resetCurrentProgress()
|
|
@@ -940,10 +957,6 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
recorderManager?.voiceModel = model
|
|
recorderManager?.voiceModel = model
|
|
recorderManager?.startRecord()
|
|
recorderManager?.startRecord()
|
|
recorderManager?.audioRecorder?.startNeoNui(NeoNuiToken ?? "", appid: NeoNuiAPPID ?? "")
|
|
recorderManager?.audioRecorder?.startNeoNui(NeoNuiToken ?? "", appid: NeoNuiAPPID ?? "")
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
isRecording = true
|
|
isRecording = true
|
|
|
|
|
|
if !avatarView.isHidden {
|
|
if !avatarView.isHidden {
|
|
@@ -1904,7 +1917,7 @@ public extension BFRecordScreenController {
|
|
|
|
|
|
func imageRecordProgress(isRecord: Bool = false, progress: Float64) {
|
|
func imageRecordProgress(isRecord: Bool = false, progress: Float64) {
|
|
if isRecord {
|
|
if isRecord {
|
|
- currentAssetProgress = CMTime(seconds: itemModels[currItemModelIndex].materialDuraion + progress, preferredTimescale: 1000)
|
|
+ currentAssetProgress = CMTime(seconds: (recorderManager?.voiceModel?.startTime ?? 0) + progress, preferredTimescale: 1000)
|
|
} else {
|
|
} else {
|
|
currentAssetProgress = CMTime(seconds: recordStartPlayTime.seconds + progress, preferredTimescale: 1000)
|
|
currentAssetProgress = CMTime(seconds: recordStartPlayTime.seconds + progress, preferredTimescale: 1000)
|
|
}
|
|
}
|