|
@@ -71,7 +71,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
var isStopAtRecordRange = -1
|
|
|
|
|
|
//保存识别出来的字幕信息,用于回放,和合成使用
|
|
|
- var saveSubTitles:[PQEditSubTitleModel] = Array.init()
|
|
|
+// var saveSubTitles:[PQEditSubTitleModel] = Array.init()
|
|
|
//定义音频的编码参数
|
|
|
let recordSettings:[String : Any] = [AVSampleRateKey : 44100.0, // 声音采样率
|
|
|
AVFormatIDKey : kAudioFormatLinearPCM, // 编码格式
|
|
@@ -416,7 +416,18 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
/// 更新字幕,在回放时使用
|
|
|
/// - Parameter time: 当前播放的进度
|
|
|
func updateSubtitle(time:CMTime) {
|
|
|
-
|
|
|
+
|
|
|
+ var findShowSubtitle:PQEditSubTitleModel?
|
|
|
+ for subtitle in itemModels[currItemModelIndex].titleStickers {
|
|
|
+ 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))")
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(findShowSubtitle != nil){
|
|
|
+ subtitleLabel.text = findShowSubtitle?.text
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// 设置字幕样式和位置
|
|
@@ -626,17 +637,19 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
assetPlayer?.play()
|
|
|
|
|
|
-
|
|
|
- speechTranscriberUtil?.delegate = self
|
|
|
- speechTranscriberUtil?.startTranscriber()
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ DispatchQueue.global().async {
|
|
|
+ self.speechTranscriberUtil?.delegate = self
|
|
|
+ self.speechTranscriberUtil?.startTranscriber()
|
|
|
+ self.speechTranscriberUtil?.currItemModelIndex = Int32(self.currItemModelIndex)
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@objc func endRecord(){
|
|
|
|
|
|
- speechTranscriberUtil?.endTranscriber()
|
|
|
+ DispatchQueue.global().async {
|
|
|
+ self.speechTranscriberUtil?.endTranscriber()
|
|
|
+ }
|
|
|
playBtn.isSelected = true
|
|
|
// 存储录音
|
|
|
isRecording = false
|
|
@@ -1007,6 +1020,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
if su{
|
|
|
self?.progressThumV.progress = time.seconds
|
|
|
}
|
|
|
+ self?.updateSubtitle(time: time)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1119,16 +1133,19 @@ extension BFRecordScreenController:PQSpeechTranscriberUtilDelegate{
|
|
|
DispatchQueue.main.async {
|
|
|
|
|
|
//1,显示字幕
|
|
|
- self.subtitleLabel.text = ((payload?["result"]) as? String) ?? ""
|
|
|
+// self.subtitleLabel.text = ((payload?["result"]) as? String) ?? ""
|
|
|
self.setSubtitleStyle(settingModel: self.subtitleSettingView.subtitle.setting)
|
|
|
|
|
|
//2,保存字幕数据
|
|
|
let newSubtitle = PQEditSubTitleModel()
|
|
|
-// newSubtitle.timelineIn = subTitle.timelineIn
|
|
|
-// newSubtitle.timelineOut = subTitle.timelineOut
|
|
|
+ newSubtitle.timelineIn = self.itemModels[self.currItemModelIndex].titleStickers.last?.timelineOut ?? 0
|
|
|
+ //当前已处理的音频时长,单位:毫秒。
|
|
|
+ newSubtitle.timelineOut = Float64(((payload?["time"]) as? Int) ?? 0) * 1_000_000
|
|
|
newSubtitle.text = ((payload?["result"]) as? String) ?? ""
|
|
|
newSubtitle.setting = self.subtitleSettingView.subtitle.setting
|
|
|
- self.saveSubTitles.append(newSubtitle)
|
|
|
+
|
|
|
+ self.itemModels[self.currItemModelIndex].titleStickers.append(newSubtitle)
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|