관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 1. AVFoundation 개념 - 구조, AVAsset, AVKit 본문

iOS 기본 (swift)

[iOS - swift] 1. AVFoundation 개념 - 구조, AVAsset, AVKit

jake-kim 2022. 4. 1. 21:30

1. AVFoundation 개념 - 구조, AVAsset, AVKit

2. AVFoundation 개념 - AVPlayer, AVPlayerItem

3. AVFoundation 개념 - AVPlayer 오디오 재생, 일시정지, 재생구간 이동 구현 (play, pause, seek)

4. AVFoundation 개념 - AVPlayer, AVPlayerLayer로 동영상 재생 방법

5. AVFoundation 개념 - AVAudioSession 개념 (오디오 활성화, 입출력 변경, 잠금화면 재생, 재생 중 전화가 온 경우 처리)

AVFoundation

  • 시간에 따른 시청각 미디어 재생 / 생성 할 수 있게 해주는 프레임워크
    • Objective-c 인터페이스를 제공해주어 아래와같은 미디어에 대한 상세한 컨트롤이 가능
  • 미디어 파일 검사 / 생성 / 편집 / 재인코딩 가능
  • 실시간 캡쳐 가능
  • 재생중 입력 Stream을 가져와서 비디오 컨트롤이 가능

AVFoundation의 아키텍처

  • AVFoundation은 UIKit보다 Core쪽에 가깝게 맞닿아 있는 프레임워크
  • AVFoundation에서는 특별히 Audio를 처리하는 클래스가 별도로 존재

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

AVFoundation에서의 미디어 표현 - AVAsset

  • AVAsset: url로 미디어를 객체화하는 역할
  • AVAsset에 있는 미디어 데이터의 각 부분을 `track` 트랙이라고 정의

AVAsset과 Track

  • 메타데이터보통 AVAsset은 데이터가 크므로, 비동기적으로 로드하여 AVAsset을 로드
  • AVAsset 인스턴스를 통해 미디어 데이터의 재생 가능 여부, 총 재생 시간, 생성 날짜, 메타 데이터 사용이 가능

AVKit

  • AVFoundation를 가지고 UI를 구현하려면, UIKIt 밑단에 있기 때문에 표준화된 UI를 제공하지 않으므로 AVFoundation과 low-level 수준의 깊은 지식이 필요
  • AVKit은 AVFoundation위에 존재하고 미디어 플레이어 Interface를 쉽게 제공하는 SDK
    • 화면에 자막을 표출하는 기능까지 제공
  • 보통 재생 UI를 커스텀하지 않고 주어지는 UI를 그대로 사용하고 싶은 경우, AVKit을 쓰고 커스텀을 하고 싶은 경우에는 다음에서 알아볼 AVPlayer, AVPlayerItem을 사용

AVKit

  • AVFoundation 바로 위에 존재하며, AVKit을 사용하면 미디어 플레이어의 interface를 쉽게 구현 가능
    • 자막 출력
    • 미디어 재생 관리 제공
  • AVKit 안에 있는 AVPlayerViewController 클래스는 AVFoundation에 직접적ㅇ니 접근을 제공하므로, 미디어 재생에 관련된 다양한 기능들을 구현 가능

* 참고

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

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

Comments