2015-12-26 1 views
1

J'ai tout ce code dans mon ViewDidAppearComment passer à la caméra frontale dans Swift 2?

captureSession = AVCaptureSession() 


    // let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) 
    var captureDevice:AVCaptureDevice! = nil 
    if (camera == CameraType.Front) { 
     let videoDevices = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) 

     for device in videoDevices{ 
      let device = device as! AVCaptureDevice 
      if device.position == AVCaptureDevicePosition.Front { 
       captureDevice = device 
       break 
      } 
     } 
    } else { 
     captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) 
    } 

    do { 
     let input = try? AVCaptureDeviceInput(device: captureDevice) 

     if (captureSession?.canAddInput(input) != nil){ 

      captureSession?.addInput(input) 

      stillImageOutput = AVCaptureStillImageOutput() 
      stillImageOutput?.outputSettings = [AVVideoCodecKey : AVVideoCodecJPEG] 

      if (captureSession?.canAddOutput(stillImageOutput) != nil){ 
       captureSession?.addOutput(stillImageOutput) 

       previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 

       previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect 
       previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.Portrait 
       cameraView.layer.addSublayer(previewLayer!) 
       captureSession?.startRunning() 

      } 

      cameraView.bringSubviewToFront(actionView) 
      previewImageView.bringSubviewToFront(actionView) 
      self.previewImageView.hidden = true 


     } 
    } 

Répondre

7

Xcode 8.2.1 • Swift 3.0.2

captureDevice = (AVCaptureDevice.devices() as? [AVCaptureDevice])? 
        .filter({ $0.hasMediaType(AVMediaTypeVideo) && $0.position == .front}).first 

Swift 2

captureDevice = (AVCaptureDevice.devices() 
    .filter{ $0.hasMediaType(AVMediaTypeVideo) && $0.position == .Front}) 
    .first as? AVCaptureDevice 
3

Avez-vous essayé:

let device = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) 
      .map { $0 as! AVCaptureDevice } 
      .filter { $0.position == .Front} 
      .first!