반응형
hls 동작원리를 보면 세종류 파일을 다운로드 받는데 m3u8(매니페스트), 플레이리스트파일(하위매니페스트), ts파일(세그먼트)이다.
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2000000,CODECS="mp4a.40.2, avc1.4d401f"
skiing-720p.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=375000,CODECS="mp4a.40.2, avc1.4d4015"
skiing-360p.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=750000,CODECS="mp4a.40.2, avc1.4d401e"
skiing-480p.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3500000,CODECS="mp4a.40.2, avc1.4d401e"
skiing-1080p.m3u8
첫번째는 m3u8이라는 매니페스트 파일이다. hls는 abs를 지원하기 때문에 서로다른 비트전송률에 해당하는 여러가지(3-7) 해상도의 미디어를 제공한다. 이 m3u8파일에는 각각의 비트율별 두번째 플레이 리스트 파일(인덱스파일)의 참조 링크가 리스트 되어있다.
리스트 중에서 비트율에 맞는 플레이 리스트 파일을 두번째로 다운받고
다운받은 플레이 리스트 파일에는 각 비트율에 해당하는 ts파일을 가리킨다.
예 ( skiing-480p.m3u8) :
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:9.97667,
file000.ts
#EXTINF:9.97667,
file001.ts
#EXTINF:9.97667,
file002.ts
#EXTINF:9.97667,
file003.ts
#EXTINF:9.97667,
file004.ts
ts파일이 세그먼트 파일로 오디오, 비디오 및 데이터를 함께 결합 되어 있는 파일이다. 실제적으로 스트리밍할 때 필요한 파일이다.
재생을 허용하기 전에 대기열에 세개의 세그먼트가 필요하다!!
각 비트율별세개의 세그먼트 파일을 만들고 그 세그먼트 파일을 참조링크로 리스트한 두번째 플레이리스트 파일과
각 비트율에 해당하는 플레이리스트를 참조한 메인 매니페스트 파일을 만들고 스트리밍 하는 방식이기 때문에 딜레이 문제가 발생한다.
다른 프로토콜에 비해서 hls의 권장 세그먼트 지속기간이 10초로 긴데 그 이유가 세그먼트가 부족한 경우에 다시 매니페스트 파일과 플레이 리스트 파일을 다운로드 해야되기 때문에 세그먼트 지속기간이 다른 프로토콜에 비해서 길다.
반응형
'# 03 > 프로토콜' 카테고리의 다른 글
Automated Objective and Subjective Evaluation of HTTP Adaptive Streaming Systems (0) | 2019.02.05 |
---|---|
MPEG DASH (0) | 2019.02.05 |
HDS (0) | 2019.02.05 |
MPEG DASH: A Technical Deep Dive and Look at What’s Next (0) | 2019.02.05 |
용어정리 (0) | 2019.02.05 |