title: Capturing Video with AVFoundation
body: <p>I've been looking around on Stack and I have found similar questions to this, but none have worked for me. I am a complete novice to Swift 3.0. Essentially what I'm trying to do is record a video using AVFoundation. So far I have managed to capture a still image, and this is the code I have so far</p>
  
  <pre><code>func beginSession() {
      do {
          let deviceInput = try  AVCaptureDeviceInput(device: captureDevice) as AVCaptureDeviceInput
          if captureSession.inputs.isEmpty {
              self.captureSession.addInput(deviceInput)
          }
          stillImageOutput.outputSettings = [AVVideoCodecKey:AVVideoCodecJPEG]
  
          if captureSession.canAddOutput(stillImageOutput) {
              captureSession.addOutput(stillImageOutput)
          }
  
      }
      catch {
          print("error: \(error.localizedDescription)")
      }
  
      guard let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) else {
          print("no preview layer")
          return
      }
  
      self.view.layer.addSublayer(previewLayer)
      previewLayer.frame = self.view.layer.frame
      captureSession.startRunning()
  
      // Subviews
      self.view.addSubview(imgOverlay)
      self.view.addSubview(blur)
      self.view.addSubview(label)
      self.view.addSubview(Flip)
      self.view.addSubview(btnCapture)
  }
  </code></pre>
  
  <p>and </p>
  
  <pre><code> // SAVE PHOTO
  func saveToCamera() {
      if let videoConnection = stillImageOutput.connection(withMediaType: AVMediaTypeVideo) {
          stillImageOutput.captureStillImageAsynchronously(from: videoConnection, completionHandler: { (CMSampleBuffer, Error) in
              if let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(CMSampleBuffer) {
                  if let cameraImage = UIImage(data: imageData) {
                      self.flippedImage = UIImage(cgImage: cameraImage.cgImage!, scale: cameraImage.scale, orientation: UIImageOrientation.rightMirrored)
                      UIImageWriteToSavedPhotosAlbum(self.flippedImage, nil, nil, nil)
  
                  }
              }
          })
      }
  
  }
  </code></pre>