티스토리 뷰

 

HLS(HTTP Live Streaming)는 일반적으로 미디어 세그먼트 파일 이라고하는 일련의 작은 파일로 오디오 및 비디오를 보냅니다.

인덱스 파일 또는 재생 목록은 미디어 세그먼트 파일의 URL을 순서대로 나열한 내용입니다.

HLS 용 인덱스 파일은 MP3 재생 목록에 사용되는 M3U 형식의 확장 인 M3U8 재생 목록으로 저장됩니다.

클라이언트에서는 순서대로 엑세스하여 인덱스 파일의 URL을 요청합니다.

 

HLS를 하기 위해서는 용도에 맞게 재생 목록을 만들어 주어야 합니다.

기본적인 4가지 재생 목록에 대해 정리해 보았습니다.

 

 

Master Playlist

동일한 컨텐츠에 대해 다른 인코딩 버전을 제공하기 위한 재생 목록입니다.

 

Master Playlist에 명시된 스트림은 특정 비트 전송률에 따라 변형된 재생 목록입니다.

클라이언트는 측정된 네트워크 비트 전송률에 따라 가장 적합한 스트림으로 전환합니다.

이를 통해 플레이어는 재생 중단을 최소화하여 사용자에게 좋은 스트리밍 환경을 제공합니다.

 

 

 

 

아래 예시는 비트 전송률에 따라 5가지로 변형된 재생 목록을 정의한 내용입니다.

#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 파일임을 나타냅니다. 이 유형의 파일은 첫 번째 행의 태그를 EXTM3U로 변경하여 기본 M3U 파일과 구별됩니다. 모든 HLS 재생 목록은이 태그로 시작해야합니다.

 

EXT-X-STREAM-INF

재생 목록 파일의 다음 URL이 다른 재생 목록 파일을 식별 함을 나타냅니다.

EXT-X-STREAM-INF태그는 다음과 같은 매개 변수가 있습니다.

  • BANDWIDTH (필수)

    각 미디어 파일에 대한 전체 비트 전송률의 상한을 초 단위로 나타낸 정수입니다.

    상한값은 재생 목록에 표시되거나 표시 될 컨테이너 오버 헤드를 포함하도록 계산됩니다.

  • AVERAGE-BANDWIDTH (선택이지만 권장)

    변형 스트림의 평균 비트 전송률을 나타내는 정수입니다.

  • FRAME-RATE (선택이지만 권장)

    변형 스트림의 최대 프레임 속도를 설명하는 부동 소수점 값 입니다.

  • HDCP-LEVEL (선택 사항)

    사용 된 암호화 유형을 나타냅니다. 유효한 값은 TYPE-0및 NONE입니다. TYPE-0출력이 HDCP에 의해 보호되지 않으면 스트림이 재생되지 않을 경우 사용하십시오 .

  • RESOLUTION (선택이지만 권장)

    재생 목록의 모든 비디오를 표시 할 선택적 표시 크기 크기 (픽셀)입니다. 이 매개 변수는 비디오를 포함하는 모든 스트림에 포함되어야합니다.

  • VIDEO-RANGE (인코딩에 따라 필요)

    유효한 값이 SDR또는 인 문자열 PQ. 전송 특성 코드 1, 16 또는 18을 지정하지 않으면이 매개 변수를 생략해야합니다.

  • CODECS (선택이지만 권장)

    미디어 세그먼트의 미디어 샘플 유형을 명시합니다.

    각 유형은 쉼표로 구분된 문자열로 설정합니다.

    이 속성은 선택이지만 거의 필수로 명시해야 합니다. 이 속성을 통해 클라이언트에서 오디오 전용과 오디오 및 비디오를 모두 포함하는 구분할 수 있습니다.

 


Live Playlist

라이브 세션에서는 새 미디어 파일이 생성되고 사용 가능하게 될 때, 파일에서 미디어 URI를 제거하여 인덱스 파일을 업데이트 합니다.

EXT-X-ENDLIST 태그가 Live Playlist에 없으므로 새 미디어 파일이 사용 가능해지면 인덱스 파일에 추가됨을 나타냅니다.

 

아래 예시는 세션 시작시 나타나는 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 파일임을 나타냅니다. 이 유형의 파일은 첫 번째 행의 태그를 EXTM3U로 변경하여 기본 M3U 파일과 구별됩니다. 모든 HLS 재생 목록은이 태그로 시작해야합니다.

 

EXT-X-TARGETDURATION

미디어 파일 duration의 최대값을 명시합니다.

 

EXT-X-VERSION

재생 목록 파일의 호환 버전을 나타냅니다.

호환 버전에 따라 재생 목록에 사용할 수 있는 태그 종류가 달라지는 것 같습니다...

예를 들어 EXTINF 태그를 사용하려면 최소 버전은 3이고, EXT-X-I-FRAME-STREAM-INF 태그를 사용하려면 최소 4 버전이 되야 합니다.

문서에서 자세한 내용을 확인할 수 있습니다.

 

EXT-X-MEDIA-SEQUENCE

재생 목록 파일에 나타나는 첫 번째 URL의 시퀀스 번호를 나타냅니다.

재생 목록의 각 미디어 파일 URL에는 고유 한 정수 시퀀스 번호가 있습니다. URL의 시퀀스 번호가 앞에 오는 URL의 시퀀스 번호보다 1만큼 높습니다. 미디어 시퀀스 번호는 파일 이름과 관련이 없습니다.

 

재생 목록의 순서대로 재생 목록 파일에서 미디어 URI를 제거되며, 제거될 때마다 EXT-X-MEDIA-SEQUENCE 태그 값은 1씩 증가해야 합니다. 런 유형의 세션은 Live 방송에 적합합니다.

 

EXTINF

뒤에 오는 URL로 식별되는 미디어 파일을 설명하는 레코드 마커입니다.

각 미디어 파일 URL 앞에는 EXTINF 태그가 있어야합니다 . 이 태그에는 미디어 세그먼트의 Duration을 초 단위로 지정하는 정수 또는 부동 소수점 타입의 속성이 명시됩니다.

이 값은 TARGETDURATION보다 작거나 같아야합니다.

 

다음 예시는 미디어 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은 제거되고, 새로 생성된 미디어 URI는 추가됩니다.

미디어 URI가 제거됨에 따라 #EXT-X-MEDIA-SEQUENCE 태그의 값은 증가합니다.

#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

 

 


Video on Demand(VOD) Playlist

주문형 비디오(VOD) 세션의 경우, 프리젠테이션의 전체 Duration이 명시되어 있습니다.

인덱스 파일에 생성된 모든 미디어 파일의 전체 URI 목록을 포함하고 있습니다.

 

#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
http://example.com/movie1/fileSequenceA.ts    // 절대 경로
#EXTINF:10.0,
http://example.com/movie1/fileSequenceB.ts
#EXTINF:10.0,
http://example.com/movie1/fileSequenceC.ts
#EXTINF:9.0,
http://example.com/movie1/fileSequenceD.ts
#EXT-X-ENDLIST

 

새로운 보이는 태그에 대해서만 알아보겠습니다.

 

EXT-X-PLAYLIST-TYPE

전체 재생 목록 파일에 적용되는 변경 정보를 제공합니다. 이 태그의 값으로는 VOD 또는 EVENT가 있습니다.

태그의 값이 VOD인 경우 재생 목록의 파일이 변경되지 않아야 하고, 값이 EVENT인 경우 서버의 재생 목록 파일의 일부를 변경하거나 삭제하지 않아야 합니다.(추가는 될 수 있음)

 

EXT-X-ENDLIST

더 이상 미디어 파일이 재생 목록 파일에 추가되지 않음을 나타냅니다.

 

 

아래 예시는 상대 경로를 사용하여 미디어 재생 목록을 나타냅니다.

상대 경로를 사용하면 이식성이 좋고, 텍스트도 적어서 알아보기 쉽습니다.

#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
fileSequenceA.ts    // 상대 경로
#EXTINF:10.0,
fileSequenceB.ts
#EXTINF:10.0,
fileSequenceC.ts
#EXTINF:9.0,
fileSequenceD.ts
#EXT-X-ENDLIST

 

 


Event Playlist

이벤트 재생 목록은 EXT-X-PLAYLIST-TYPE 태그 값이 EVENT로 지정됩니다.

처음에는 EXT-X-ENDLIST태그 가 없으므로 새 미디어 파일이 재생 목록에 추가됨을 나타냅니다.

 

아래 예시는 세션 시작시 나타나는 이벤트 재생 목록입니다.

#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

 

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

 

이벤트 재생 목록은 일반적으로 콘서트, 스포츠 이벤트와 같이 이벤트의 특정 지점을 시간과 상관없이 볼수 있도록 해야하는 경우에 사용됩니다.

 

 


Reference

 

Example Playlists for HTTP Live Streaming | Apple Developer Documentation

Example Playlists for HTTP Live Streaming View and compare playlists for different HLS applications. OverviewHTTP Live Streaming sends audio and video as a series of small files, typically of about 6 seconds duration, called media segment files. An index f

developer.apple.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함