فهرست منبع

录像录音同步;
返回摄像时少图片的问题

胡志强 3 سال پیش
والد
کامیت
f48492ff17
1فایلهای تغییر یافته به همراه14 افزوده شده و 6 حذف شده
  1. 14 6
      BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenCameraManager.swift

+ 14 - 6
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenCameraManager.swift

@@ -46,7 +46,6 @@ class BFRecordScreenCameraManager : BFRecordScreenBaseManager{
     static var firstOpenCamera : Bool = true
     
     var currPlayTime : CMTime = .zero
-    
     fileprivate var timerr:Timer?
     
     var writerlock = false
@@ -69,7 +68,8 @@ class BFRecordScreenCameraManager : BFRecordScreenBaseManager{
         let group = DispatchGroup() //创建group
         return group
     }()
-    
+    var groupCount = 0
+
     var avplayerTimeObserver: NSKeyValueObservation?
     
     lazy var avplayer : AVPlayer = {
@@ -159,8 +159,11 @@ class BFRecordScreenCameraManager : BFRecordScreenBaseManager{
             startRecord()
             DispatchQueue.main.asyncAfter(deadline: .now() + 0.3, execute: { [weak self] in
                 guard let wself = self else { return }
-                wself.gropQueue.leave()
-                wself.gropQueue.leave()
+                while wself.groupCount > 0{
+                    wself.gropQueue.leave()
+                    wself.groupCount -= 1
+                }
+
                 wself.endRecord()
             })
         }
@@ -175,6 +178,10 @@ class BFRecordScreenCameraManager : BFRecordScreenBaseManager{
     }
     
     override func startRecord(){
+        
+        gropQueue.enter() // 录音
+        groupCount += 1
+
         guard let movieWrite = movieWrite, !writerlock else {
             cShowHUB(superView: nil, msg: "option_fail_record".BFLocale)
             return
@@ -222,8 +229,9 @@ class BFRecordScreenCameraManager : BFRecordScreenBaseManager{
         })
         RunLoop.current.add(timerr!, forMode: .common)
         
-        gropQueue.enter() // 录音
         gropQueue.enter() // 录像
+        groupCount += 1
+
         gropQueue.notify(queue: DispatchQueue.main) {[weak self] in
             guard let wself = self else { return }
             if BFRecordScreenCameraManager.firstOpenCamera{
@@ -366,7 +374,7 @@ class BFRecordScreenCameraManager : BFRecordScreenBaseManager{
     }
     
     func resetThumbImg(){
-        videoModel.thumImgs?.removeAll()
+//        videoModel.thumImgs?.removeAll()
         let vidos = recordItem?.videoStickers
         var tmpThumbs = [UIImage]()
         vidos?.forEach({ mod in