Error fatal al intentar capturar una foto de la cámara frente al frente usando avfoundation -- ios campo con swift campo con avfoundation campo con avcapturesession campo con avcapturedevice camp Relacionados El problema

Fatal Error when trying to capture photo from front-facing camera using AVFoundation


5
vote

problema

Español

Intento implementar el código que permitirá capturar imágenes de la cámara frontal y luego compartirlas. Sin embargo, cada vez que intento "tomar una foto", mi aplicación se bloquea con la siguiente advertencia de la consola:

  Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '*** -[AVCaptureStillImageOutput captureStillImageAsynchronouslyFromConnection:completionHandler:] - inconsistent state.' *** First throw call stack: (0x181b1ee38 0x181183f80 0x188265074 0x10003d578 0x10003d748 0x10003c380 0x10003c3d8 0x186ca0ad0 0x186ca0a4c 0x186c88740 0x186ca033c 0x186c58b0c 0x186c994f8 0x186c98af4 0x186c68f4c 0x186c67528 0x181ad5124 0x181ad4bb8 0x181ad28b8 0x1819fcd10 0x1832e4088 0x186cd1f70 0x100036880 0x18159a8b8) libc++abi.dylib: terminating with uncaught exception of type NSException   

Estoy publicando mi código a continuación:

  import UIKit import AVFoundation  class CameraSnapViewController: UIViewController {      let captureSession = AVCaptureSession()     let stillImageOutput = AVCaptureStillImageOutput()      let cameraPicker = UIImagePickerController()      override func viewDidLoad() {         super.viewDidLoad()          self.addPhotoCapturingFunctionality()     }      override func didReceiveMemoryWarning() {         super.didReceiveMemoryWarning()     }      @IBAction func cameraButtonPressed(sender: UIButton) {         self.takePhoto()     }  }  extension CameraSnapViewController {     func addPhotoCapturingFunctionality() {         guard let device = AVCaptureDevice.devices().filter({ $0.hasMediaType(AVMediaTypeVideo) && $0.position == .Front }).first as? AVCaptureDevice else { fatalError("No front facing camera found") }          do {             let input = try AVCaptureDeviceInput(device: device)             captureSession.addInput(input)             captureSession.sessionPreset = AVCaptureSessionPresetPhoto             stillImageOutput.outputSettings = [AVVideoCodecKey:AVVideoCodecJPEG]             if captureSession.canAddOutput(stillImageOutput) {                 captureSession.addOutput(stillImageOutput)             }         } catch let error as NSError {             print(error)         }      }      func takePhoto() {         if let videoConnection = stillImageOutput.connectionWithMediaType(AVMediaTypeVideo) {              stillImageOutput.captureStillImageAsynchronouslyFromConnection(videoConnection) { (imageDataSampleBuffer, error) -> Void in                 let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataSampleBuffer)                 // TODO: Sharing             }          }     } }   

¿Cómo puedo arreglar el problema?

Original en ingles

I try to implement code which will allow to capture images from front-facing camera and then share them. However, each time I try to "take a photo", my app crashes with following console warning:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '*** -[AVCaptureStillImageOutput captureStillImageAsynchronouslyFromConnection:completionHandler:] - inconsistent state.' *** First throw call stack: (0x181b1ee38 0x181183f80 0x188265074 0x10003d578 0x10003d748 0x10003c380 0x10003c3d8 0x186ca0ad0 0x186ca0a4c 0x186c88740 0x186ca033c 0x186c58b0c 0x186c994f8 0x186c98af4 0x186c68f4c 0x186c67528 0x181ad5124 0x181ad4bb8 0x181ad28b8 0x1819fcd10 0x1832e4088 0x186cd1f70 0x100036880 0x18159a8b8) libc++abi.dylib: terminating with uncaught exception of type NSException 

I'm posting my code below:

import UIKit import AVFoundation  class CameraSnapViewController: UIViewController {      let captureSession = AVCaptureSession()     let stillImageOutput = AVCaptureStillImageOutput()      let cameraPicker = UIImagePickerController()      override func viewDidLoad() {         super.viewDidLoad()          self.addPhotoCapturingFunctionality()     }      override func didReceiveMemoryWarning() {         super.didReceiveMemoryWarning()     }      @IBAction func cameraButtonPressed(sender: UIButton) {         self.takePhoto()     }  }  extension CameraSnapViewController {     func addPhotoCapturingFunctionality() {         guard let device = AVCaptureDevice.devices().filter({ $0.hasMediaType(AVMediaTypeVideo) && $0.position == .Front }).first as? AVCaptureDevice else { fatalError("No front facing camera found") }          do {             let input = try AVCaptureDeviceInput(device: device)             captureSession.addInput(input)             captureSession.sessionPreset = AVCaptureSessionPresetPhoto             stillImageOutput.outputSettings = [AVVideoCodecKey:AVVideoCodecJPEG]             if captureSession.canAddOutput(stillImageOutput) {                 captureSession.addOutput(stillImageOutput)             }         } catch let error as NSError {             print(error)         }      }      func takePhoto() {         if let videoConnection = stillImageOutput.connectionWithMediaType(AVMediaTypeVideo) {              stillImageOutput.captureStillImageAsynchronouslyFromConnection(videoConnection) { (imageDataSampleBuffer, error) -> Void in                 let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataSampleBuffer)                 // TODO: Sharing             }          }     } } 

How can I fix the issue?

              

Lista de respuestas

3
 
vote

Tienes que iniciar sesión antes de tomar una foto.

captureSession.startRunning()

ðÿ~~œ

 

You have to start session before you take a photo.

captureSession.startRunning()

xf0x9fx98x9c

 
 

Relacionados problema

1  La vista previa de la cámara en UIView no se muestra llena  ( Camera preview in uiview is not showing full ) 
Tengo un UIView dentro de un UIViewController , usando el siguiente código para mostrar la cámara en el modo de vista previa. Se muestra la vista previa de...

0  Evite que la vista se descarte después de la solicitud de acceso al avcapuredevice  ( Prevent view dismissing after the request access to the avcapturedevice ) 
¿Cómo podemos evitar que la vista vaya a la vista anterior después de que el usuario haga clic en el botón OK en la solicitud de acceso a la cámara? Aquí está...

4  ¿Cómo tomar una foto automáticamente en foco en iPhone SDK?  ( How to take a photo automatically at focus in iphone sdk ) 
Estoy creando una aplicación en la que el usuario toma la imagen de una imagen con texto y carga al servidor. He utilizado AVCaptureSession para abrir la cá...

7  AVCAPTUSESION CANCELA AUDIO AUDIO  ( Avcapturesession cancels background audio ) 
Cada vez que inicio una avcaptureession que se ejecuta con el micrófono como una entrada que cancela la información de fondo que actualmente se está ejecutand...

4  iOS 5 - AvcapturedEvice El punto de enfoque y el modo de enfoque se congela la imagen de la cámara en vivo  ( Ios 5 avcapturedevice setting focus point and focus mode freezes the live came ) 
Estoy usando el siguiente método para establecer el punto de enfoque desde iOS 4: - (void) focusAtPoint:(CGPoint)point { AVCaptureDevice *device = [[se...

0  ¿Cuál es la gama de AvcapturedEvice Torchlevel en iOS?  ( What is the range of avcapturedevice torchlevel in ios ) 
Estoy trabajando en una aplicación que escanea los códigos QR y para mejorar la lectura en condiciones de luz muy baja, además de configurar el automatically...

1  Avcapturedeviceposition.front no está funcionando  ( Avcapturedeviceposition front is not working ) 
Esta es mi primera pregunta aquí, así que si no se explica bien, por favor hágamelo saber. Así que básicamente estoy tratando de acceder a la cámara frontal...

4  Configuración del balance de blancos y el modo de exposición para la cámara de iPhone + Predeterminado de Enum  ( Setting white balance and exposure mode for iphone camera enum default ) 
Estoy usando la cámara trasera de un iPhone4 y haciendo el proceso estándar y largo de la creación de una AvcaptureSession y agregándola a AVCAPTUREDEVICE. ...

3  Avassetwriter está siempre en AvassetwritersStUSTUSTUSFAILED  ( Avassetwriter is always on avassetwriterstatusfailed status ) 
Mi objetivo es aplicar algunos filtros en la entrada de la cámara en tiempo real. Para hacer ese paso a paso, estoy tratando de obtener el formulario de entra...

13  Cómo deshabilitar el micrófono de la cámara en la entrada del dispositivo AVCapture  ( How to disable camera microphone on avcapture device input ) 
Estoy configurando un micrófono en un AVCaptureSession y necesito un interruptor para el micrófono. ¿Cómo debo proceder con esto? ¿Realmente necesito el ca...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos