2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[Swift-Study] iOS 앱 개발 심화 1주차 - 동영상 재생하기

2024. 5. 1. 01:30ㆍIOS/Swift-Study
SMALL

AVFoundation 기본 구성의 이해

AudioVisual(AV)이란?

슬라이드 테이프 프레젠테이션, 영화, 텔레비전 프로그램, 회사 회의, 교회 예배 등

소리와 시각적 요소를 모두 처리하는 전자 매체를 의미

 

AVFoundation

AudioVisual(AV) 리소스 처리, 카메라를 제어, 오디오를 처리,

시스템 오디오와의 상호 작호작용을 할 수 있게 해주는 프레임워크

AVFoundation은 Core한 Framework에 속해서

AV리소스 자체를 다루는 역할

(위 그림 참고)

AVKit

플레이어의 콘텐츠를 표시하고 재생을 제어하기 위한

기본적인 사용자 인터페이스(자막, PIP 등)를 제공 (위 그림 참고)

 

iOS에서는 기본적으로, AVPlayerViewController 를 통해 제공

재생 UI를 Custom하고 싶다면, 아래에 소개되는 Core한 개념들을 활용하여

AVKit의 역할을 대체할 수 있는, 커스텀한 사용자 인터페이스를 구현가능

AVAsset

AVFoundation에서 AV리소스가 표현되는 객체 3가지의 Track(영상, 소리, 자막)으로 구성되어 있으며,

리소스의 URL을 통해 AVAsset을 생성가능

리소스와 관련한 정적 정보 (총 재생 시간, 생성 날짜 등)을 가짐

 


동영상 재생을 위한 AVFoundation 구성의 이해

 

AVPlayerItem

AVAsset과 유사하지만, 재생과 관련한 동적 정보(시간과 상태 정보 등)도 함께 가지고 있는 객체.

리소스의 URL, AVAsset을 통해 AVPlayerItem을 생성할 수 있음.

Track별 재생과 관련한 동적 정보(프레임 속도, 활성화 여부 등)를 가지고 있는 AVPlayerItemTrack 개념 존재

AVPlayer

AVPlayerItem의 재생 및 타이밍을 관리하는 컨트롤러 객체로,

AVPlayerQuickTime 동영상, MP3 오디오 파일 등의 로컬 및 원격 파일 기반 미디어 및 HLS를 사용해

제공되는 미디어까지 재생할 때 사용

 

[계층구조의 표현]


AVKit 활용 동영상 재생

AVFoundation과 AVKit을 활용 → 기본적인 방법으로 동영상 재생

// 동영상 파일의 URL을 통해 AVPlayer를 생성 → AVKit의 AVPlayerViewController를 활용 및 동영상을 재생예제
import UIKit
import AVKit

let url = URL(string: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4")!

// AVPlayerController 생성
let playerController = AVPlayerViewController()

// AVPlayer 생성
let player = AVPlayer(url: url as URL)

// AVPlayer 할당
playerController.player = player

// AVPlayerController 노출
self.present(playerController, animated: true) {
  player.play() // present 되면, 비디오 재생
}
728x90