Я знаю, что веб-камера моего Macbook имеет широкое поле зрения. Когда я открываю приложение Quicktime и выбираю камеру MacBook в качестве входного сигнала, я вижу красивую широкую видеопередачу, подобную этой.
Теперь у меня есть приложение для iOS, которое я запускаю с помощью Mac Catalyst. Вот комбинация сборки, которую я использую.
Когда я запускаю это приложение, я получаю значительно обрезанную версию видеопотока с веб-камеры.
Вот класс, в котором я настроил AVCaptureSession
import Foundation
import AVFoundation
class BasicCamera: ObservableObject {
@Published var authorizationState: AVAuthorizationStatus = .notDetermined
let session = AVCaptureSession()
init() {
guard let device = AVCaptureDevice.default(for: .video) else {
fatalError("Could not make capture device.")
}
guard let input = try? AVCaptureDeviceInput(device: device) else {
fatalError("Could not make input")
}
session.beginConfiguration()
session.addInput(input)
session.commitConfiguration()
session.startRunning()
}
public func requestCameraPermission() async -> AVAuthorizationStatus {
return await withCheckedContinuation({ continuation in
AVCaptureDevice.requestAccess(for: .video) { [unowned self] didComplete in
self.authorizationState = AVCaptureDevice.authorizationStatus(for: .video)
continuation.resume(with: .success(self.authorizationState))
}
})
}
}
И добавьте его в ViewController следующим образом:
let preview = AVCaptureVideoPreviewLayer(session: session)
preview.removeFromSuperlayer()
preview.frame = self.view.bounds
self.view.layer.insertSublayer(preview, at: 0)
Обратите внимание, что UIViewController
Я использую это, введенное в SwiftUI через UIViewControllerRepresentable
соответствие протоколу.
Я перепробовал ряд настроек и параметров сеансов обнаружения, включая .buildInWidtAngleCamera
но, похоже, не удается заставить его показывать полное разрешение камеры? Мне здесь не повезло, если я не создам его как настоящее собственное приложение для Mac?