AVCapturePhotoOutput

Horus-iOS·2022년 5월 30일
0

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

A capture output for still image, Live Photos, and other photography workflows.

스틸 이미지, 라이브 사진, 기타 사진촬영 작업흐름을 위한 캡처 아웃풋입니다.

Declaration

class AVCapturePhotoOutput : AVCaptureOutput

Overview

AVCapturePhotoOutput은 스틸 사진촬영과 관련이 있는 캡처 작업흐름을 위한 인터페이스를 제공합니다. 기본적인 스틸 이미지의 캡처와 더불어 사진 아웃풋은 RAW 형식 캡처, 다중 이미지의 브라켓된 캡처, 라이브 사진, 광역 색상을 지원합니다. RAW 포맷 DNG파일, HEVC 형식 HEIF 파일, JEPG 파일을 포함해 다양한 형식 및 코덱으로 캡처된 사진을 출력할 수 있습니다.

AVCapturePhotoOutput 클래스를 사용해서 사진을 캡처하려면 아래 단계를 수행해야 합니다.

  1. AVCapturePhotoOutput 객체를 생성해야 합니다. 지원되는 캡처 세팅을 결정하는 것과 동시에 특정 기능(예를 들어 라이브 사진 캡처)을 결정하려면 이 객체의 속성을 사용하시기 바랍니다.

  2. 특정 캡처에 대해 기능과 세팅(예를 들어 이미지 안정화 혹은 플래시 세팅)을 선택하려면 AVCapturePhotoSettings 객체를 생성하고 설정해야 합니다.

  3. AVCapturePhotoCaptureDelegate 프로토콜을 구현하고 있는 딜리게이트 객체와 함께 사진 세팅 객체를 capturePhoto(with:delegate:) 메소드에 전달함으로써 이미지를 캡처하시기 바랍니다. 사진 캡처 아웃풋은 이후 캡처 프로세스 동안 중요한 이벤트를 알려주기 위해 딜리게이트를 호출할 것입니다.

flashMode 속성과 같은 몇 가지 사진 캡처 세팅은 자동으로 동작하는 옵션을 포함합니다. 이와 같은 세팅에서 사진 아웃풋은 캡처의 순간에 해당 기능을 사용할지 결정합니다. 캡처를 요청할 때 캡처가 완료되면 기능을 활성화시킬 것인지는 알 수 없습니다. 사진 캡처 출력이 완료된 혹은 처리중인 캡처에 대한 정보와 함께 AVCapturePhotoCaptureDelegate 메소드를 호출하면, 해당 캡처에 대해 어떤 자동 기능이 설정되는지를 설명하는 AVCaptureResolvedPhotoSettings 객체를 제공합니다. 리졸브된 세팅 객체의 uniqueID 속성은 캡처 요청을 위해 사용된 AVCapturePhotoSettings 객체의 uniqueID 값과 일치하게 됩니다.

특정 사진 기능(라이브 사진 캡처 및 고수준 레졸루션 캡처)은 캡처 렌더 파이프라인의 재설정을 요구합니다. 이와 같은 기능에 맞춰지려면 AVCaptureSession 객체의 startRunning() 메소드 호출 전에 isHighResolutionCaptureEnabled, isLivePhotoCaptureEnabled, isLivePhotoAutoTrimmingEnabled 속성을 설정하시기 바랍니다. 세션이 실행되는 동안 이와 같은 속성을 변경하면 캡처 렌더 파이프라인은 중단됩니다. 라이브 사진 캡처의 진행상황은 즉시 종료되며, 충족되지 않은 사진 요청은 중단되고, 비디오 프리뷰는 일시적으로 중지됩니다.

사진 캡처 아웃풋을 사용하는 것은 AVCaptureSession 객체에 다른 요구사항을 추가하도록 합니다.

  • 캡처 세션은 라이브 사진 캡처 및 영상 파일 아웃풋을 동시에 지원할 수 없습니다. 캡처 세션이 AVCaptureMovieFileOutput 객체를 포함하는 경우 isLivePhotoCaptureSupported 속성은 false가 됩니다. (대안으로 라이브 사진에 동일하도록 같은 리졸루션에서 비디오 버퍼를 출력하려면 isLivePhotoCaptureSupported 클래스를 사용할 수 있습니다.)

  • 캡처 세션은 AVCapturePhotoOutput, AVCaptureStillImageOutput 객체 모두를 포함할 수 없습니다. AVCapturePhotoOutput 클래스는 AVCaptureStillImageOutput 클래스의 모든 기능을 포함하고 있습니다.

AVCapturePhotoOutput 클래스는 암시적으로 광역 색상 촬영을 지원합니다. 만약 소스 AVCaptureDevice 객체의 activeColorSpace값이 AVCaptureColorSpace.P3_D65인 경우 캡처 아웃풋은 광역 색상 정보를 사용해 사진을 생성합니다(AVCapturePhotoSettings 객체가 광역 색상을 지원하지 않는 아웃풋 형식을 구체화하지 않는한).

0개의 댓글