AVCaptureSession에 대해 학습하기 전, AVFoundation에 대해 짚고 넘어가보자.

AVFoundation이란?

image.png

AVFoundation | Apple Developer Documentation

AVFoundation은 Apple의 iOS나 macOS, tvOS 플랫폼 등에서 시청각 미디어를 캡쳐하거나 재생, 편집, 처리하는 프레임워크이다!

우리가 흔히 사용하는 카메라 촬영(입력/출력)부터 비디오, 오디오 파일 관리, 실시간 스트리밍까지 모두 포괄한다.

AVFoundation으로 활용할 수 있는 영역은 다음과 같다.

  1. 미디어 관리

    AVAsset 클래스를 활용해 파일이나 입출력 스트림, 네트워크 미디어를 추상화하여 독립적으로 로드하고 메타데이터를 처리할 수 있다.

  2. 캡처 및 입력 관리

    AVCaptureSession을 통해 카메라나 마이크와 같은 입, 출력 하드웨어의 실시간 데이터 흐름을 구축할 수 있다.

  3. 재생 및 출력

    AVPlayer를 이용하여 동영상과 오디오 재생, AVAudioPlayer 로 간단한 오디오 처리나 AVKit을 통해 UI 구현을 할 수 있다.

AVFoundation의 아키텍처

About AVFoundation

AVFoundation은 Core Audio, Core Media, Core Animation 위에 구축되어 코덱과 컨테이너 같이 저레벨 구성 요소를 감추고 고레벨 API를 제공한다.

예를 들어서.. 카메라 앱에서는 AVCapture로 입/출력 파이프라인 구축을, 동영상 플레이어에서는 AVPlayer로 동영상 재생 제어를 구현할 수 있다.

아래 이미지는 iOS 에서의 AVFoundation 레이어를 뜻한다.

이미지 출처 : https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188-CH1-SW3

이미지 출처 : https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188-CH1-SW3

아래 이미지는 MacOS(OX X) 에서의 AVFoundation 레이어를 뜻한다. (iOS의 AVFoundation과 약간 차이가 있는 것 같다.)

이미지 출처 : https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188-CH1-SW3

이미지 출처 : https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188-CH1-SW3