apple/HLS

[HLS] Live Playlist (sliding window) construction

lgvv 2024. 12. 5. 01:04

Live Playlist (sliding window) construction

https://developer.apple.com/documentation/http-live-streaming/live-playlist-sliding-window-construction

  • 라이브 세션 플레이리스트를 위한 기본 구성에 대한 이해

목차

Overview

  • 라이브 세션에서는 새로운 미디어 파일이 생성되고 사용가능 할 때, 기존 파일의 URI를 제거하는 방식으로 인덱스 파일을 업데이트.
  • EXT-T-ENDLIST 태그를 플레이리스트에 나타나지 않았기에, 샤로운 미디어 파일이 사용 가능해질 때 인덱스 파일에 추가됨을 가리킴.

Example

  • 아래 코드는 세션 시작시, Live Playlist의 예제
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10.0,
fileSequence1.ts
#EXTINF:10.0,
fileSequence2.ts
#EXTINF:10.0,
fileSequence3.ts
#EXTINF:10.0,
fileSequence4.ts
#EXTINF:10.0,
fileSequence5.ts

EXTM3U

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

EXT-X-TARGETDURATION

  • 미디어 파일 duration의 최댓값 명시.

EXT-X-VERSION

  • 플레이리스트 파일의 호환 가능한 버전을 가르킴.
  • HTTP Live Streaming 규격의 최신 버전 IETF Internet-Draft에서 정의하는 프로토콜 규정을 준수해야 함.

EXT-X-MEDIA-SEQUENCE

  • 플레이리스트에 나타나는 첫번째 URL의 스퀀스 번호를 가르킴.
  • 각 미디어 파일 URL은 고유한 정수 번호이며, URL의 시퀀스 번호는 이전 URL의 시퀀스 번호보다 1 크다.
  • 시퀀스 번호는 파일의 이름과는 무관.
  • Important.
    • 플레이리스트에서 제거되는 모든 미디어 URI의 EXST-X-MEDIA-SEQUE 태그 값을 1 증가시켜야 함.
    • 미디어 URI는 플레이리스트에 표시되는 시퀀스 순서대로 플레이리스트에서 파일에서 제거되어야 함.
    • 갱신 된 인덱스 파일은 연속적인 스트림으로 이동 가능한 창을 제공하며, 이러한 유형의 세션은 연속적인 방송에 적함.

EXTINF

  • 뒤에 있는 URL로 식별된 미디어 파일을 나타내는 레코드 마커. 각 미디어 파일의 URL 앞에는 EXTINF 태그가 존재해야 함.
  • 해당 태그에선 미디어 세그먼트의 지속 시간을 . 초단위로 지정하는 십진법으로 정수 혹은 실수로 duration이 포함되어 있음.
  • 이 값은 총 duration보다 같거나 작아야 함.
  • Important.
    • 프로토콜 버전 3부터는 이 값은 항상 실수형(float)를 사용.
    • 반올림 오차를 줄일 . 수있음.
  • 아래 예저는 새 미디어 URI로 갱신 후 동일한 플레이리스트.
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:2
#EXTINF:10.0,
fileSequence2.ts
#EXTINF:10.0,
fileSequence3.ts
#EXTINF:10.00,
fileSequence4.ts
#EXTINF:10.00,
fileSequence5.ts
#EXTINF:10.0,
fileSequence6.ts
  • 새 미디어 URI가 추가되면 플레이리스트가 계속 업데이트 됨.
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:4
#EXTINF:10.00,
fileSequence4.ts
#EXTINF:10.00,
fileSequence5.ts
#EXTINF:10.0,
fileSequence6.ts,
#EXTINF:10.0,
fileSequence7.ts,
#EXTINF:10.0,
fileSequence8.ts,
#EXTINF:10.0,
fileSequence9.ts