HLS과 DASH의 개념과 차이점
HLS와 DASH의 개념과 차이점
1) HLS (HTTP Live Streaming)
1-1. 정의
- Apple이 개발한 HTTP 기반 적응형 스트리밍(ABR) 프로토콜
1-2. 특징
- ABR(Adaptive Bitrate) 지원
- 전송은 HTTP/TCP 기반
1-3. 작동 방식 (Master Playlist → Media Playlist → Segment)
- 플레이어는 Master Playlist(.m3u8)를 가져온다.
- Master에 있는 Variant Stream(품질 후보) 중 하나를 선택한다.
- 선택된 Variant가 가리키는 Media Playlist(.m3u8)를 가져온다.
- Media Playlist에 나열된 Segment를 순서대로 다운로드하여 재생한다.
- LIVE일 경우 playlist를 주기적으로 재요청(reload)해서 새 세그먼트를 따라간다.
1-4. 구성 요소 (핵심 구조: .m3u8 과 Segment의 관계)
(A) Playlist: .m3u8
-
Master Playlist (Variant 선택)
- 여러 품질(예: 360p/480p/720p …)의 Variant 목록 포함
- 각 Variant는 “해당 품질의 Media Playlist URL”을 가리킴
-
Media Playlist (Segment 목록)
- 각 Segment의 재생 길이와 Segment URI가 순서대로 나열됨
- LIVE일 경우 계속 갱신되며, 플레이어는 이를 재요청해서 따라감
비유: Master Playlist = 메뉴판(품질별 코스), Media Playlist = 선택한 코스의 요리 순서표(세그먼트 목록)
(B) Media Segment
-
.ts (전통적)
- MPEG-2 TS 기반 세그먼트
-
.m4s (CMAF 기반, fMP4 계열)
- HLS도 fMP4/CMAF 세그먼트 사용 가능
- 보통 초기화 구간(init)을 별도로 두며, HLS에서는 EXT-X-MAP 등으로 연결함
1-5. ABR(화질 자동 조정)
- 플레이어가 다운로드 속도/버퍼량/리버퍼링 위험을 계산하여 다음 세그먼트 요청 전에 더 안정적인 Variant로 전환
- 전환 단위는 보통 세그먼트 경계
2) DASH (Dynamic Adaptive Streaming over HTTP, MPEG-DASH)
2-1. 정의
- ISO/IEC 국제 표준(MPEG-DASH) 기반의 HTTP 적응형 스트리밍 기술
2-2. 특징
- HTTP/TCP 기반
- 다양한 코덱/디바이스/플레이어 생태계에서 활용
2-3. 작동 방식 (MPD → Representation → Segment)
- 플레이어는 MPD(Manifest, .mpd)를 가져온다.
- MPD를 파싱하여 트랙/품질 정보를 해석하고, 각 트랙에서 적절한 Representation을 선택한다.
- 선택된 Representation의 주소 규칙(또는 목록)에 따라 Segment(.m4s)를 순차 다운로드하여 재생한다.
2-4. 구성 요소
(A) MPD (.mpd)
- Period: 시간 구간(라이브/광고/챕터 등으로 분할 가능)
- AdaptationSet: 트랙 묶음(비디오/오디오/자막 등)
- Representation: 같은 트랙 내의 품질 버전(예: 240p/480p/1080p)
(B) Segment (.m4s 중심, fMP4)
- Initialization Segment: 코덱 설정/트랙 메타데이터 등 디코더 준비물
- Media Segment(.m4s): 실제 재생 데이터 조각
-
MPD에서 세그먼트 주소를 제공하는 방식 예:
- SegmentList: 세그먼트 URL을 목록으로 제공
- SegmentTemplate: seg_$Number$.m4s 같은 패턴 + duration/timeline로 URL 생성
2-5. ABR(화질 자동 조정)
- 같은 AdaptationSet(예: 비디오) 안에서 Representation을 교체하는 것이 ABR
- 전환 단위는 보통 세그먼트 경계
3) HLS vs DASH 차이점
| 구분 | HLS | DASH(MPEG-DASH) |
|---|---|---|
| Standard | Apple 주도(사양은 IETF RFC 문서로 정리됨) | ISO/IEC 국제 표준 |
| manifest | .m3u8 (텍스트 플레이리스트: Master/Media 분리) | .mpd (XML: Period/AdaptationSet/Representation 계층) |
| Segment Container | 전통: .ts, 현대: fMP4/CMAF(.m4s)도 가능 | 주로 fMP4(.m4s) 기반 (init + media segments) |
| ABR | 보통 세그먼트 경계에서 Variant(Media Playlist) 전환 | 보통 세그먼트 경계에서 Representation 전환 |
| 브라우저/플랫폼 | Safari/iOS에서 네이티브 지원이 강한 편 | 브라우저에서는 보통 MSE 기반 플레이어(dash.js 등)로 재생 |
| 실무 | CMAF(fMP4) 세그먼트를 공용으로 두고, HLS는 m3u8 / DASH는 mpd를 따로 제공하는 방식이 흔함 | |
3-1. 실무 선택
- iOS/Safari 네이티브 호환이 필수면: HLS는 사실상 필수 축
- 표준 기반/플레이어 생태계/확장성 중심이면: DASH 채택이 자연스러움
- 대부분 서비스는 CMAF 세그먼트 공용 + (m3u8, mpd) 동시 제공으로 양쪽 커버
Reference
- DASH MPD Example - https://docs.aws.amazon.com/mediatailor/latest/ug/manifest-dash-example.html
- MPEG-DASH (Dynamic Adaptive Streaming over HTTP) - https://bitmovin.com/blog/dynamic-adaptive-streaming-http-mpeg-dash/
- ISO/IEC 23009-1:2022 - https://www.iso.org/standard/83314.html
- DASH-IF implementation guidelines: restricted timing model - https://dashif.org/Guidelines-TimingModel/
- Structure of a MPEG-DASH MPD - https://ottverse.com/structure-of-an-mpeg-dash-mpd
댓글
댓글 쓰기