|
@@ -30,6 +30,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
var currItemModelIndex = 0
|
|
|
public var itemModels = [BFRecordItemModel]()
|
|
|
+ var showSubtitleIndex = 0
|
|
|
// var shouldPlayRecordIndex:Int = -1 // 当前应该播放的录音资源序号
|
|
|
var currentPlayRecordIndex: Int = -1 // >= 0 :当前正在播放的录音资源序号; -3: 刚录音完,不需要播放录音; -1:初始化阶段
|
|
|
var isRecording = false { // 是否正在录音
|
|
@@ -295,7 +296,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
subtitleLabel.text = test
|
|
|
|
|
|
subtitleLabel.numberOfLines = 0
|
|
|
- subtitleLabel.lineBreakMode = .byClipping
|
|
|
+ subtitleLabel.lineBreakMode = .byWordWrapping
|
|
|
subtitleLabel.isUserInteractionEnabled = true
|
|
|
subtitleLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(editSubtitle)))
|
|
|
return subtitleLabel
|
|
@@ -427,8 +428,14 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
self?.setSubtitleStyle(settingModel: subtitileModel.setting)
|
|
|
}
|
|
|
- subtitleEditView.editSubtitleDone = { [weak self] newtext in
|
|
|
+ subtitleEditView.editSubtitleDone = { [weak self] newtext ,index in
|
|
|
+ //1,刷新 UI
|
|
|
self?.subtitleLabel.text = newtext
|
|
|
+
|
|
|
+ self?.setSubtitleStyle(settingModel: (self?.subtitleSettingView.subtitle.setting)!)
|
|
|
+
|
|
|
+ //更新数据
|
|
|
+ self?.itemModels[self?.currItemModelIndex ?? 0].titleStickers[index].text = newtext
|
|
|
}
|
|
|
|
|
|
layoutsubview()
|
|
@@ -440,22 +447,25 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
BFLog(message: "编辑字幕")
|
|
|
subtitleEditView.isHidden = false
|
|
|
subtitleEditView.textView.becomeFirstResponder()
|
|
|
- subtitleEditView.setNewText(text: subtitleLabel.text ?? "")
|
|
|
+ subtitleEditView.setNewText(text: subtitleLabel.text ?? "",index: showSubtitleIndex)
|
|
|
}
|
|
|
|
|
|
/// 更新字幕,在回放时使用
|
|
|
/// - Parameter time: 当前播放的进度
|
|
|
func updateSubtitle(time: CMTime) {
|
|
|
var findShowSubtitle: PQEditSubTitleModel?
|
|
|
- for subtitle in itemModels[currItemModelIndex].titleStickers {
|
|
|
+ for (index,subtitle) in itemModels[currItemModelIndex].titleStickers.enumerated() {
|
|
|
if subtitle.timelineIn <= CMTimeGetSeconds(time) * 1_000_000, subtitle.timelineOut >= CMTimeGetSeconds(time) * 1_000_000 {
|
|
|
findShowSubtitle = subtitle
|
|
|
BFLog(message: "找到要显示的字幕 in \(findShowSubtitle?.timelineIn ?? 0.0) out \(findShowSubtitle?.timelineOut ?? 0.0) text:\(findShowSubtitle?.text ?? "") currTime is \(CMTimeGetSeconds(time))")
|
|
|
+ showSubtitleIndex = index
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
if findShowSubtitle != nil {
|
|
|
subtitleLabel.text = findShowSubtitle?.text
|
|
|
+ setSubtitleStyle(settingModel: subtitleSettingView.subtitle.setting)
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -470,7 +480,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
subtitleLabel.textColor = settingModel.fontColor
|
|
|
|
|
|
let leftPoint: CGFloat = 37
|
|
|
- let height = sizeWithText(text: subtitleLabel.text ?? "", font: UIFont.systemFont(ofSize: CGFloat(settingModel.subtitleSize * 375 / 1080)), size: CGSize(width: cScreenWidth - leftPoint * 2, height: 102))
|
|
|
+ let height = sizeWithText(text: subtitleLabel.text ?? "", font: UIFont.boldSystemFont(ofSize: CGFloat(settingModel.subtitleSize * 375 / 1080)), size: CGSize(width: cScreenWidth - leftPoint * 2, height: 102))
|
|
|
|
|
|
// 下 //设置位置
|
|
|
if subtitleSettingView.subtitle.setting.subtitlePoint == 0 {
|
|
@@ -1174,15 +1184,16 @@ extension BFRecordScreenController: PQSpeechTranscriberUtilDelegate {
|
|
|
|
|
|
BFLog(message: "识别结果:dicResult is \(String(describing: dicResult)) \((payload?["result"])!)")
|
|
|
DispatchQueue.main.async {
|
|
|
- // 1,显示字幕
|
|
|
-// self.subtitleLabel.text = ((payload?["result"]) as? String) ?? ""
|
|
|
- self.setSubtitleStyle(settingModel: self.subtitleSettingView.subtitle.setting)
|
|
|
-
|
|
|
+
|
|
|
// 2,保存字幕数据
|
|
|
let newSubtitle = PQEditSubTitleModel()
|
|
|
newSubtitle.timelineIn = self.itemModels[self.currItemModelIndex].titleStickers.last?.timelineOut ?? 0
|
|
|
// 当前已处理的音频时长,单位:毫秒。
|
|
|
- newSubtitle.timelineOut = Float64(((payload?["time"]) as? Int) ?? 0) * 1_000_000
|
|
|
+
|
|
|
+ newSubtitle.timelineOut = Float64(((payload?["time"]) as? Int) ?? 0) * 1_000.0 + (self.recorderManager.voiceModel?.startTime ?? 0.0) * 1_000_000.0
|
|
|
+
|
|
|
+ BFLog(message: "添加字幕数据 timelineIn \(newSubtitle.timelineIn) timelineOut \(newSubtitle.timelineOut) text \(newSubtitle.text)")
|
|
|
+
|
|
|
newSubtitle.text = ((payload?["result"]) as? String) ?? ""
|
|
|
newSubtitle.setting = self.subtitleSettingView.subtitle.setting
|
|
|
|