我目前正在为iOS和swiftUI AVFoundation制作一个自定义相机应用程序。我也刚买了iPhone 13 Pro。在本机摄像头应用程序中,相机会根据对焦自动切换(对于中程/远距离远距离的远距离远摄时,相机会自动切换到宏/宽角度)。在文件中也提到了这一点:
内置的三倍摄像机支持以下功能:当变焦因子、光线水平和焦距位置允许时,自动从一台相机切换到另一台相机。
如何在我的自定义应用程序中实现这个功能?我就是这样选择相机(虚拟设备)的:
let session = AVCaptureDevice.DiscoverySession(deviceTypes: [ .builtInTripleCamera ], mediaType: AVMediaType.video, position: .unspecified)
let cameras = (session.devices.compactMap { $0 })
for camera in cameras {
if camera.position == .back {
self.rearCamera = camera
try camera.lockForConfiguration()
camera.exposureMode = .continuousAutoExposure
camera.focusMode = .continuousAutoFocus
camera.unlockForConfiguration()
}
}
有没有我缺少的配置?
发布于 2022-03-25 14:07:19
一旦你开始放大,通过直接设置videoZoomFactor
或调用输入设备的ramp(toVideoZoomFactor:withRate:)
方法,它会自动切换到超宽、广角和远距离镜头之间。开关是根据正在设置的缩放因子进行的。
1的缩放因子总是最小的.在13专业,设置一个变焦因子的1将切换到超宽镜头。要知道哪个是系统决定切换到下一个镜头的其他缩放因子,您可以查看捕获设备的virtualDeviceSwitchOverVideoZoomFactors
属性。如果是13 Pro,则是2和6。在2,它将切换到广角镜头.在6,它将切换到远距离镜头。
只要您使用的是.builtInTripleCamera
设备类型,就不需要为此设置任何其他配置。
https://stackoverflow.com/questions/69587952
复制相似问题