jsonwang před 3 roky
rodič
revize
7dc87b2527

+ 68 - 4
BFRecordScreenKit/Classes/BFRecordScreenController.swift

@@ -182,6 +182,28 @@ public class BFRecordScreenController: BFBaseViewController {
         return toolV
         
     }()
+    
+    //头像  add by ak
+    lazy var avatarView:BFRecordAvatarView = {
+        let avatarView = BFRecordAvatarView.init(frame: CGRect.init(x: 10, y: 10, width: 200, height: 200))
+        avatarView.isHidden = true
+        return avatarView
+    }()
+    //打开摄像头
+    lazy var openCameraBtn:UIButton = {
+        let btn = UIButton(type: .custom)
+        btn.setImage(imageInRecordScreenKit(by: "openCamera"), for: .normal)
+        btn.addTarget(self, action: #selector(openCamera), for: .touchUpInside)
+        return btn
+    }()
+    //画笔
+    lazy var drawPinBtn:UIButton = {
+        let btn = UIButton(type: .custom)
+        btn.setImage(imageInRecordScreenKit(by: "drawPin"), for: .normal)
+        btn.addTarget(self, action: #selector(drawPin), for: .touchUpInside)
+        return btn
+    }()
+    
     //MARK: ------------------ 生命周期
     deinit {
         cleanMovieTarget()
@@ -212,6 +234,10 @@ public class BFRecordScreenController: BFBaseViewController {
         view.addSubview(playBtn)
         view.addSubview(bottomeView)
         view.addSubview(progreddL)
+        view.addSubview(avatarView)
+        view.addSubview(openCameraBtn)
+        view.addSubview(drawPinBtn)
+        
 //        view.addSubview(toolV)
         bottomeView.addSubview(recordBtn)
         bottomeView.addSubview(progessSildeBackV)
@@ -260,6 +286,20 @@ public class BFRecordScreenController: BFBaseViewController {
             make.height.equalTo(20)
         }
         
+        openCameraBtn.snp.makeConstraints { make in
+            make.right.equalToSuperview().offset(-12)
+            make.top.equalToSuperview().offset(98)
+            make.width.equalTo(80)
+            make.height.equalTo(124)
+        }
+        
+        drawPinBtn.snp.makeConstraints { make in
+            make.right.equalTo(openCameraBtn)
+            make.top.equalTo(openCameraBtn.bottomY).offset(23)
+            make.width.equalTo(80)
+            make.height.equalTo(124)
+        }
+        
     }
     
     // MARK: - 按钮事件响应
@@ -305,6 +345,22 @@ public class BFRecordScreenController: BFBaseViewController {
         }
     }
     
+    @objc func openCamera(){
+        
+        if(avatarView.isHidden){
+            avatarView.isHidden = false
+            avatarView.openCamera()
+        }else{
+            avatarView.isHidden = true
+            avatarView.closeCamera()
+        }
+ 
+    }
+    
+    @objc func drawPin(){
+        
+    }
+    
     @objc func startRecord(){
         recordBtn.setImage(imageInRecordScreenKit(by: "mic2"), for: .normal)
         BFLog(1, message: "start \(UIControl.Event.touchDown)")
@@ -313,21 +369,29 @@ public class BFRecordScreenController: BFBaseViewController {
         let model = PQVoiceModel()
         model.startTime = CMTimeGetSeconds(self.currentAssetProgress)
         model.volume = 100
-        recorderManager.voiceModel = model
-        recorderManager.startRecord(index: recordList.count)
+//        recorderManager.voiceModel = model
+//        recorderManager.startRecord(index: recordList.count)
         movie?.startProcessing()
         assetPlayer?.volume = 0
         assetPlayer?.play()
         isRecording = true
+        
+        if(!avatarView.isHidden){
+            avatarView.beginRecord()
+        }
+ 
     }
     
     @objc func endRecord(){
         recordBtn.setImage(imageInRecordScreenKit(by: "mic1"), for: .normal)
         // 存储录音
-        recorderManager.endRecord()
+//        recorderManager.endRecord()
         isRecording = false
 
         pause()
+        if(!avatarView.isHidden){
+            avatarView.endRecord()
+        }
     }
     
     func cancleRecord(){
@@ -662,7 +726,7 @@ public class BFRecordScreenController: BFBaseViewController {
                 let width = self?.progessSildeBackV.width ?? 0
                 let height = self?.progessSildeBackV.height ?? 0
                 list.forEach { model in
-                    let lineV = UIView(frame: CGRect(x: model.startTime * width / totalDur , y: 0, width: (model.endTime - model.startTime) * width / totalDur, height: height))
+                    let lineV = UIView(frame: CGRect(x: model.startTime * Double(width) / totalDur , y: 0, width: (model.endTime - model.startTime) * Double(width) / totalDur, height: Double(height)))
                     lineV.backgroundColor = UIColor.hexColor(hexadecimal: "#28BE67")
                     self?.progessSildeBackV.addSubview(lineV)
                 }

+ 12 - 6
BFRecordScreenKit/Classes/RecordScreen/View/BFRecordAvatarView.swift

@@ -47,7 +47,9 @@ class BFRecordAvatarView: UIView {
         closedBtn.frame = CGRect.init(x: frame.maxX - 68, y: frame.maxY - 68, width: 68, height: 68)
         do {
             camera = try Camera(sessionPreset:.vga640x480,location: .frontFacing)
+            camera.runBenchmark = true
             let cropFilter = Crop.init()
+            
             cropFilter.cropSizeInPixels = videoPixelsSize
             cropFilter.locationOfCropInPixels = Position.init(0, 0)
             camera  --> cropFilter --> renderView
@@ -89,13 +91,16 @@ class BFRecordAvatarView: UIView {
         }
         
         do {
-            let documentsDir = try FileManager.default.url(for:.documentDirectory, in:.userDomainMask, appropriateFor:nil, create:true)
-            let fileURL = URL(string:"test.mov", relativeTo:documentsDir)!
-            do {
-                try FileManager.default.removeItem(at:fileURL)
-            } catch {
+            var recorderFilePath = recordVideosDirectory
+            if !directoryIsExists(dicPath: recorderFilePath) {
+                BFLog(message: "文件夹不存在 \(recorderFilePath)")
+                createDirectory(path: recorderFilePath)
             }
-            movieOutput = try MovieOutput(URL:fileURL, size:videoPixelsSize, liveVideo:true)
+            recorderFilePath.append("recordAvatar_\(Date().timeIntervalSince1970).mp4")
+            BFLog(message: "开始录制视频到: \(recorderFilePath)")
+           
+            movieOutput = try MovieOutput(URL:URL(fileURLWithPath: recorderFilePath), size:videoPixelsSize, liveVideo:true)
+            camera --> movieOutput!
             camera.audioEncodingTarget = movieOutput
             movieOutput!.startRecording()
     
@@ -112,6 +117,7 @@ class BFRecordAvatarView: UIView {
             self.camera.audioEncodingTarget = nil
             self.movieOutput = nil
             
+//                .replacingOccurrences(of: documensDirectory, with: "").
 //            if(recordEndCallBack != nil){
 //
 //                let movieAsset = AVURLAsset(url: URL(fileURLWithPath: fileURL), options: avAssertOptions)