HLS와 DASH 비교: 스트리밍 프로토콜은 어떻게 작동할까요?
스트리밍이 등장하기 전에는 온라인으로 동영상을 보려면 파일 전체를 먼저 다운로드한 뒤 재생해야 했습니다. 처음 30초만 보고 싶어도 500 MB짜리 동영상 파일을 기기에 전부 받아야 했죠. 스트리밍 프로토콜은 바로 이 문제를 해결합니다. 영상을 작은 조각으로 나누고, 나머지를 다운로드하는 동안 먼저 받은 부분을 재생합니다.
세그먼트: 스트리밍의 기본 단위
가장 널리 쓰이는 HLS(Apple이 만든 HTTP Live Streaming)를 예로 들어 보겠습니다. 서버는 전체 동영상을 보통 2~10초 길이의 작은 파일인 세그먼트로 나누고, MPEG-TS 또는 fMP4 형식으로 묶습니다. 각 세그먼트의 순서와 주소를 기록한 재생목록 파일(.m3u8)도 생성합니다. 플레이어는 먼저 재생목록을 받은 다음 필요한 세그먼트를 다운로드합니다. 하나를 재생하고 다음 것을 가져오는 방식으로 대기 시간을 거의 없앱니다.
적응형 비트레이트: 네트워크가 느려도 재생이 끊기지 않는 이유
HLS와 DASH(Microsoft 등이 주도한 Dynamic Adaptive Streaming over HTTP)는 같은 동영상을 서로 다른 해상도와 비트레이트의 세그먼트로 여러 벌 준비합니다. 예를 들어 1080p, 720p, 480p 버전을 각각 만들고 마스터 재생목록에 모두 기록하는 식입니다. 플레이어는 다운로드 속도와 버퍼 상태를 실시간으로 확인합니다. 네트워크 상태가 좋으면 비트레이트를 높이고, 나빠지면 낮춰 재생을 이어갑니다. 이를 적응형 비트레이트 스트리밍(ABR)이라고 합니다. 지하철에서 동영상이 자동으로 흐릿해지는 것도 이 때문입니다.
m3u8 링크를 다운로드하면 자주 실패하는 이유
.m3u8 주소를 직접 다운로드하면 몇 KB 크기의 텍스트만 받게 됩니다. 동영상 자체가 아니라 재생목록이기 때문입니다. 실제 영상을 저장하려면 도구가 재생목록을 분석하고, 모든 세그먼트를 다운로드한 뒤 올바른 순서로 이어 붙여야 합니다. 그래서 많은 다운로더가 HLS 동영상을 지원하지 않거나 별도의 세그먼트 병합 단계를 요구합니다. TakeVid에는 세그먼트 감지와 자동 병합 기능이 내장되어 있어, 다운로드를 마치면 바로 재생할 수 있는 완성된 파일을 얻을 수 있습니다.
- HLS: Apple이 개발했으며 .m3u8 재생목록을 사용합니다. iOS/Safari에서 기본 지원하고 라이브와 주문형 동영상 모두 처리합니다.
- DASH: .mpd 매니페스트를 사용하는 개방형 표준으로, YouTube와 Netflix 등에서 대규모로 사용합니다.
- 두 방식 모두 일반 HTTP를 기반으로 하고 CDN과 잘 맞으며, 오늘날 스트리밍의 주류를 이루고 있습니다.