티스토리 뷰
전면 또는 후면 카메라를 선택하거나 TrueDepth 카메라 또는 듀얼 카메라와 같은 고급 기능을 사용합니다.
Overview
장치는 전면 및 후면 카메라, 듀얼 카메라, TrueDepth 카메라 등 사진과 비디오를 캡처하기 위한 많은 옵션을 제공합니다.
자동으로 적절한 카메라를 선택하거나 카메라 선택을 위한 사용자 인터페이스를 제공하는 것은 카메라 기능이 있는 앱을 개발하는 데 있어 중요한 부분입니다.
AVFoundation은 카메라 장치를 선택하기 위한 두 가지 주요 경로를 제공합니다: default(_:for:position:) 메서드와 AVCaptureDevice.DiscoverySession 클래스입니다.
Quickly Choose a Default Device
찾고 있는 캡처 장치의 종류를 정확히 알고 있는 경우 AVCaptureDevice 편의 방법 중 하나를 사용하여 기본 장치를 선택합니다.
예를 들어, 아래 코드는 지원되는 장치의 듀얼 카메라 또는 단일 카메라 장치의 단일(광각) 카메라 중 가장 적합한 후향 카메라를 선택합니다.
if let device = AVCaptureDevice.default(.builtInDualCamera,
for: .video, position: .back) {
return device
} else if let device = AVCaptureDevice.default(.builtInWideAngleCamera,
for: .video, position: .back) {
return device
} else {
fatalError("Missing expected back camera device.")
}
Sort and Filter Devices with a Discovery Session
특정 기준과 일치하는 전체 장치 set을 확인하여 자신의 논리를 사용하여 장치를 선택하려면 AVCaptureDevice.DiscoverySession 클래스를 사용하세요.
먼저 필요한 장치 종류에 대한 검색 세션을 생성합니다.
let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes:
[.builtInTrueDepthCamera, .builtInDualCamera, .builtInWideAngleCamera],
mediaType: .video, position: .unspecified)
그런 다음 검색 세션의 장치 목록을 읽어 일치하는 장치를 찾고 필요에 맞는 장치를 선택하십시오.
검색 세션은 요청한 디바이스 유형을 기준으로 디바이스 목록을 자동으로 정렬하므로 배열 순서를 사용하여 특정 기능이 있는 가장 적합한 디바이스를 찾을 수 있습니다.
예를 들어 위에 표시된 검색 세션은 광각 카메라 앞에서 depth 가능 장치를 검색하고 장치 위치를 지정할 수 있으므로 장치 목록의 첫 번째 항목이 해당 위치에 가장 적합한 depth 캡처 장치(또는 예비 장치)입니다.
func bestDevice(in position: AVCaptureDevice.Position) -> AVCaptureDevice {
let devices = self.discoverySession.devices
guard !devices.isEmpty else { fatalError("Missing capture devices.")}
return devices.first(where: { device in device.position == position })!
}
'iOS' 카테고리의 다른 글
[iOS] AVCam: Building a Camera App 번역 / iOS 카메라 앱 만들기 (0) | 2021.10.25 |
---|---|
[iOS] UIImagePickerController 번역 (0) | 2021.10.22 |
[iOS] AVCaptureSession 번역 (0) | 2021.10.22 |
[iOS] Setting Up a Capture Session 번역 / iOS 사진, 동영상 카메라 사용법 (0) | 2021.10.22 |
[iOS] Dependency Injection(DI) 의존성 주입 (0) | 2021.09.23 |