|
@@ -45,9 +45,9 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
recordBtn.setTitle(isRecording ? "松手 完成" : "按住 说话", for: .normal)
|
|
|
recordBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#28BE67", alpha: isRecording ? 0.6 : 1)
|
|
|
playBtn.isSelected = isRecording
|
|
|
- if !isRecording {
|
|
|
- BFLog(1, message: "stop")
|
|
|
- }
|
|
|
+// if !isRecording {
|
|
|
+// BFLog(1, message: "stop")
|
|
|
+// }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -63,20 +63,20 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var currentAssetProgress: CMTime = .zero // 当前素材播放的进度
|
|
|
- var recordStartTime: Double = 0 // 录制开始时间
|
|
|
- // public var recordList:[PQVoiceModel] = [PQVoiceModel]()
|
|
|
+ var currentAssetProgress: CMTime = .zero // 当前素材播放的进度
|
|
|
+ var recordStartTime: Double = 0 // 录制开始时间
|
|
|
+ var pauseTime : Double = 0 // 停止无操作的时间点
|
|
|
+
|
|
|
+ var assetPlayer: AVPlayer? // 原视频音频播放器
|
|
|
|
|
|
- var assetPlayer: AVPlayer? // 原视频音频播放器
|
|
|
- var isCompletePlay = true
|
|
|
- var hadPrepareToPlayRecord = false // 录音播放器准备
|
|
|
- var recordPlayer : AVPlayer? // 录音音频播放器
|
|
|
- var movie : GPUImageMovie? // 视频预览
|
|
|
- var playView : GPUImageView? // 视频展示视图
|
|
|
+ var hadPrepareToPlayRecord = false // 录音播放器准备
|
|
|
+ var recordPlayer : AVPlayer? // 录音音频播放器
|
|
|
+ var movie : GPUImageMovie? // 视频预览
|
|
|
+ var playView : GPUImageView? // 视频展示视图
|
|
|
|
|
|
// MARK: 行为参数
|
|
|
var movieIsProcessing = false
|
|
|
- var events = [WithDrawModel]() // 行为记录,方便撤销
|
|
|
+ var events = [WithDrawModel]() // 行为记录,方便撤销
|
|
|
var isDragingProgressSlder : Bool = false // 是否在拖动进度条
|
|
|
var isStopAtRecordRange = -1
|
|
|
|
|
@@ -793,13 +793,13 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
avatarView.beginRecord()
|
|
|
}
|
|
|
|
|
|
- DispatchQueue.global().async { [weak self] in
|
|
|
- guard let sself = self else {
|
|
|
- return
|
|
|
- }
|
|
|
- sself.speechTranscriberUtil?.delegate = sself
|
|
|
- sself.speechTranscriberUtil?.startTranscriber()
|
|
|
- }
|
|
|
+// DispatchQueue.global().async { [weak self] in
|
|
|
+// guard let sself = self else {
|
|
|
+// return
|
|
|
+// }
|
|
|
+// sself.speechTranscriberUtil?.delegate = sself
|
|
|
+// sself.speechTranscriberUtil?.startTranscriber()
|
|
|
+// }
|
|
|
|
|
|
if itemModels[currItemModelIndex].mediaType == .VIDEO {
|
|
|
|
|
@@ -1147,13 +1147,17 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
}
|
|
|
|
|
|
func play() {
|
|
|
- BFLog(1, message: "开始播放 \(currentAssetProgress.seconds) \(AVAudioSession.sharedInstance().category)")
|
|
|
+ BFLog(1, message: "开始播放 \(currentAssetProgress.seconds)")
|
|
|
// add by ak 播放前设置 AVAudioSession 为播放状态
|
|
|
- do {
|
|
|
- try AVAudioSession.sharedInstance().setCategory(.playback)
|
|
|
- try AVAudioSession.sharedInstance().setActive(true)
|
|
|
- } catch {}
|
|
|
-
|
|
|
+ if AVAudioSession.sharedInstance().category != .playAndRecord {
|
|
|
+ let a = Date()
|
|
|
+ do {
|
|
|
+ try? AVAudioSession.sharedInstance().setCategory(.playAndRecord, options: .defaultToSpeaker)
|
|
|
+ try AVAudioSession.sharedInstance().setActive(true)
|
|
|
+ } catch {}
|
|
|
+
|
|
|
+ BFLog(1, message: "开启session \(Date().timeIntervalSince(a))")
|
|
|
+ }
|
|
|
isNormalPlaying = true
|
|
|
if isEndPlay {
|
|
|
isEndPlay = false
|
|
@@ -1184,6 +1188,8 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
// movie?.cancelProcessing()
|
|
|
assetPlayer?.pause()
|
|
|
recordPlayer?.pause()
|
|
|
+
|
|
|
+ pauseTime = currentAssetProgress.seconds
|
|
|
|
|
|
assetPlayer?.seek(to: currentAssetProgress, toleranceBefore: CMTime(value: 1, timescale: 1_000_000), toleranceAfter: CMTime(value: 1, timescale: 1_000_000), completionHandler: { _ in
|
|
|
})
|
|
@@ -1296,6 +1302,9 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
/// - Parameter CMTime: <#CMTime description#>
|
|
|
func periodicTimeObserver(item: AVPlayerItem?, time: CMTime) {
|
|
|
// 进度监控
|
|
|
+ if time.seconds < pauseTime {
|
|
|
+ return
|
|
|
+ }
|
|
|
if itemModels[currItemModelIndex].mediaType == .VIDEO {
|
|
|
if CMTimeGetSeconds(item?.duration ?? CMTime.zero) > 0 {
|
|
|
currentAssetProgress = CMTime(seconds: time.seconds, preferredTimescale: 1000)
|
|
@@ -1449,8 +1458,8 @@ extension BFRecordScreenController: PQSpeechTranscriberUtilDelegate {
|
|
|
|
|
|
if let path = recordItem.localPath, let lastCell: BFImageCoverViewCell = collectionView.cellForItem(at: IndexPath(item: currItemModelIndex, section: 0)) as? BFImageCoverViewCell {
|
|
|
|
|
|
- setAudioPlay(item: recordItem.playItem)
|
|
|
setVideoPlay(item: recordItem.playItem, imageView: lastCell.playView)
|
|
|
+ setAudioPlay(item: recordItem.playItem)
|
|
|
|
|
|
let degress = degressFromVideoFile(url: URL(fileURLWithPath: path))
|
|
|
switch (degress) {
|