apple/HLS

[HLS] Creating a Multivariant Playlist

lgvv 2024. 12. 5. 01:05

Creating a Multivariant Playlist

https://developer.apple.com/documentation/http-live-streaming/creating-a-multivariant-playlist

  • 동일 컨텐츠의 다른 인코딩을 제공하기 위한 여러 플레이리스트.

목차

Overview

  • 네트워크를 통해 각기 다른 비트 전송율에 따라 클라이언트는 받고, 측정된 네트워크 비트 전송률에 기반해 가장 적절한 variant로 변형함.
  • 클라이언트는 사용자에게 최상의 스트리밍 경험을 제공하고자, 재생 지연을 최소화하도록 조정.

  • 이러한 multivariant는 다시 읽지 않음.
  • 클라이언트가 우선 한번 읽은 후에는 플레이리스트가 변형되지 않는다고 가정함.
  • 스트림은 클라이언트가 각 개별 재생 목록 중 하나에서 EXT-X-ENDLIST 태그를 만나면 바로 종료함.

Define variants

  • 아래 예시에서는 5개의 variant를 정의하는 multivariant 플레이리스트의 예제
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/low/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/lo_mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/hi_mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=640000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/high/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=64000,CODECS="mp4a.40.5"
http://example.com/audio/index.m3u8

EXTM3U

  • 해당 파일이 확장된 M3U 파일임을 가르킴. 파일의 이 타입은 첫줄이 MXU3U로 기본 M3U 파일과 구분됨.
    • 참고 M3U 파일의 확장이 M3U8 파일.
  • 모든 HLS 플레이리스트는 해당 태그로 시작해야함.

EXT-X-STREAM-INF

  • 플레이리스트 파일에서 다음 URL이 다른 플레이리스트 파일임을 식별.
  • 해당 태그에는 아래와 같은 변수가 존재.
  • AVERAGE-BANDWIDTH (선택이지만 권장)
    • 스트림의 평균 비트수를 나타내는 정수값.
  • BANDWIDTH (필수)
    • 각 미디어 파일에 대해 전체 비트 속도(초당 비트 수)의 상한 정수 값.
    • 상한 값은 플레이리스트에 나타나거나 나타날 컨테이너 오버헤드를 포함하도록 계산.
  • FRAME-RATE (선택이지만 권장)
    • variant stream의 속도를 설명하는 float 값
  • HDCP-LEVEL (선택)
    • 암호화 유형. 유효한 값은 TYPE-0과 NONE. HDCP에 의해 출력이 보호되지 않는 경우 TYPE-0을 이용
  • RESOLUTION (선택이지만 권장)
    • 플레이리스트 안에서 비디오를 표시할 픽셀 크기.
    • 이 매개변수는 비디오를 포함하는 어떠한 스트림에라도 포함되어야 함.
  • VIDEO-RANGE (인코딩 여부에 따라 필요)
    • SDR 또는 PQ 값이 유효한 string. 만약 특정한 전송코드인 1, 16, 18이 정의되지 않는다면 해당 매개변수는 생략해야 함.
  • CODECS(선택이지만 권장)
    • 미디어 세그먼트에 있는 샘플 유형 지정
  • Note
    • CODES는 선택사항이지만 모든 EXT-X-STREAM-INF 태그는 코덱 속성을 포함해얗 함. 왜냐하면 이 속성을 통해 특정 스트림을 디코딩하는데 필요한 코덱의 전체 목록을 제공. 클라이언트는 이를 통해 오디오만 제공하는건지, 오디오 및 비디오를 전부 제공하는건지를 구별. 이 정보를 사용해 . 더나은 사용자 경험을 제공