1. AvFoundation & AVCaptureSession

1-1. AvFoundation

시간에 따른 시청각 미디어 재생 / 생성 할 수 있게 해주는 프레임워크

1-2. AVCaptureSession

캡쳐 작업을 관리하고 입력 장치(카메라)의 흐름을 관리하고 출력(사진 촬영)을 관리

→ 이걸 사용하려면 아래와 같은 것들을 정의해줘야 합니다

1️⃣ 어떤 장치의 입력(Input), 출력(Output)을 쓸 것인지

2️⃣ 입력(Input) 장치로 어떤 장치를 쓸 것인지

3️⃣ 출력(Output) 데이터로 어떤 데이터를 쓸 것인지

1️⃣ 어떤 장치의 입력(Input), 출력(Output)을 쓸 것인지

우리는 어떤 장치를 사용하여 캡쳐할 것인지를 정해야 합니다

우리는 AVCaptureDevice.default 를 통해서 어떤 장치를, 어떻게 사용할지를 정할 수 있습니다!

class func `default`(
    _ deviceType: AVCaptureDevice.DeviceType,
    for mediaType: AVMediaType?,
    position: AVCaptureDevice.Position
) -> AVCaptureDevice?

AVMediaType | Apple Developer Documentation

예시 코드

var defaultCamera: AVCaptureDevice? {
    // Find the built-in Dual Camera, if it exists.
    if let device = AVCaptureDevice.default(.builtInDualCamera,
                                            for: .video,
                                            position: .back) {
        return device
    }
    
    // Find the built-in Wide-Angle Camera, if it exists.
    if let device = AVCaptureDevice.default(.builtInWideAngleCamera,
                                            for: .video,
                                            position: .back) {
        return device
    }
    
    return nil
}