AVCaptureSession

Horus-iOS·2022년 5월 29일
0

https://developer.apple.com/documentation/avfoundation/avcapturesession

An object that manages capture activity and coordinates the flow of data from input devices to capture outputs.

캡처 활동을 관리하고 인풋 기기에서 캡처 아웃풋으로 흘러가는 데이터 흐름을 조정하는 객체입니다.

Declaration

class AVCaptureSession : NSObject

Overview

실시간 캡처를 수행하려면 AVCaptureSession 객체를 인스턴스화해야 하며, 적합한 인풋 및 아웃풋을 추가해야 합니다. 아래 코드는 오디오를 레코드하기 위해 캡처 기기를 설정하는 방법을 설명하고 있습니다.

// Create the capture session.
let captureSession = AVCaptureSession()

// Find the default audio device.
guard let audioDevice = AVCaptureDevice.default(for: .audio) else { return }

do {
    // Wrap the audio device in a capture device input.
    let audioInput = try AVCaptureDeviceInput(device: audioDevice)
    // If the input can be added, add it to the session.
    if captureSession.canAddInput(audioInput) {
        captureSession.addInput(audioInput)
    }
} catch {
    // Configuration failed. Handle error.
}

인풋으로부터 아웃풋으로 흘러가는 데이터 흐름을 시작하기 위해 startRunning()을 호출해야 하며, 흐름을 중지하려면 stopRunning()을 호출해야 합니다.

Important
startRunning() 메소드는 시간이 걸릴 수 있는 블로킹 호출이므로, 메인 큐(UI 응답성을 유지하는)가 블로킹되지 않도록 시리얼 큐에서 세션 셋업을 수행해야 합니다. 구현 예시는 AVCam: Building a Camera App를 살펴보시기 바랍니다.

AVCam: Building a Camera App
https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/avcam_building_a_camera_app

퀄리티 수준, 비트레이트 혹은 아웃풋에 대한 다른 설정을 커스터마이징하려면 sessionPreset 속성을 사용해야 합니다. 대부분의 일반적인 캡처 설정은 세션 프리셋을 통해 설정할 수 있지만, 몇 가지 특수한 옵션(높은 수준의 프레임 레이트)은 AVCaptureDevice 인스턴스에서 캡처 포맷을 직접적으로 설정하는 것을 요구합니다.

0개의 댓글