📁 File6. 스트리밍📖 개요

06 — Streaming

이 챕터가 답하는 질문: 비디오를 끊김 없이 보내려면 무엇이 필요한가? 레이어: ⑤ 변환 (Transformation) — 03-media-video가 만든 인코딩 결과를 어떻게 전달할지의 문제 작성: 2026-05-10


한 문장 답 (Pyramid Top)

스트리밍은 **“하나의 비디오를 N개의 작은 조각(segment)으로 자르고, 그 조각들의 목록(manifest)을 플레이어가 매 순간 골라 받게 만드는 일”**이다. 이 한 문장 안에 ABR·HLS·DASH·CMAF·LL·DRM이 모두 들어 있다 — 무엇을 자르고, 어떻게 목록을 표현하고, 누가 키를 쥐는가.


Why — 왜 별도 챕터인가

03-media-video까지의 결정(코덱·해상도·HDR)이 끝나도, 비디오 한 편을 인터넷으로 매끄럽게 전달하는 문제는 따로 풀어야 한다. 이유는 셋이다:

  1. 네트워크는 변동한다 — Wi-Fi 80Mbps에서 LTE 2Mbps로 떨어지는 순간 1080p는 멈춘다. 그래서 ABR(Adaptive Bitrate).
  2. 디바이스는 다양하다 — iOS Safari는 HLS만 native 재생, Chrome은 MSE(DASH도 가능). 그래서 HLS·DASH·CMAF의 3중 표준.
  3. 콘텐츠는 보호받아야 한다 — 4K HDR 원본을 그대로 흘릴 수는 없다. 그래서 DRM.

이 세 가지가 한 챕터로 묶이는 이유: 하나라도 빠지면 나머지가 무의미하다. ABR 없는 HLS는 모바일에서 끊기고, DRM 없는 CMAF는 콘텐츠가 새고, 매니페스트 없는 ABR은 그냥 이론이다.


How — 9개 파일로 어떻게 분해했나

#파일핵심 질문비고
101-abr-theory.md왜 비트레이트를 바꾸나? 어떤 알고리즘이?throughput vs buffer (BBA/BOLA), QoE
202-hls.mdApple의 표준은 어떻게 생겼나?m3u8, Master/Media, TS vs fMP4, 키 회전, 자막
303-mpeg-dash.mdDASH는 HLS와 무엇이 다른가?MPD XML, Period/AdaptationSet/Representation, SegmentTemplate
404-cmaf.mdHLS와 DASH를 합칠 수 있나?fMP4 표준화, Common Encryption (CENC)
505-low-latency.md30초→3초로 줄일 수 있나?LL-HLS partial segment, LL-DASH chunked CMAF, vs WebRTC
606-segmentation-and-manifest.md세그먼트는 몇 초가 정답인가?2/4/6/10s trade-off, GOP/IDR 정렬, Discontinuity
707-drm.md누가 키를 쥐고 누가 풀어주나?Widevine L1/L2/L3, FairPlay, PlayReady, EME/CDM
808-player-engines.md어떤 플레이어를 쓰나?hls.js, Shaka, Video.js, ExoPlayer, AVPlayer

What — 한 장 비교 (HLS vs DASH vs CMAF vs WebRTC)

HLSMPEG-DASHCMAFWebRTC
표준화 주체Apple (RFC 8216)MPEG / ISO/IEC 23009-1MPEG / ISO/IEC 23000-19W3C / IETF
매니페스트.m3u8 (텍스트).mpd (XML)(HLS 또는 DASH 사용)SDP (시그널링)
컨테이너MPEG-TS or fMP4fMP4 (보통)fMP4 (강제)RTP
세그먼트 길이6초 (전통) / 0.2~1초 (LL)2~4초 / 0.2초 (LL)동일패킷 단위
지연 (live)2030s / 25s (LL)630s / 25s (LL)동일0.1~0.5s
DRMFairPlay (CBCS) + Widevine/PR(CBCS via CMAF)Widevine, PlayReady (CENC/CBCS)CENC + CBCS 통합(E2EE는 별도)
iOS SafariNative ✅MSE 미지원 ❌HLS 형태로 OK
Android Chromehls.js로 polyfillShaka/dash.js 로 native동일
사용처VOD/Live 일반유럽 방송·OTTVOD/Live 차세대화상회의·라이브 인터랙션

이 표 한 줄씩이 다음 8개 파일의 한 단원으로 풀린다.


What-if — 잘못 잡으면 어떻게 깨지는가

함정증상어디서
세그먼트 GOP 미정렬비트레이트 전환 시 깜빡임/멈춤06-segmentation-and-manifest.md
HLS only + Android에서 hls.js 빠짐”재생 시작 안 됨”02-hls.md, 08-player-engines.md
CENC/CBCS 혼동iOS는 안 되고 Chrome만 됨04-cmaf.md, 07-drm.md
매니페스트만 보호하고 segment를 안 보호콘텐츠 유출07-drm.md
ABR threshold 잘못1080p ↔ 360p 진동(oscillation)01-abr-theory.md
LL-HLS partial 미지원 플레이어한 사용자만 6초 지연05-low-latency.md

Insight — 흥미로운 한 줄

**“HLS는 Apple이 2009년에 단지 iPhone 3GS의 Wi-Fi/3G 전환 끊김을 풀려고 만든 것”**이고, 그게 지금 전 세계 OTT의 기본 표준이 되었다. **“DASH는 그것이 너무 Apple-specific 해 보여서 MPEG가 ISO 표준으로 다시 만든 것”**이다. **“CMAF는 그 둘이 사실은 같은 fMP4를 쓸 수 있다는 것”**을 확인한 합의다. 표준의 역사는 항상 (a) 한 회사가 먼저 만들고 → (b) 표준화 기구가 따라잡고 → (c) 둘이 합쳐지는 패턴이다.


한 단락 요약

**스트리밍은 “비디오를 잘라 목록으로 만든 뒤 플레이어가 그 목록에서 매 순간 적절한 조각을 고르게 하는 시스템”**이다. ABR은 어떻게 고르는가, HLS/DASH/CMAF는 목록을 어떻게 표현하는가, DRM은 누가 풀어주는가, 플레이어 엔진은 그 목록을 어떻게 해석하는가를 다룬다. 이 챕터의 9개 파일은 같은 문제를 8개 단면으로 본다.