Adding alternate media to a playlist
https://developer.apple.com/documentation/http-live-streaming/adding-alternate-media-to-a-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
- Multivariant 플레이리스트에 대체 미디어를 추가하면 제공자가 메인 프레젠테이션의 override 형태로 플레이리스트를 지정
- 클라이언트는 오디오 및 비디오만 재생하고, 같은 미디어가 있는 경우 메인 프레젠테이션 억제.
- 제공자가 중복 미디어(오디오 및 비디오)를 저장하거나 클라이언트가 하나만 필요할 때 모든 variant를 다운하지 않고, 프레젠테이션에서 여러 버전의 미디어 제공
- 기존 컨텐츠를 리마스터링 없이도 후속적으로 추가 미디어 추가 가능.
Add alternate media
- 아래는 오디오를 추가하는 예제
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="eng",NAME="English",AUTOSELECT=YES, DEFAULT=YES,URI="eng/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="fre",NAME="Français",AUTOSELECT=YES, DEFAULT=NO,URI="fre/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="sp",NAME="Espanol",AUTOSELECT=YES, DEFAULT=NO,URI="sp/prog_index.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=195023,CODECS="avc1.42e00a,mp4a.40.2",AUDIO="audio"
lo/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=591680,CODECS="avc1.42e01e,mp4a.40.2",AUDIO="audio"
hi/prog_index.m3u8
EXT-X-MEDIA
- 미디어 그룹 요소 식별. 미디어 선택 그룹의 모든 요소는 유사한 특성(동일 코덱, 동일한 최대 대역폭 등)을 가져야 함.
EXT-X-STREAM-INF
- Multivariant 플레이리스트의 다음 URL이 플레이리스트를 식별하기 위함.
EXT-X-MEDIA
와 EXT-X-STREAM-INF
의 파라미터
EXT-X-MEDIA
태그는 다음과 같은 파라미터가 존재.
TYPE
(필수)
- 미디어 타입을 나타내는 string.
- AUDIO, VIDEO, SUTION 및 CLOSED-CAPTION값만 유효함.
GROUP-ID
(필수)
- 미디어 선택 항목이 속한 그룹을 지정하는 값. string
- 미디어에 사용되는 기본 언어를 식별하는 값 string.
Language
(선택)
NAME
(필수)
- 미디어에 사영되는 기본언어를 설명하는 값 string.
AUTOSELECT
(선택)
- 명시적으로 클라이언트가 미디어를 선택하여 재생할 수 있음을 나타내는 값으로 string타입임. 유효한 값은 YES와 NO이며
DEFAULT
태그가 YES인 경우 해당 값도 YES
DEFAULT
(선택)
- 사용자가 다른 옵션을 선택하지 않은 경우, 미디어를 선택해 재생해야 함을 나타내는 문자열로 YES, NO을 유효한 값으로 가짐.
INSTREAM-ID
(Required for closed captions)
- 미디어 재생 목록의 세그먼트 안에서 렌더링을 지정하는 string. TYPE 태그가 CLOSED-CAPTIONs인 경우 INSTREAM-ID에는 CC1, CC3, CC3, CC4 또는 SERVICEn 값 중 하나가 존재해야 함. 여기서 n은 1에서 63 사이의 수
ASSOC-LANGUAGE
(선택)
- 렌더링에 대한 언어 태그를 포함하는 string.
ASSOC-LANGUAGE
는 종종 LANGUGE 태그에 지정된 언어와 종종 다름.
CHANNELS
(두 개의 renditions이 동일한 코덱을 갖지만, 채널 수가 다른 경우에 필수)
- 미디어 세그먼트에 존재하는 독립적인 동시 오디오 채널의 최대 수를 나타내는 string.
URI
(선택)
- 미디어 플레이리스트 파일을 식별하는 URI를 포함하는 string.
TYPE
이 CLOSED-CAPTIONs이면 이 태그를 생략해야 하며, 해당 태그를 생략할 경우 미디어 내용이 기존에 속함. - URI 속성이 생략되면 EXT-X-MEDIA 태그는 미디어가 EXT-X-STREAM-INF 태그의 URI에 포함되어 있음을 나타 낼 수 있음.
EXT-X-STREAM-INF
태그는 아래와 같은 파라미터가 존재.
AUDIO
(선택)
- 프레젠테이션을 재생할 떄 사용할 수 있는 오디오 스트림 집함을 따옴표로 표시된 string.
- 이 값은 TYPE 태그가 AUDIO인 Multivariant 플레이리스트의 다른 곳에 있는 EXT-X-MEDIA 태그의 GROUP-ID 값이 일치해야 함.
VIDEO
(선택)
- 프레젠테이션을 재생할 떄 사용할 수 있는 비디오 스트림 집함을 따옴표로 표시된 string.
- 이 값은 TYPE 태그가 VDIEO인 Multivariant 플레이리스트의 다른 곳에 있는 EXT-X-MEDIA 태그의 GROUP-ID 값이 일치해야 함.
SUBTITLES
(선택)
- 프레젠테이션을 재생할 떄 사용할 수 있는 자막 스트림 집함을 따옴표로 표시된 string.
- 이 값은 TYPE 태그가 SUBTITLES인 Multivariant 플레이리스트의 다른 곳에 있는 EXT-X-MEDIA 태그의 GROUP-ID 값이 일치해야 함.
CLOSED-CAPTIONS
(선택)
- 사용할 수 있는 CLOSED-CAPTIONS 집합을 나타내는 따옴표로 표시된 string 또는 NONE 값을 갖는 열거형.
- 이 값은 TYPE 태그가 CLOSED-CAPTIONs인 Multivariant 플레이리스트의 다른 곳에 있는 EXT-X-MEDIA 태그의 GROUP-ID 값이 일치해야 함.
- 코드나 비트전송률 변경하기 위해 여러 오디오 그룹을 가질 수 있음.
- 그러나 각 오디오 그룹은 그 안에서 동일한 variant를 가져야 함.
- 예를 들면, 한 오디오 그룹에 영어를 둘 수 없다면, 다른 그룹에도 둘 수 없음.
- 아래 예제는 두개의 오디오 그룹을 정의
- 하나는 높은 비트 전송율을 위한 것. 다른 하나는 낮은 전송율을 위한 것
- 두 오디오 그룹은 동일한 언어를 사용하나, 사용 가능한 대역폭이 기초해 호출
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-lo",LANGUAGE="eng",NAME="English",AUTOSELECT=YES, DEFAULT=YES,URI="englo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-lo",LANGUAGE="fre",NAME="Français",AUTOSELECT=YES, DEFAULT=NO,URI="frelo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-lo",LANGUAGE="es",NAME="Espanol",AUTOSELECT=YES, DEFAULT=NO,URI="splo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-hi",LANGUAGE="eng",NAME="English",AUTOSELECT=YES, DEFAULT=YES,URI="eng/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-hi",LANGUAGE="fre",NAME="Français",AUTOSELECT=YES, DEFAULT=NO,URI="fre/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-hi",LANGUAGE="es",NAME="Espanol",AUTOSELECT=YES, DEFAULT=NO,URI="sp/prog_index.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=195023,CODECS="mp4a.40.5", AUDIO="audio-lo"
lo/prog_index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=260000,CODECS="avc1.42e01e,mp4a.40.2", AUDIO="audio-lo"
hi/prog_index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=591680,CODECS="mp4a.40.2, avc1.64001e", AUDIO="audio-hi"
lo/prog_index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=650000,CODECS="avc1.42e01e,mp4a.40.2", AUDIO="audio-hi"
hi/prog_index.m3u8
Combine Groups and Single Options
- 플레이리스트에 그룹과 단일 스트림을 모두 가질 수 있음.
- 이런 케이스는 종종 동일 오디오를 사용하는 여러 카메라의 각도가 존재할 때 사용
- 비디오 스트림에 대한 그룹을 만든 다음 단일 오디오 스트림을 선언.
- 아래 예제는 3개의 카메라 각도와 단일 오디오 스트림이 존재하는 예제.
#EXTM3U
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle1",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle2",AUTOSELECT=YES,DEFAULT=NO, URI="Angle2/500kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle3",AUTOSELECT=YES,DEFAULT=NO, URI="Angle3/500kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="en",NAME="English",AUTOSELECT=YES, DEFAULT=YES,URI="eng/prog_index.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=754857,CODECS="mp4a.40.2,avc1.4d401e", VIDEO="500kbs",AUDIO="aac"
Angle1/500kbs/prog_index.m3u8
- 서로 다른 비트전송율에 대해 서로 다른 스트림을 제공하기 위해 각기 다른 비디오 그룹 ID가 필요.
#EXTM3U
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="200kbs",NAME="Angle1",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="200kbs",NAME="Angle2",AUTOSELECT=YES,DEFAULT=NO, URI="Angle2/200kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="200kbs",NAME="Angle3",AUTOSELECT=YES,DEFAULT=NO, URI="Angle3/200kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle1",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle2",AUTOSELECT=YES,DEFAULT=NO, URI="Angle2/500kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle3",AUTOSELECT=YES,DEFAULT=NO, URI="Angle3/500kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="en",NAME="English",AUTOSELECT=YES, DEFAULT=YES,URI="eng/prog_index.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=300000,CODECS="mp4a.40.2,avc1.4d401e", VIDEO="200kbs",AUDIO="aac"
Angle1/200kbs/prog_index.m3u
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=754857,CODECS="mp4a.40.2,avc1.4d401e", VIDEO="500kbs",AUDIO="aac"
Angle1/500kbs/prog_index.m3u8
'apple > iOS, Documentation' 카테고리의 다른 글
[HLS] Video on Demand playlist construction (0) | 2024.12.05 |
---|---|
[HLS] Incorporating Ads into a Playlist (0) | 2024.12.05 |
Swift Mixin and Trait (1) | 2024.11.18 |
[Swift] Timer + RunLoop, backgroundQueue (swift-corelibs-foundation) (3) | 2024.10.15 |
[Swift] NSCache (swift-corelibs-foundation) (9) | 2024.10.11 |