Overview: Opening a Video Camera using AVFoundation

This Swift example demonstrates how to initialize and run the default video camera on an iOS/macOS device using Apple's AVFoundation framework. It checks for user permission to access the camera, sets up an input from the video device, configures a video output, and starts the camera session.

Code: CameraClass.swift

import AVFoundation

class CameraClass {
    var session = AVCaptureSession()
    var videoDeviceInput: AVCaptureDeviceInput?
    
    init() {
        prepare()
    }
    
    func prepare() {
        AVCaptureDevice.requestAccess(for: .video) { granted in
            if granted {
                print("Camera access granted")
                DispatchQueue.main.async {
                    // You can safely update UI here
                }
            } else {
                print("Denied")
            }
        }

        guard let camera = AVCaptureDevice.default(for: .video) else {
            print("No camera found")
            return
        }

        do {
            let input = try AVCaptureDeviceInput(device: camera)
            if session.canAddInput(input) {
                session.addInput(input)
                videoDeviceInput = input
            }

            let output = AVCaptureVideoDataOutput()
            if session.canAddOutput(output) {
                session.addOutput(output)
            }

            session.startRunning()
        } catch {
            print("Error setting up camera: \\(error)")
        }
    }
}

Explanation

Best Practices