|
@@ -69,6 +69,9 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
var events = [WithDrawModel]() // 行为记录,方便撤销
|
|
|
var isDragingProgressSlder : Bool = false // 是否在拖动进度条
|
|
|
var isStopAtRecordRange = -1
|
|
|
+
|
|
|
+ //保存识别出来的字幕信息,用于回放,和合成使用
|
|
|
+ var saveSubTitles:[PQEditSubTitleModel] = Array.init()
|
|
|
//定义音频的编码参数
|
|
|
let recordSettings:[String : Any] = [AVSampleRateKey : 44100.0, // 声音采样率
|
|
|
AVFormatIDKey : kAudioFormatLinearPCM, // 编码格式
|
|
@@ -266,11 +269,11 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
let test = ""
|
|
|
let leftPoint:CGFloat = 37
|
|
|
- let height = sizeWithText(text: test, font: UIFont.systemFont(ofSize: 70 * 375 / 1080), size: CGSize(width: cScreenWidth - leftPoint * 2, height: 102))
|
|
|
+ let height = sizeWithText(text: test, font: UIFont.boldSystemFont(ofSize: 70 * 375 / 1080), size: CGSize(width: cScreenWidth - leftPoint * 2, height: 102))
|
|
|
|
|
|
let subtitleLabel = PQSubTitleLabel.init(frame: CGRect.init(x: leftPoint, y: (cScreenHeigth * 0.70 - height.height) , width: cScreenWidth - 37 * 2, height: height.height))
|
|
|
subtitleLabel.textAlignment = .center
|
|
|
- subtitleLabel.text = "test"
|
|
|
+ subtitleLabel.text = test
|
|
|
|
|
|
subtitleLabel.numberOfLines = 0
|
|
|
subtitleLabel.lineBreakMode = .byClipping
|
|
@@ -379,10 +382,10 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
//字幕设置回调
|
|
|
//设置默认值
|
|
|
- setSubtitleStyle(settingModel: subtitleSettingView.subtitleSetting)
|
|
|
- subtitleSettingView.subtitleSettingCallBack = {[weak self] settingModel in
|
|
|
+ setSubtitleStyle(settingModel: subtitleSettingView.subtitle.setting)
|
|
|
+ subtitleSettingView.subtitleSettingCallBack = {[weak self] subtitileModel in
|
|
|
|
|
|
- self?.setSubtitleStyle(settingModel: settingModel)
|
|
|
+ self?.setSubtitleStyle(settingModel: subtitileModel.setting)
|
|
|
|
|
|
}
|
|
|
subtitleEditView.editSubtitleDone = {[weak self] newtext in
|
|
@@ -398,26 +401,33 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
BFLog(message: "编辑字幕")
|
|
|
subtitleEditView.isHidden = false
|
|
|
subtitleEditView.textView.becomeFirstResponder()
|
|
|
- subtitleEditView.settingModel = subtitleSettingView.subtitleSetting
|
|
|
-
|
|
|
subtitleEditView.setNewText(text: subtitleLabel.text ?? "")
|
|
|
}
|
|
|
- func setSubtitleStyle(settingModel:BFSubtitileSettingModel) {
|
|
|
+
|
|
|
+ /// 更新字幕,在回放时使用
|
|
|
+ /// - Parameter time: 当前播放的进度
|
|
|
+ func updateSubtitle(time:CMTime) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /// 设置字幕样式和位置
|
|
|
+ /// - Parameter settingModel: 样式model
|
|
|
+ func setSubtitleStyle(settingModel:BFSubTitileSettingModel) {
|
|
|
|
|
|
if(settingModel.subtitleIsShow){
|
|
|
//设置样式
|
|
|
subtitleLabel.strokeColor = settingModel.strokeColor
|
|
|
subtitleLabel.strokeWidth = settingModel.strokeWidth
|
|
|
- subtitleLabel.font = UIFont.systemFont(ofSize: CGFloat(settingModel.subtitleSize) * 375 / 1080)
|
|
|
+ subtitleLabel.font = UIFont.boldSystemFont(ofSize: CGFloat(settingModel.subtitleSize) * 375 / 1080)
|
|
|
subtitleLabel.textColor = settingModel.fontColor
|
|
|
|
|
|
let leftPoint:CGFloat = 37
|
|
|
- let height = sizeWithText(text: self.subtitleLabel.text ?? "", font: UIFont.systemFont(ofSize: 70 * 375 / 1080), size: CGSize(width: cScreenWidth - leftPoint * 2, height: 102))
|
|
|
+ let height = sizeWithText(text: self.subtitleLabel.text ?? "", font: UIFont.systemFont(ofSize: CGFloat(settingModel.subtitleSize * 375 / 1080)), size: CGSize(width: cScreenWidth - leftPoint * 2, height: 102))
|
|
|
|
|
|
//下 //设置位置
|
|
|
- if(self.subtitleSettingView.subtitleSetting.subtitlePoint == 0){
|
|
|
+ if(self.subtitleSettingView.subtitle.setting.subtitlePoint == 0){
|
|
|
self.subtitleLabel.frame = CGRect.init(x: leftPoint, y: (cScreenHeigth * 0.70 - height.height) , width: cScreenWidth - 37 * 2, height: height.height)
|
|
|
- }else if(self.subtitleSettingView.subtitleSetting.subtitlePoint == 1){//中
|
|
|
+ }else if(self.subtitleSettingView.subtitle.setting.subtitlePoint == 1){//中
|
|
|
self.subtitleLabel.frame = CGRect.init(x: leftPoint, y: (cScreenHeigth / 2.0 - height.height / 2.0) , width: cScreenWidth - 37 * 2, height: height.height)
|
|
|
}else{//上
|
|
|
self.subtitleLabel.frame = CGRect.init(x: leftPoint, y: (cScreenHeigth * 0.12) , width: cScreenWidth - 37 * 2, height: height.height)
|
|
@@ -1096,17 +1106,21 @@ extension BFRecordScreenController:PQSpeechTranscriberUtilDelegate{
|
|
|
|
|
|
let payload = dicResult?["payload"] as? Dictionary<String,Any>
|
|
|
|
|
|
-
|
|
|
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)
|
|
|
|
|
|
- self.setSubtitleStyle(settingModel: self.subtitleSettingView.subtitleSetting)
|
|
|
-
|
|
|
+ //2,保存字幕数据
|
|
|
+ let newSubtitle = PQEditSubTitleModel()
|
|
|
+// newSubtitle.timelineIn = subTitle.timelineIn
|
|
|
+// newSubtitle.timelineOut = subTitle.timelineOut
|
|
|
+ newSubtitle.text = ((payload?["result"]) as? String) ?? ""
|
|
|
+ newSubtitle.setting = self.subtitleSettingView.subtitle.setting
|
|
|
+ self.saveSubTitles.append(newSubtitle)
|
|
|
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
}
|