AVFoundation (2) [AVPlayer, AVPlayerItem]

2024. 10. 21. 21:23·iOS/Framework
반응형

 

이전 AVKit 에서 우리는 미디어 데이터를 재생할 때 별도의 커스텀이 없는 UI를 사용할 때는 AVKit을 이용했다.

 

이번 학습에서는 커스텀 UI를 통해 미디어 데이터를 다뤄보자.

 

AVPlayer란?

정의

 오디오 및 비디오 콘텐츠를 
재생하는데  다양한 제어를 위한 인터페이스를 제공한다. 

 

class AVPlayer : NSObject

 

역할

1. 비디오 및 오디오 재생

  • 로컬 파일뿐만 아니라 네트워크 스트리밍 콘텐츠도 재생할 수 있다

2. 미디어 제어

  • 재생, 일시 정지, 앞으로/뒤로 탐색 등의 기본적인 미디어 제어 기능을 제공한다.

3.시간에 따른 재생 제어

  • 특정 시간으로 점프하거나 현재 재생 시간을 확인할 수 있습니다.

4. 네트워크 스트리밍 지원

  • HTTP Live Streaming (HLS)과 같은 스트리밍 프로토콜을 사용하여 인터넷을 통해 비디오나 오디오를 스트리밍할 수 있다.

5. 비동기 재생 준비

  • AVPlayer는 미디어 파일을 비동기적으로 로드하고 준비하여, 로딩이 완료되기 전에 재생이 가능하다.

특징

 

  • AVPlayer 객체는 AVAsset의 전반적인 playback(녹음, 녹화, 재생)  을 조절하는데 사용
  • AVPlayer 객체가 AVPlayerItem을 이용, AVPlayerItem이 AVAsset을 사용하는 구조다.
  • AVPlayer는 한 번에 하나의 미디어 데이터만 재생할 수 있어 여러 미디어를 순서대로 재생하고 싶으면 AVQueuePlayer를 이용

AVPlayerItem란?

정의

AVPlayer에서 재생할 미디어의 한 개체를 나타내는 클래스다.

 

class AVPlayerItem : NSObject

 

 

 

역할

1. 미디어 트랙 관리

  • 오디오, 비디오, 자막 트랙과 같은 다양한 미디어 트랙을 관리한다.
  • 필요에 따라 특정 트랙을 활성화하거나 비활성화할 수 있다.

2. 재생 상태 추적

  • 미디어 파일이 준비되는 상태, 버퍼링 상태, 재생이 끝나는 시점을 추적할 수 있다.

3. 타임옵저버

재생 시간을 관찰하고 특정 시간에 이벤트를 발생시키는 기능을 제공한다.

 

특징

  • AVPlayerItem은 미디어 파일의 상태나 재생 관련 정보를 관리하며 AVPlayer와 함께 미디어 재생을더 세밀하게
    제어할 수 있게 해준다.
  • AVPlayerItem을 사용하는 주요 이유는 재생할 미디어의 상태를 추적하거나 미디어의 일부 속성을 설정할 수 있기 때문이다
  • 또한 여러 항목을 순차적으로 재생할 때 유용하며, 재생 상태, 버퍼링 상태 등을 모니터링할 수 있다.

정리하면 AVAsset은 정적인 상태 관리 (총 재생, 시간, 생성,날짜) AVPlayerItem은 동적인 상태 관리
(재생 상태,
현재까지 재생된 시간 등)을 관리한다.

 

AVPlayer와 AVPlayerItem은 비시각적인 객체이기 때문에 화면에 영상 출력이 불가능 , 시각적으로 보여주기위해
앞서 배운 AVKit의 AVPlayerViewController를 이용하거나 커스텀이 필요할 경우  AVPlayerLayer을 이용한다.

 


CMTime란?

A structure that represents time.

 

역할

Core Media 프레임워크에서 제공하는 시간 관련 구조체로, 비디오나 오디오 파일에서 시간을 다루기 위한 형식이다.

 

특징

  • CMTime은 특히 AVFoundation에서 오디오 및 비디오 파일의 타임스탬프를 처리하거나, 재생 시간을 조작할 때 자주 사용된다.
  • 부동소수점의 부정확성으로 인한 디테일한 시간의 작업이 필요한 미디어 재생에서의 문제점을 해결하기 위해 사용된다.

구성

1. value

  • 시간의 숫자적인 값을 나낸다. 정수로 표현되며, 실제 시간은 value/timescale로 계산된다.

2.timescale

  • 시간의 단위를 정의하는 값
  • 예를 들어, timescale이 600이면 1초를 600단위로 나누어 표현할 수 있다.

3. flags

  • 시간이 유효한지, 음수인지 등을 나타내는 플래그 값이다.

4. epoch

  • 큰 값으로 표현되는 시간에 사용되며, 주로 복잡한 시간 계산에서 사용된다.

 

참고

 

AVPlayer | Apple Developer Documentation

An object that provides the interface to control the player’s transport behavior.

developer.apple.com

 

 

AVQueuePlayer | Apple Developer Documentation

An object that plays a sequence of player items.

developer.apple.com

 

 

CMTime | Apple Developer Documentation

A structure that represents time.

developer.apple.com

 

반응형

'iOS > Framework' 카테고리의 다른 글

소셜 로그인 구현하기  (1) 2025.01.03
AVFoundation (4) [AVAudioSession]  (3) 2024.10.22
AVFoundation (3) [AVPlayerLayer]  (1) 2024.10.22
AVKit  (4) 2024.10.21
AVFoundation (1) [AVAsset]  (2) 2024.10.21
'iOS/Framework' 카테고리의 다른 글
  • AVFoundation (4) [AVAudioSession]
  • AVFoundation (3) [AVPlayerLayer]
  • AVKit
  • AVFoundation (1) [AVAsset]
Hamp
Hamp
남들에게 보여주기 부끄러운 잡다한 글을 적어 나가는 자칭 기술 블로그입니다.
  • Hamp
    Hamp의 분리수거함
    Hamp
  • 전체
    오늘
    어제
    • 분류 전체보기 (305) N
      • CS (30)
        • 객체지향 (2)
        • Network (7)
        • OS (6)
        • 자료구조 (1)
        • LiveStreaming (3)
        • 이미지 (1)
        • 잡다한 질문 정리 (0)
        • Hardware (2)
        • 이론 (6)
        • 컴퓨터 그래픽스 (0)
      • Firebase (3)
      • Programing Langauge (38) N
        • swift (32)
        • python (5) N
        • Kotlin (1)
      • iOS (132)
        • UIKit (37)
        • Combine (1)
        • SwiftUI (32)
        • Framework (7)
        • Swift Concurrency (22)
        • Tuist (6)
        • Setting (11)
        • Modularization (1)
        • Instruments (6)
      • PS (59)
        • 프로그래머스 (24)
        • 백준 (13)
        • LeetCode (19)
        • 알고리즘 (3)
      • Git (18)
        • 명령어 (4)
        • 이론 (2)
        • hooks (1)
        • config (2)
        • action (7)
      • Shell Script (2)
      • Linux (6)
        • 명령어 (5)
      • Spring (13)
        • 어노테이션 (1)
        • 튜토리얼 (11)
      • CI-CD (4)
      • Android (0)
        • Jetpack Compose (0)
      • AI (0)
        • 이론 (0)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Tuist
    property
    백준
    dispatch
    lifecycle
    투포인터
    boostcamp
    Spring
    CS
    protocol
    UIKit
    AVFoundation
    concurrency
    SwiftUI
    프로그래머스
    dfs
    GIT
    IOS
    dp
    Swift
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
Hamp
AVFoundation (2) [AVPlayer, AVPlayerItem]
상단으로

티스토리툴바