|  | @@ -1100,23 +1100,26 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |                              if mod.startCMTime.seconds >= model.startCMTime.seconds {
 | 
	
		
			
				|  |  |                                  mod.startCMTime = mod.startCMTime + duration
 | 
	
		
			
				|  |  |                                  mod.endCMTime = mod.endCMTime + duration
 | 
	
		
			
				|  |  | +                                
 | 
	
		
			
				|  |  | +                                //对应的字幕进行后移修改
 | 
	
		
			
				|  |  | +                                let titleList = recordItem.titleStickers.filter({ title in
 | 
	
		
			
				|  |  | +                                    title.recordId == mod.recordId
 | 
	
		
			
				|  |  | +                                })
 | 
	
		
			
				|  |  | +                                titleList.forEach { t in
 | 
	
		
			
				|  |  | +                                    t.timelineIn = t.timelineIn + duration
 | 
	
		
			
				|  |  | +                                    t.timelineOut = t.timelineOut + duration
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                //对应的变声进行后移修改
 | 
	
		
			
				|  |  | +                                let voiceList = recordItem.voiceChangeStickers.filter({ voice in
 | 
	
		
			
				|  |  | +                                    voice.recordId == mod.recordId
 | 
	
		
			
				|  |  | +                                })
 | 
	
		
			
				|  |  | +                                voiceList.forEach { mod in
 | 
	
		
			
				|  |  | +                                    mod.startCMTime = mod.startCMTime + duration
 | 
	
		
			
				|  |  | +                                    mod.endCMTime = mod.endCMTime + duration
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          })
 | 
	
		
			
				|  |  | -                        
 | 
	
		
			
				|  |  | -                        recordItem.voiceChangeStickers.forEach({ mod in
 | 
	
		
			
				|  |  | -                            if mod.startCMTime.seconds >= model.startCMTime.seconds {
 | 
	
		
			
				|  |  | -                                mod.startCMTime = mod.startCMTime + duration
 | 
	
		
			
				|  |  | -                                mod.endCMTime = mod.endCMTime + duration
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | -                        })
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                        recordItem.titleStickers.forEach({ mod in
 | 
	
		
			
				|  |  | -                            if mod.timelineIn.seconds >= model.startCMTime.seconds {
 | 
	
		
			
				|  |  | -                                mod.timelineIn = mod.timelineIn + duration
 | 
	
		
			
				|  |  | -                                mod.timelineOut = mod.timelineOut + duration
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | -                        })
 | 
	
		
			
				|  |  | -                        
 | 
	
		
			
				|  |  | +   
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  
 | 
	
	
		
			
				|  | @@ -1131,10 +1134,10 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |                  // 录制结束回调给主工程页面(埋点之类功能)
 | 
	
		
			
				|  |  |                  wself.recordEndHandle?(model)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                if wself.currMediaType != .Video {
 | 
	
		
			
				|  |  | +                if wself.currMediaType != .Video,  CMTimeCompare(model.endCMTime, wself.itemModels[wself.currItemModelIndex].materialDuraion) == 0{
 | 
	
		
			
				|  |  |                      wself.isEndPlay = true
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  |                  DispatchQueue.main.async { [weak self] in
 | 
	
		
			
				|  |  |                      guard let wself = self else { return }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1157,7 +1160,9 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |                      wself.resetCurrentProgress()
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                wself.currentPlayRecordIndex = -3 // 刚录音完,不需要播放录音
 | 
	
		
			
				|  |  | +                if wself.currMediaType == .Video {
 | 
	
		
			
				|  |  | +                    wself.currentPlayRecordIndex = -3 // 刚录音完,不需要播放录音
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  BFLog(3, message: "重置播放index-\(#function) = \(wself.currentPlayRecordIndex)")
 | 
	
		
			
				|  |  |                  recorderManager?.voiceModel = nil
 | 
	
		
			
				|  |  |                  
 | 
	
	
		
			
				|  | @@ -1223,7 +1228,7 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |                  let currShowSubtitle = recordItem.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)
 | 
	
	
		
			
				|  | @@ -1573,7 +1578,10 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |              recorderManager?.cancelTitleService()
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  | -        events.removeLast()
 | 
	
		
			
				|  |  | +        if currMediaType != .Camera{
 | 
	
		
			
				|  |  | +            events.removeLast()
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  |          // 删除文件
 | 
	
		
			
				|  |  |          recorderManager?.deleteFile(outfile: voiceModel?.wavFilePath ?? "")
 | 
	
		
			
				|  |  |          var subtitleCount = itemModels[currItemModelIndex].titleStickers.count
 | 
	
	
		
			
				|  | @@ -1857,6 +1865,7 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |                  changeWithDrawBtnLayout(event.type)
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  |                  changeWithDrawBtnLayout(0)
 | 
	
		
			
				|  |  | +                withDrawBtn.isEnabled = false
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              searchStopAtRecordRange()
 | 
	
		
			
				|  |  |              let itemModel = itemModels[currItemModelIndex]
 | 
	
	
		
			
				|  | @@ -2135,9 +2144,9 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |      func play() {
 | 
	
		
			
				|  |  |          //如果当前段有没有转完的发音人显示 Loadingview
 | 
	
		
			
				|  |  |          if(!voiceChangeStickerFinish(itemIndex: currItemModelIndex,isShowLoadView: true)){
 | 
	
		
			
				|  |  | -          
 | 
	
		
			
				|  |  |              return
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          BFLog(1, message: "开始播放 \(currentAssetProgress.seconds)")
 | 
	
		
			
				|  |  |          recorderManager?.voiceModel = nil
 | 
	
		
			
				|  |  |          events.append(WithDrawModel(type: 1, timestamp: currentAssetProgress, recordItem: rscurrentManager.recordItem!))
 | 
	
	
		
			
				|  | @@ -2365,7 +2374,7 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |              DispatchQueue.main.async { [weak self] in
 | 
	
		
			
				|  |  |                  guard let wself = self else { return }
 | 
	
		
			
				|  |  |                  
 | 
	
		
			
				|  |  | -                wself.indirectionView?.setProgress(start: startTime, progress: max(0, progress))
 | 
	
		
			
				|  |  | +                wself.indirectionView?.setProgress(start: startTime, progress: max(0, progress), isInsert:wself.currMediaType == .Image)
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -2381,9 +2390,9 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |              withDrawBtn.setTitle("record_recover".BFLocale, for: .normal)
 | 
	
		
			
				|  |  |          case 2:
 | 
	
		
			
				|  |  |              withDrawBtn.setTitle("record_undo".BFLocale, for: .normal)
 | 
	
		
			
				|  |  | -        case 0:
 | 
	
		
			
				|  |  | -            withDrawBtn.isEnabled = false
 | 
	
		
			
				|  |  | -            fallthrough
 | 
	
		
			
				|  |  | +//        case 0:
 | 
	
		
			
				|  |  | +//            withDrawBtn.isEnabled = false
 | 
	
		
			
				|  |  | +//            fallthrough
 | 
	
		
			
				|  |  |          default:
 | 
	
		
			
				|  |  |              withDrawBtn.setTitle("record_back".BFLocale, for: .normal)
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -2477,7 +2486,7 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |          if isRecording, currMediaType == .Image {
 | 
	
		
			
				|  |  |              let startTime = recorderManager?.voiceModel?.startCMTime ?? .zero
 | 
	
		
			
				|  |  |              // 使用播放器的进度来画线,因为进度是跟着播放器来了
 | 
	
		
			
				|  |  | -            indirectionView?.setProgress(start: startTime, progress: progress)
 | 
	
		
			
				|  |  | +            indirectionView?.setProgress(start: startTime, progress: progress, isInsert: true)
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if currMediaType == .Image {
 | 
	
		
			
				|  |  |              imageRecordProgress(isRecord: true, progress: progress)
 | 
	
	
		
			
				|  | @@ -2645,7 +2654,7 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
 | 
	
		
			
				|  |  |                  guard let wself = self else { return }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  /// 重绘录音进度视图
 | 
	
		
			
				|  |  | -//                wself.resetAllIndirectionView()
 | 
	
		
			
				|  |  | +                wself.resetAllIndirectionView()
 | 
	
		
			
				|  |  |                  // 重绘录音进度
 | 
	
		
			
				|  |  |                  wself.recordBtn.isEnabled = true
 | 
	
		
			
				|  |  |                  wself.searchStopAtRecordRange()
 | 
	
	
		
			
				|  | @@ -2710,6 +2719,8 @@ public extension BFRecordScreenController {
 | 
	
		
			
				|  |  |              recordStartPlayTime = currentAssetProgress
 | 
	
		
			
				|  |  |              currenStartPlayTime = CMTime.zero
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        // 音
 | 
	
		
			
				|  |  |          playRecord(at: time, periodicTimeObserver: { [weak self] currentT, _ in
 | 
	
		
			
				|  |  |              
 | 
	
		
			
				|  |  |              guard let wself = self else { return }
 |