AVCaptureDevicePosition.front не работает
Это мой первый вопрос, поэтому, если он не объяснен, пожалуйста, дайте мне знать.
Поэтому я пытаюсь получить доступ к фронтальной камере с помощью этого кода:
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))
возвращается false
но когда я меняю положение на заднюю камеру, все работает как шарм. Я что-то пропустил?
1 ответ
Я не уверен, какое устройство вы используете, но на iPhone 6 / 6plus это предустановленное разрешение слишком высокое для фронтальной камеры.
Согласно документации Apple, на этих устройствах самое высокое разрешение захвата неподвижных изображений составляет 1280 x 960. Попробуйте использовать более низкие предустановки и посмотрите, работает ли оно на передней камере.
Это может объяснить, почему он хорошо работает на задней камере, потому что это поддерживает более высокое разрешение.