apple/HLS

[HLS] Event playlist construction

lgvv 2024. 12. 5. 01:04

Event playlist construction

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

  • 이벤트 세션 플레이리스트의 기본 구조에 대해 학습

목차

Overview

  • 이벤트 플레이리스트는 EXT-X-PLAYLIST-TYPE 태그에 의해 EVENT 값으로 판별.
  • 처음에는 EXT-X-ENDLIST 태그가 없으므로 새 미디어 파일이 플레이리스트에 추가 됨.

Example

  • 아래는 세션 시작시 이벤트 플레이리스트의 예시.
#EXTM3U
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.00,
fileSequence0.ts
#EXTINF:10.0,
fileSequence1.ts
#EXTINF:10.0,
fileSequence2.ts
#EXTINF:10.0,
fileSequence3.ts
#EXTINF:10.0,
fileSequence4.ts

EXTM3U

  • 재생 목록이 확장된 M3U 파일임을 나타냅니다.

EXT-X-PLAYLIST-TYPE

  • 전체 플레이리스트에 적용되는 변경 가능성이 있는 정보를 제공하는 태그
  • 해당 태그는 EVENT 또는 VOD 값 하나를 포함.
  • 태그가 존재하고 EVENT 값을 가지면 서버는 플레이리스트 중 일부를 수정 및 삭제를 하면 안됨. (단, 새로운 라인을 추가 할 수 있음.)
  • 태그가 존재하고 VOD 값을 가진 경우에는 플레이리스트 파일을 변경해선 안됨.

EXT-X-TARGET Duration

  • 미디어 파일의 최대 duration 값

EXT-X-VERSION

  • 재생 미디어 파일의 하위 호환성 버전.

EXT-X-MEDIA-SEQUENCE

  • 재생 미디어 파일의 첫번째 URL 시퀀스.
  • 시퀀스마다 해당 숫자는 1씩 증가하며, 파일 이름과는 무관.

EXTINF

  • 뒤에 오는 URL로 표시되는 레코드 마커.
  • 이 값은 전체 duration과 같거나 작아야 함.
  • Important.
    • 프로토콜 버전3 부터는 해당 값은 실수(float)값으로 지정.
    • 반올림 시 오차를 줄이기 위함.
  • EVENT 태그를 사용할 때 플레이리스트에서는 어떤 것도 제거할 수 없으며, 오로지 파일 끝에 새로운 세그먼트만 추가 가능.
  • 새로운 세그먼트는 이벤트가 끝날 때까지 파일 끝에 추가되며, 이때 EXT-X-ENDLIST 태그가 추가됨.
  • 다음 예는 새 미디어 URI로 업데이트되고 이벤트가 끝난 후 동일한 재생 목록을 보여줌.
  • #EXTM3U #EXT-X-PLAYLIST-TYPE:EVENT #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:4 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10.0, fileSequence0.ts #EXTINF:10.0, fileSequence1.ts #EXTINF:10.0, fileSequence2.ts #EXTINF:10.0, fileSequence3.ts #EXTINF:10.0, fileSequence4.ts

// List of files between 4 and 120 go here.

#EXTINF:10.0,
fileSequence120.ts
#EXTINF:10.0,
fileSequence121.ts
#EXT-X-ENDLIST

```

  • 이벤트 플레이리스트는 일반적으로 사용자가 콘서트 또는 스포츠 이벤트와 같이 이벤트의 모든 지점을 검색할 수 있도록 허용할 때 사용.