From e21b1c797955a231f2bcf71818e0259fbb6aeba1 Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Fri, 27 Jun 2025 15:57:25 +0000
Subject: [PATCH] 相机权限

---
 LiveProject/activity/stream/LiveViewModel.swift |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/LiveProject/activity/stream/LiveViewModel.swift b/LiveProject/activity/stream/LiveViewModel.swift
index e69de29..347d761 100644
--- a/LiveProject/activity/stream/LiveViewModel.swift
+++ b/LiveProject/activity/stream/LiveViewModel.swift
@@ -0,0 +1,54 @@
+//
+//  LiveViewModel.swift
+//  LiveProject
+//
+//  Created by 倪路朋 on 6/27/25.
+//
+import UIKit
+import AVFoundation
+
+class LiveViewModel{
+    
+    lazy var camera = CameraCapture()
+    lazy var renderer = MetalRenderer()
+    
+    func newWindowAction(device:DeviceInfo,completion: @escaping (Bool) -> Void = {b in}){
+        switch device.type{
+        case StreamType.CAMERA:
+            requestCameraPermission(mediaType: .video){ staus in
+                if(staus){
+                    self.camera.onFrame = { buffer in
+                        self.renderer.updateFrame(pixelBuffer: buffer)
+                        print("画面更新")
+                    }
+                    self.camera.start()
+                    print("启动相机")
+                }else{
+                    
+                }
+                completion(staus)
+            }
+            break;
+        default:
+            break;
+        }
+    }
+    
+    
+    func requestCameraPermission(mediaType: AVMediaType,completion: @escaping (Bool) -> Void) {
+        let status = AVCaptureDevice.authorizationStatus(for: mediaType)
+        switch status {
+        case .authorized:
+            completion(true)
+        case .notDetermined:
+            AVCaptureDevice.requestAccess(for: .video) { granted in
+                DispatchQueue.main.async {
+                    completion(granted)
+                }
+            }
+        default:
+            // denied / restricted
+            completion(false)
+        }
+    }
+}

--
Gitblit v1.9.1