How to Record video using AVCaptureVideoDataOutput
<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>