AVCaptureDevicePosition.front 不工作
AVCaptureDevicePosition.front is not working
这是我的第一个问题,如果没有解释清楚,请告诉我。
所以基本上我正在尝试使用此代码访问前置摄像头:
captureSession = AVCaptureSession()
captureSession?.sessionPreset = AVCaptureSessionPreset1920x1080
let cameraDevice = AVCaptureDevice.defaultDevice(withDeviceType: AVCaptureDeviceType.builtInWideAngleCamera , mediaType: AVMediaTypeVideo, position: AVCaptureDevicePosition.front)
print(cameraDevice!)
let error: NSError? = nil
do{
let input = try AVCaptureDeviceInput(device: cameraDevice)
print(captureSession.canAddInput(input))
if error == nil && captureSession.canAddInput(input){
captureSession?.addInput(input)
stillImageOutput = AVCaptureStillImageOutput()
if captureSession.canAddOutput(stillImageOutput){
captureSession.addOutput(stillImageOutput)
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect
previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.portrait
cameraView.layer.addSublayer(previewLayer!)
stillImageOutput?.outputSettings = [AVVideoCodecKey:AVVideoCodecJPEG]
captureSession?.startRunning()
}
}
使用该代码 print(captureSession.canAddInput(input))
returns false
但是当我将位置更改为后置摄像头时,一切都很顺利。我错过了什么吗?
我不确定您使用的是什么设备,但是在 iPhone 6 / 6plus 上,该预设分辨率对于前置摄像头来说太高了。
根据 Apple 文档,在这些设备上,静态图像捕获的最高分辨率为 1280 x 960。尝试使用较低的预设,看看它是否适用于前置摄像头。
这可以解释为什么它在后置摄像头上工作正常,因为它支持更高分辨率。
这是我的第一个问题,如果没有解释清楚,请告诉我。
所以基本上我正在尝试使用此代码访问前置摄像头:
captureSession = AVCaptureSession()
captureSession?.sessionPreset = AVCaptureSessionPreset1920x1080
let cameraDevice = AVCaptureDevice.defaultDevice(withDeviceType: AVCaptureDeviceType.builtInWideAngleCamera , mediaType: AVMediaTypeVideo, position: AVCaptureDevicePosition.front)
print(cameraDevice!)
let error: NSError? = nil
do{
let input = try AVCaptureDeviceInput(device: cameraDevice)
print(captureSession.canAddInput(input))
if error == nil && captureSession.canAddInput(input){
captureSession?.addInput(input)
stillImageOutput = AVCaptureStillImageOutput()
if captureSession.canAddOutput(stillImageOutput){
captureSession.addOutput(stillImageOutput)
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect
previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.portrait
cameraView.layer.addSublayer(previewLayer!)
stillImageOutput?.outputSettings = [AVVideoCodecKey:AVVideoCodecJPEG]
captureSession?.startRunning()
}
}
使用该代码 print(captureSession.canAddInput(input))
returns false
但是当我将位置更改为后置摄像头时,一切都很顺利。我错过了什么吗?
我不确定您使用的是什么设备,但是在 iPhone 6 / 6plus 上,该预设分辨率对于前置摄像头来说太高了。
根据 Apple 文档,在这些设备上,静态图像捕获的最高分辨率为 1280 x 960。尝试使用较低的预设,看看它是否适用于前置摄像头。
这可以解释为什么它在后置摄像头上工作正常,因为它支持更高分辨率。