|
@@ -182,6 +182,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
return toolV
|
|
|
|
|
|
}()
|
|
|
+
|
|
|
//MARK: ------------------ 生命周期
|
|
|
deinit {
|
|
|
cleanMovieTarget()
|
|
@@ -492,23 +493,22 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
func play(){
|
|
|
BFLog(1, message: "开始播放")
|
|
|
+ isNormalPlaying = true
|
|
|
assetPlayer?.volume = 0.2
|
|
|
movie?.startProcessing()
|
|
|
- isNormalPlaying = true
|
|
|
- let second = assetPlayer?.currentItem?.currentTime()
|
|
|
- assetPlayer?.seek(to: second ?? CMTime.zero, toleranceBefore: CMTime(value: 1, timescale: 1000), toleranceAfter: CMTime(value: 1, timescale: 1000), completionHandler: {[weak self] finished in
|
|
|
- if finished {
|
|
|
- self?.assetPlayer?.play()
|
|
|
- }
|
|
|
- })
|
|
|
+ self.assetPlayer?.play()
|
|
|
}
|
|
|
|
|
|
func pause(){
|
|
|
BFLog(1, message: "暂停播放")
|
|
|
+ isNormalPlaying = false
|
|
|
movie?.cancelProcessing()
|
|
|
assetPlayer?.pause()
|
|
|
recordPlayer?.pause()
|
|
|
- isNormalPlaying = false
|
|
|
+
|
|
|
+ let second = self.currentAssetProgress
|
|
|
+ assetPlayer?.seek(to: second , toleranceBefore: CMTime(value: 1, timescale: 1000), toleranceAfter: CMTime(value: 1, timescale: 1000), completionHandler: { finished in
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
func fetchVideo(){
|
|
@@ -604,6 +604,9 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
assetPlayer = AVPlayer(playerItem: item)
|
|
|
avplayerTimeObserver = assetPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 100), queue: DispatchQueue.global()) {[weak self] time in
|
|
|
// 进度监控
|
|
|
+ if !(self?.isNormalPlaying ?? false) {
|
|
|
+ return
|
|
|
+ }
|
|
|
self?.currentAssetProgress = time
|
|
|
BFLog(1, message: "curr:\(CMTimeGetSeconds(time))")
|
|
|
if CMTimeGetSeconds(item.duration) > 0, !(self?.isDragingProgressSlder ?? false) {
|
|
@@ -638,6 +641,9 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
}
|
|
|
})
|
|
|
movie?.removeAllTargets()
|
|
|
+ movie?.removeFramebuffer()
|
|
|
+ GPUImageContext.sharedFramebufferCache().purgeAllUnassignedFramebuffers()
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//MARK: - 录音对应图像绘制
|