title: How to Record video using AVCaptureVideoDataOutput
body: <p>Am using AVCaptureSession to get the camera output and have added successfully the audio and video inputs and outputs. </p>
  
  <pre><code>{
  
      var captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) as AVCaptureDevice
  
      var error: NSError? = nil
  
      do {
  
          //remove the previous inputs
          let inputs = cameraSession.inputs as! [AVCaptureDeviceInput]
          for oldInput:AVCaptureDeviceInput in inputs {
              cameraSession.removeInput(oldInput)
          }
          cameraSession.beginConfiguration()
  
          if cameraPosition.isEqualToString("Front") {
              captureDevice = cameraWithPosition(.Front)!
          }
          else {
              captureDevice = cameraWithPosition(.Back)!
          }
  
          let deviceInput = try AVCaptureDeviceInput(device: captureDevice)
  
          if (cameraSession.canAddInput(deviceInput) == true) {
              cameraSession.addInput(deviceInput)
          }
  
          let dataOutput = AVCaptureVideoDataOutput()
          dataOutput.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSString) : NSNumber(unsignedInt: kCVPixelFormatType_420YpCbCr8BiPlanarFullRange)]
          dataOutput.alwaysDiscardsLateVideoFrames = true
  
          if (cameraSession.canAddOutput(dataOutput) == true) {
              cameraSession.addOutput(dataOutput)
          }
  
          let audioCheck = AVCaptureDevice.devicesWithMediaType(AVMediaTypeAudio)
          if audioCheck.isEmpty {
              print("no audio device")
              return
          }
  
          let audioDevice: AVCaptureDevice! = audioCheck.first as! AVCaptureDevice
  
          var audioDeviceInput: AVCaptureDeviceInput?
  
          do {
              audioDeviceInput = try AVCaptureDeviceInput(device: audioDevice)
          } catch let error2 as NSError {
              error = error2
              audioDeviceInput = nil
          } catch {
              fatalError()
          }
  
          if error != nil{
              print(error)
              let alert = UIAlertController(title: "Error", message: error!.localizedDescription
                  , preferredStyle: .Alert)
              alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
              self.presentViewController(alert, animated: true, completion: nil)
          }
          if cameraSession.canAddInput(audioDeviceInput){
              cameraSession.addInput(audioDeviceInput)
          }
  
          cameraSession.commitConfiguration()
  
          let queue = dispatch_queue_create("com.invasivecode.videoQueue", DISPATCH_QUEUE_SERIAL)
          dataOutput.setSampleBufferDelegate(self, queue: queue)
  
      }
      catch let error as NSError {
          NSLog("\(error), \(error.localizedDescription)")
      }
  }
  </code></pre>
  
  <p>Using <strong>AVCaptureMovieFileOutput</strong> am able to save the output video in the photo library using </p>
  
  <pre><code>movieFileOutput.startRecordingToOutputFileURL( outputFilePath, recordingDelegate: self)
  </code></pre>
  
  <p>but i use <strong>AVCaptureVideoDataOutput</strong> as output for doing extra work on the meta data i get from the delegates and try to record the video, but am unable to get any methods to start and stop recording the video.</p>
  
  <p>Suggest how to record the video using <strong>AVCaptureVideoDataOutput</strong></p>