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