Wiem, że kamera mojego Macbook ma szerokie pole widzenia. Kiedy otwieram aplikację Quicktime i wybieram kamerę MacBook jako sygnału, widzę piękną szeroką transmisję video, podobną do tej.
Teraz mam aplikację dla systemu iOS, która uruchamiam za pomocą Mac Catalyst. Oto kombinacja zestawu, który używam.
Kiedy uruchamiam aplikację, dostaję znacznie przyciętą wersję strumienia wideo z kamery internetowej.
To klasa, w której ustawiłem 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))
}
})
}
}
I dodaj go do ViewController w następujący sposób:
let preview = AVCaptureVideoPreviewLayer(session: session)
preview.removeFromSuperlayer()
preview.frame = self.view.bounds
self.view.layer.insertSublayer(preview, at: 0)
Należy pamiętać, że UIViewController
Używam tego wpisana w SwiftUI przez UIViewControllerRepresentable
zgodność protokołu.
Próbowałem szereg ustawień i parametrów sesji wykrywania, w tym .buildInWidtAngleCamera
ale, jak się wydaje, nie można zmusić go pokaż pełną rozdzielczość kamery? Mi tutaj nie ma szczęścia, jeśli nie stworzę go jak obecnie własną aplikację dla systemu Mac?