AVKit used with Swift, yet no video file created. Why?

Here is some simplified code that attempts to use AVKit in Swift to record a video to a file. No errors are thrown, yet no file exists when checked. What have I left out?

I've tried several different variations, all with the same result. No file is created.

import UIKit

import AVKit



extension UIViewController:AVCaptureFileOutputRecordingDelegate{

    public func fileOutput(_ output: AVCaptureFileOutput, didFinishRecordingTo outputFileURL: URL, from connections: [AVCaptureConnection], error: Error?) {

        if let error = error{

            print(error.localizedDescription)

        }

        print("checking if \(outputFileURL.absoluteString) exists: \(FileManager.default.fileExists(atPath: outputFileURL.absoluteString))")

    }

}



class ViewController: UIViewController {



    var captureSession = AVCaptureSession()

    var movieOutput = AVCaptureMovieFileOutput()

    var previewLayer = AVCaptureVideoPreviewLayer()



    @IBOutlet var cameraView: UIView!



    override func viewWillAppear(_ animated: Bool) {

        self.cameraView = self.view



        guard let camera = AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .front) else{

                return

            

        }

        if camera.hasTorch && camera.isTorchModeSupported(.auto){

            camera.torchMode = .auto

        }

        do{

            let input = try AVCaptureDeviceInput(device: camera)



            if captureSession.canAddInput(input){



                captureSession.addInput(input)



                if captureSession.canAddOutput(movieOutput){



                    captureSession.addOutput(movieOutput)



                    previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)

                    previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill

                    previewLayer.connection?.videoOrientation = AVCaptureVideoOrientation.portrait

                    cameraView.layer.addSublayer(previewLayer)



                    previewLayer.position = CGPoint(x: self.cameraView.frame.width / 2, y: self.cameraView.frame.height / 2)

                    previewLayer.bounds = cameraView.frame

               



                    captureSession.startRunning()

                    

                    let fileUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("output.mp4")

                    try? FileManager.default.removeItem(at: fileUrl)

                    

                    print("recording to: \(fileUrl.absoluteString)")

                    movieOutput.startRecording(to: fileUrl, recordingDelegate: self)

                    DispatchQueue.main.asyncAfter(deadline: .now() + 5) {

                        self.movieOutput.stopRecording()

                        

                    }

                }

            }

        }

        catch{

            print("Error")

        }

    }

}

Found it. The line

print("checking if \(outputFileURL.absoluteString) exists: \(FileManager.default.fileExists(atPath: outputFileURL.absoluteString))")

should read

print("checking if \(outputFileURL.absoluteString) exists: \(FileManager.default.fileExists(atPath: path))")
AVKit used with Swift, yet no video file created. Why?
 
 
Q