|
@@ -40,7 +40,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
var currItemModelIndex = 0
|
|
|
public var itemModels = [BFRecordItemModel]()
|
|
|
// add by ak 当前的显示的字幕位置
|
|
|
- var showSubtitleIndex = 0
|
|
|
+ var showSubtitleIndex = -1
|
|
|
// var shouldPlayRecordIndex:Int = -1 // 当前应该播放的录音资源序号
|
|
|
var currentPlayRecordIndex: Int = -1 // >= 0 :当前正在播放的录音资源序号; -3: 刚录音完,不需要播放录音; -1:初始化阶段
|
|
|
public var displayLink: CADisplayLink? // 图片素材播放控制
|
|
@@ -733,7 +733,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
subtitleEditView.textView.becomeFirstResponder()
|
|
|
subtitleEditView.setNewText(text: subtitleLabel.text ?? "", index: showSubtitleIndex)
|
|
|
} else {
|
|
|
- BFLog(message: "播放状态不可以编辑字幕")
|
|
|
+ BFLog(message: "播放状态,内容为空时不可以编辑字幕")
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -741,9 +741,26 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
/// - Parameter time: 当前播放的进度
|
|
|
func updateSubtitle(time: CMTime) {
|
|
|
BFLog(message: "currTime is \(CMTimeGetSeconds(time))")
|
|
|
- if isRecording || !subtitleSettingView.subtitle.setting.subtitleIsShow {
|
|
|
+ if isRecording || !subtitleSettingView.subtitle.setting.subtitleIsShow || currentPlayRecordIndex == -3 {
|
|
|
+ // currentPlayRecordIndex == -3 代表刚录完音,不要找字幕,会因为小幅度回退seek导致上一个字幕出现
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+ if showSubtitleIndex > -1, showSubtitleIndex < itemModels[currItemModelIndex].titleStickers.count {
|
|
|
+ let currShowSubtitle = itemModels[currItemModelIndex].titleStickers[showSubtitleIndex]
|
|
|
+
|
|
|
+ if CMTimeCompare(currShowSubtitle.timelineIn, time) <= 0, CMTimeCompare(currShowSubtitle.timelineOut, time) > 0{
|
|
|
+ // 已存在字幕
|
|
|
+ if subtitleLabel.text != currShowSubtitle.text{
|
|
|
+ subtitleLabel.text = currShowSubtitle.text
|
|
|
+ setSubtitleStyle(settingModel: subtitleSettingView.subtitle.setting)
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ showSubtitleIndex = -1
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
var findShowSubtitle: PQEditSubTitleModel?
|
|
|
for (index, subtitle) in itemModels[currItemModelIndex].titleStickers.enumerated() {
|
|
|
if CMTimeCompare(subtitle.timelineIn, time) <= 0, CMTimeCompare(subtitle.timelineOut, time) > 0, subtitle.audioFilePath.count > 0 { // audioFilePath.count 这个条件是确保这个字幕有对应录音
|
|
@@ -753,8 +770,9 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
- if findShowSubtitle != nil, subtitleSettingView.subtitle.setting.subtitleIsShow {
|
|
|
- subtitleLabel.text = findShowSubtitle?.text ?? ""
|
|
|
+
|
|
|
+ if findShowSubtitle != nil, subtitleLabel.text != findShowSubtitle!.text {
|
|
|
+ subtitleLabel.text = findShowSubtitle!.text
|
|
|
setSubtitleStyle(settingModel: subtitleSettingView.subtitle.setting)
|
|
|
|
|
|
} else {
|
|
@@ -1443,6 +1461,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
assetPlayer?.volume = noSpeakVolume
|
|
|
}
|
|
|
}
|
|
|
+ BFLog(1, message: "volume:\(assetPlayer?.volume ?? -1)")
|
|
|
|
|
|
if currentPlayRecordIndex == -3 { // 刚录音完,不需要播放
|
|
|
return
|