当 运行 应用程序通过 Mac Catalyst 显示 Mac 相机的完整相机宽度
Show full camera width from Mac camera when running app via Mac Catalyst
我知道我的 Mac本书的网络摄像头视野开阔。当我打开 Quicktime 应用程序并将 select 我的 MacBooks 相机作为输入时,我看到了这样一个不错的宽视频源。
现在,我有一个 iOS 应用程序,我正在 运行 使用 Mac Catalyst。这是我正在使用的构建组合。
当我 运行 这个应用程序时,我从网络摄像头获得了一个明显裁剪过的视频源。
这是我设置 AVCaptureSession
的 class
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
是通过 UIViewControllerRepresentable
协议一致性引入 SwiftUI 的。
我已经尝试了一些预设和发现会话参数,包括 .buildInWidtAngleCamera
但似乎无法让它显示完整的相机分辨率?除非我将其构建为实际的本机 Mac 应用程序,否则我在这里运气不好吗?
切换到 Optimize interface for Mac
它在 Target>General>Deployment Info>Next To the Mac checkmark button
.
下
很可能将相机识别为 iPad
的肖像
我知道我的 Mac本书的网络摄像头视野开阔。当我打开 Quicktime 应用程序并将 select 我的 MacBooks 相机作为输入时,我看到了这样一个不错的宽视频源。
现在,我有一个 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
是通过 UIViewControllerRepresentable
协议一致性引入 SwiftUI 的。
我已经尝试了一些预设和发现会话参数,包括 .buildInWidtAngleCamera
但似乎无法让它显示完整的相机分辨率?除非我将其构建为实际的本机 Mac 应用程序,否则我在这里运气不好吗?
切换到 Optimize interface for Mac
它在 Target>General>Deployment Info>Next To the Mac checkmark button
.
很可能将相机识别为 iPad
的肖像