我对iPhone的摄像头知之甚少,而且我对builtInDualCamera
和builtInDualWideCamera
之间的区别有点困惑。(builtInWideAngleCamera
和builtInUltraWideCamera
也是如此)
内置双摄像头
一种由广角和远摄照相机组成的装置。
内置广角摄像头
一种由两个固定焦距的照相机组成的装置,一个是超广角照相机,另一个是广角照相机。
我猜builtInDualCamera就像iPhone 11的摄像头,builtInDualCamera就像iPhone X的摄像头......对吗?
我在开发一个摄像头应用(基本上是使用视频),我尝试在用户打开应用的摄像头屏幕时配置摄像头。我尝试了this article中的代码,基本上是选择要使用的摄像头。所以我下面的代码只是检查设备是否有3个摄像头〉2个摄像头〉1个摄像头,并在配置捕捉会话时使用其中一个。然而,device types具有两个类似的属性,如builtInDualCamera
和builtInDualWideCamera
(还有builtInWideAngleCamera
和builtInUltraWideCamera
)。我想知道iPhone的摄像头是builtInWideAngleCamera
还是builtInUltraWideCamera
。我还加了截图,但这就像iPhone X的摄像头和iPhone 11的摄像头之间的区别吗?(我的意思是...... iPhone 11的摄像头有两个独立的摄像头,而iPhone X有两个摄像头,但形状不同。
import AVFoundation
class CameraManager {
static let shared = CameraManager()
let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInTripleCamera, .builtInDualCamera, .builtInWideAngleCamera], mediaType: .video, position: .back)
func getBestDevice() -> AVCaptureDevice? {
let devices = discoverySession.devices
guard !devices.isEmpty else { fatalError("Missing capture devices.")}
return devices.first
}
}
并使用类似
CameraManager.shared.getBestDevice()
如果我在discoverySession属性中有三个摄像头(.builtInTripleCamera,.builtInDualCamera,.builtInWideAngleCamera)来检查要使用哪个摄像头,每个iPhone摄像头都会被归类为其中之一?如果设备的摄像头是builtInWideAngleCamera
,我是否需要将.builtInWideAngleCamera添加到discoverySession属性中才能使用builtInWideAngleCamera?
1条答案
按热度按时间rggaifut1#
如果您查看DeviceType page,您会发现摄像头从最基本到最先进的排列如下:
builtInWideAngleCamera
存在于所有iOS设备上,因为很久以前,builtInDualCamera
存在于iPhone 7中,builtInTripleCamera
是iPhone 11但是你似乎根本不需要一个发现会话,你似乎想选择“拍摄视频的最佳后置摄像头”,所以你的案例福尔斯你引用的页面上的"Quickly Choose a Default Device"用例。
在您的情况下,您需要:
.video
,位置:.back
,而第一个参数实际上取决于您要拍摄的视频类型。例如,您可以要求builtInTripleCamera
(如果可用),然后要求builtInDualCamera
,最后将builtInWideAngleCamera
作为最低选项。或者,您可以决定没有builtInTripleCamera
的用户无法使用您的应用: