My didOutputSampleBuffer method is called successfully until I switch cameras using this function:
func switchCameras() { captureSession.beginConfiguration() captureSession.sessionPreset = AVCaptureSessionPresetMedium var error : NSError? = nil for input in captureSession.inputs { captureSession.removeInput(input as! AVCaptureInput) } if currentCamera == "back" { currentCamera = "front" if captureSession.canAddInput(AVCaptureDeviceInput(device: frontCamera, error: &error)) { captureSession.addInput(AVCaptureDeviceInput(device: frontCamera, error: &error)) } else { print(error) } } else { currentCamera = "back" if captureSession.canAddInput(AVCaptureDeviceInput(device: backCamera, error: &error)) { captureSession.addInput(AVCaptureDeviceInput(device: backCamera, error: &error)) } else { } } print("chagned") captureSession.commitConfiguration() }
After switching to this method, frames are sometimes discarded, so I canβt take a picture. After about 5 seconds, the frames return.
func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) { connection.videoOrientation = AVCaptureVideoOrientation.Portrait if capture == true { self.capture = false var newBuffer = sampleBuffer self.capturePicture(newBuffer) } }
IF you need more code let me know.
scott source share