AVKit이란?
이전 포스팅에서 AVFoundation은 여러 미디어 데이터를 다루는데 중점을 둔 프레임워크라고 배웠다.
그렇다면 그 데이터를 실제 재생하고 컨트롤하는 UI는 어디에 있을까 ??
위에 그림을 보면 AVFoundation은 UIKit보다 아래에 있어 표준 UI를 제공해주지 않는다.
그러므로 미디어 데이터를 다루는 UI를 만들기 위해서는 AVFoundation보다 아래 계층에 있어야한다.
하지만 이 경우는 상당히 low-level까지의 지식과 많은 작업량이 필요한데 이 때 애플에서는 AVkit이라는 걸 제공하게된다.
역할
Create user interfaces for media playback, complete with transport controls, chapter navigation, picture-in-picture support, and display of subtitles and closed captions.
- AVFoundation위에 구축된 보조 프레임워크로 플랫폼의 기본 재생 환경과 일치하는 앱용 플레이어 인터페이스를 쉽게 제공한다.
- 재생 중인 컨텐츠와 가장 잘 일치하는 플레이어 인터페이스를 제공하며 자막과 CC((Closed\; Captions))이 자동으로 표현
- 탐색 가능한 챕터 마커 제공
- 대체 미디어 옵션을 선택하는 컨트롤 제공
정리하면 커스텀 없이 기본 재생 UI를 원할 때 사용한다.
사용
import UIKit
import SwiftUI
import AVKit
class ViewController: UIViewController {
private let button: UIButton = {
var config = UIButton.Configuration.plain()
config.title = "Play"
return UIButton(configuration: config)
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
view.addSubview(button)
button.translatesAutoresizingMaskIntoConstraints = false
button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
let action = UIAction(title: "Play", handler: { _ in self.playVideo() })
button.addAction(action , for: .primaryActionTriggered)
}
private func playVideo() {
let fileURL: URL = Bundle.main.url(forResource: "test", withExtension: ".mov")!
let playerController = AVPlayerViewController()
let player = AVPlayer(url: fileURL)
playerController.player = player
self.present(playerController, animated: true) {
player.play()
}
}
}
결과
기본 player ui와 함께 다양한 기본 컨트롤러가 구현되어있는 것을 볼 수 있다.
참고
'iOS > Framework' 카테고리의 다른 글
소셜 로그인 구현하기 (1) | 2025.01.03 |
---|---|
AVFoundation (4) [AVAudioSession] (3) | 2024.10.22 |
AVFoundation (3) [AVPlayerLayer] (1) | 2024.10.22 |
AVFoundation (2) [AVPlayer, AVPlayerItem] (0) | 2024.10.21 |
AVFoundation (1) [AVAsset] (1) | 2024.10.21 |