스트림 HTTP Live Streaming

M3U8 / HLS

Apple이 만들었고, 모든 Apple 기기가 재생하지만, 그중 무엇도 저장은 못한다.

한줄 요약

.m3u8 파일은 동영상이 아니라 재생목록입니다 — 순서대로 가져와야 할 수천 개의 작은 조각을 나열한, 겨우 몇 킬로바이트짜리 텍스트입니다. 이 설계 덕분에 HLS는 모든 Apple 기기에서 흠잡을 데 없이 재생되지만, "이 파일 저장하기"를 누르면 텍스트 문서 하나가 나옵니다. 이걸 다운로드한다는 건 모든 조각을 일일이 가져와서 애초에 존재한 적 없던 파일을 새로 조립한다는 뜻입니다.

2026년 7월 30일

별도 앱 없이 열리는지

iPhone · iPad 열림
Mac 열림
FoxDL 열림

HLS는 Apple 자체 사양이라 Safari, AVPlayer, AirPlay까지 어디서나 최고 수준으로 지원됩니다. 시스템 어디에서도 지원하지 않는 건 라이브 스트림을 디스크 위의 파일로 바꾸는 일입니다. 재생하는 것과 보관하는 것은 완전히 다른 문제입니다.

핵심 정보

정식 명칭 HTTP Live Streaming; 재생목록 자체는 UTF-8로 된 M3U
종류 텍스트 재생목록 형태로 전달되는 스트리밍 프로토콜
확장자 .m3u8(재생목록), .ts나 .m4s(그 목록이 가리키는 조각들)
공개 2009년, Apple; 2017년 RFC 8216으로 표준화
일반적인 조각 길이 각 2~10초 — 한 시간짜리 영상이 수백에서 수천 개의 파일이 됨
마스터 재생목록과 미디어 재생목록 마스터는 화질 단계를 나열하고, 각 화질은 실제 조각들이 담긴 미디어 재생목록을 가리킴
조각 안의 영상 H.264나 HEVC, 드물게 AV1
라이브 스트림 재생목록이 몇 초마다 다시 불러와지며 방송이 계속되는 동안 계속 길어짐

책이 아니라 목차일 뿐

.m3u8을 텍스트 편집기로 열어보면 헤더 몇 줄, 매개변수 몇 개, 그리고 긴 주소 목록이 전부입니다. 그게 파일의 전부입니다. 진짜 동영상은 다른 곳에 있고, 각각 몇 초 분량으로 잘려서 서버에 수천 개의 개별 작은 파일로 놓여 있습니다.

플레이어는 이 목록을 읽고, 처음 몇 개 조각을 가져와서 재생을 시작한 다음, 계속 앞서서 미리 가져옵니다. 연결이 느려지면 마스터 재생목록에 나열된 더 낮은 화질의 버전 — 다른 비트레이트로 만들어진, 완전히 다른 조각 세트 — 으로 전환하고, 이걸 조각 사이의 경계에서 처리하기 때문에 화면이 멈추는 대신 화질만 바뀌는 것처럼 보입니다. 이 적응형 전환 능력이 바로 이 형식이 널리 쓰이게 된 이유입니다.

이는 사람들을 놀라게 하는 사실도 설명해 줍니다 — 손에 쥘 수 있는 단일 파일이라는 게 애초에 없다는 것입니다. 지금 보고 있는 그 영화는 어디에도 하나의 객체로서 존재하지 않습니다. 수천 개의 조각과 그걸 재생하는 방법을 담은 지침서, 그게 전부입니다.

저장하면 텍스트 파일이 나오는 이유

실제로 저장한 게 바로 그것이기 때문입니다. 브라우저는 사용자가 준 주소로 요청을 보냈고, 4킬로바이트짜리 재생목록을 받아서 디스크에 그대로 적었을 뿐입니다. 실제로 시청한 내용은 전부 저장 작업이 전혀 알지 못하는 수천 개의 개별 요청을 통해 도착한 것입니다.

HLS를 제대로 다운로드한다는 건 플레이어가 하는 일을 디스크에 대고 그대로 하는 것을 뜻합니다 — 재생목록을 읽고, 화질을 하나 고르고, 모든 조각을 순서대로 가져온 다음, 이걸 하나의 컨테이너로 이어 붙입니다. 이 마지막 단계를 재다중화라고 부릅니다 — 영상과 오디오는 재인코딩되지 않고, 그저 탐색이 가능하도록 제대로 된 인덱스를 갖춘 하나의 MP4로 다시 기록될 뿐입니다.

이걸 생각보다 어렵게 만드는 요소가 두 가지 있습니다. 조각의 주소는 대개 상대 경로이고 세션마다 바뀌기 때문에, 한 시간 전에 받아온 목록은 이미 죽어 있을 수 있습니다. 그리고 스트림이 재생목록에서 참조하는 키로 암호화되어 있는 경우가 흔한데, 그 키는 별도로 전달되고 재생 도중에도 계속 바뀝니다.

기기로 가져오는 법

보관할 권리가 있는 스트림에 한해서입니다 — 직접 녹화한 것, 본인 명의의 IPTV 구독, 방송사가 직접 다운로드를 제공하는 경우처럼요. 아래 내용은 그 원리가 어떻게 동작하는지에 대한 설명이지, 아무 데나 이걸 써도 된다는 허락이 아닙니다.

  1. 다운로드 엔진이 조각들을 처리하게 하기

    수천 개의 파일을 가져와서 재다중화하는 일, 이게 바로 FoxDL의 다운로더가 HLS 소스를 만났을 때 하는 작업입니다 — 재생목록을 따라가며 조각을 병렬로 끌어온 다음, 일반 파일처럼 탐색되는 MP4 하나를 만들어냅니다. 결국 손에 남는 건 조각들이 담긴 폴더가 아니라 파일 하나입니다.

  2. 직접 파일이 있다면 그걸 받기

    많은 사이트가 HLS와 일반적인 프로그레시브 MP4를 함께 제공합니다. MP4는 요청 한 번, 파일 하나로 끝나고 재조립이 필요 없습니다 — 선택할 수 있다면 언제나 더 나은 쪽입니다.

  3. 일부는 보관할 수 없다는 사실 받아들이기

    FairPlay나 Widevine 같은 DRM으로 보호된 스트림은 종단 간 암호화되어 있고 설계상 다운로드가 불가능합니다. 어떤 도구도 이걸 바꾸지 못하고, 바꿀 수 있다고 주장하는 도구는 뭔가에 대해 거짓말을 하고 있는 것입니다.

HLS 다운로드에서 흔히 잘못되는 지점

탐색 바가 없는 파일

재다중화 없이 조각을 그냥 이어 붙이기만 하면 인덱스 없는 파일이 만들어집니다. 처음부터만 재생되고 어디로도 이동할 수 없습니다. 재다중화가 이걸 고쳐주는 인덱스를 새로 씁니다.

끝나지 않는 라이브 스트림

라이브 재생목록에는 끝이 없습니다 — 계속 자라날 뿐입니다. 이걸 다운로드한다는 건 사실 녹화하는 것이고, 파일이 끝나서가 아니라 사용자가 멈춰야 끝납니다.

어제는 됐던 링크

재생목록 주소는 대개 서명이 걸려 있고 유효 시간이 정해져 있습니다. 오늘 아침에 저장해 둔 .m3u8이 오후가 되면 아무것도 가리키지 못하는 경우가 흔합니다.

자세히 보기 웹 브라우저는 못 하지만 다운로드 관리자는 하는 일 앱을 전환하면 전송이 멈추는 이유, 재개에 실제로 필요한 조건, 그리고 스트림이 파일이 되는 과정.

이 형식에 관한 질문

이 정보의 출처

관련 형식

이제 라이브러리 하나로 다 모을 수 있습니다.

무료로 다운로드할 수 있습니다. 계정도, 가입도, 어딘가에 넘겨줄 정보도 필요 없습니다.

다운로드 App Store