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
- 동일 컨텐츠의 다른 인코딩을 제공하기 위한 여러 플레이리스트.
목차
- Adding alternate media to a playlist
- Incorporating Ads into a Playlist
- Video on Demand playlist construction
- Event playlist construction
- Live Playlist (sliding window) construction
- HTTP Live Streaming Overview
- 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 태그는 코덱 속성을 포함해얗 함. 왜냐하면 이 속성을 통해 특정 스트림을 디코딩하는데 필요한 코덱의 전체 목록을 제공. 클라이언트는 이를 통해 오디오만 제공하는건지, 오디오 및 비디오를 전부 제공하는건지를 구별. 이 정보를 사용해 . 더나은 사용자 경험을 제공