M3U8 파일은 동영상이 아니라 UTF-8로 인코딩된 텍스트 재생목록입니다. HTTP Live Streaming(HLS)에서 플레이어가 어떤 미디어 조각(세그먼트)과 다른 재생목록을 어떤 순서로 요청할지 알려 줍니다. 따라서 .m3u8 파일 하나만 저장했다고 해서 전체 영상이 저장되는 것은 아닙니다.
라이브 방송, 브라우저의 네트워크 요청, Windows 동영상 다운로드 과정에서 M3U8 링크를 볼 수 있습니다. 구조를 알면 재생 오류, 화질 선택, 다운로드 실패 원인을 파악하기가 쉬워집니다.
M3U8 파일 안에는 무엇이 있나요?
메모장으로 열어 보면 다음과 같은 미디어 재생목록이 나타날 수 있습니다.
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:6.0,
segment0.ts
#EXTINF:5.2,
segment1.ts
#EXT-X-ENDLIST
#EXTM3U: 확장 M3U 재생목록을 표시합니다.#EXT-X-VERSION:3: HLS 호환성 버전이며 영상 화질을 의미하지 않습니다.#EXT-X-TARGETDURATION:6: 세그먼트의 목표 최대 길이(초)입니다.#EXT-X-MEDIA-SEQUENCE:0: 첫 번째 세그먼트의 순번입니다.#EXTINF:6.0,: 다음 세그먼트의 재생 시간입니다.segment0.ts: 실제 미디어 위치입니다. 상대 경로는 원래 재생목록 URL을 기준으로 해석합니다.#EXT-X-ENDLIST: 더 이상 세그먼트를 추가하지 않는다는 의미입니다. 이 태그가 없다는 이유만으로 라이브 방송이라고 단정할 수는 없습니다.
M3U8의 8은 UTF-8을 뜻합니다. 영상 코덱 이름이 아닙니다. 예시의 .ts는 MPEG-2 Transport Stream 조각이지만, 최신 HLS는 fMP4(.m4s) 세그먼트도 사용합니다. 재생목록은 영상 파일의 ‘목차’와 같습니다.
마스터 재생목록과 미디어 재생목록
| 항목 | 마스터 재생목록 | 미디어 재생목록 |
|---|---|---|
| 담긴 정보 | 화질·오디오 등의 대체 재생목록 | 실제 미디어 세그먼트 |
| 대표 태그 | #EXT-X-STREAM-INF |
#EXTINF |
| 역할 | 사용할 스트림 선택 | 세그먼트 순서대로 재생 |
마스터 재생목록 예시:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=900000,RESOLUTION=640x360
360p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3200000,RESOLUTION=1920x1080
1080p/index.m3u8
BANDWIDTH는 각 변형 스트림의 선언된 최대 비트레이트, RESOLUTION은 화면 크기를 나타냅니다. 플레이어는 상황에 맞는 변형 스트림을 선택한 다음 해당 미디어 재생목록을 불러옵니다. #EXT-X-MEDIA로 별도 오디오·자막을 지정하는 경우도 있습니다. 마스터 재생목록이 최고 화질 영상 자체를 포함하는 것은 아닙니다.
웹사이트가 M3U8과 HLS를 사용하는 이유
적응형 화질 조정: 네트워크 속도와 기기 성능에 따라 제공되는 화질 사이에서 전환하여 버퍼링을 줄일 수 있습니다.
일반적인 HTTP/CDN 전송: 큰 동영상 파일 전체를 기다리지 않고 작은 세그먼트를 웹 서버에서 차례로 받을 수 있습니다.
라이브 및 주문형 영상: 라이브 재생목록은 새 세그먼트를 반영하며, VOD 재생목록은 보통 완성된 영상을 설명합니다.
여러 트랙 지원: 영상 화질 외에 오디오 언어와 자막을 선택할 수 있습니다. HLS가 반드시 .ts만 쓰는 것은 아닙니다.
Windows에서 M3U8을 열거나 재생할 수 있나요?
네. 원본 스트림에 접근할 수 있고 플레이어가 지원한다면 가능합니다. VLC는 네트워크 스트림 기능으로 다양한 HLS 링크를 재생합니다. 브라우저에 따라 HLS를 직접 지원하거나 사이트의 JavaScript 플레이어가 필요합니다. 메모장에서 열면 영상 대신 텍스트가 보입니다.
다운로드한 .m3u8만으로 오프라인 재생이 잘 안 되는 이유는 영상 세그먼트가 원격 서버에 있기 때문입니다. 서명된 URL 만료, 인증 또는 쿠키 문제, 원래 URL에서 벗어난 상대 경로도 원인이 됩니다.
M3U8 스트림을 하나의 MP4로 저장하는 방법
파일 이름 끝을 .mp4로 바꾼다고 변환되는 것은 아닙니다. 도구가 실제 미디어를 가져와 호환되는 트랙을 MP4 컨테이너로 묶어야 합니다.
방법 1: FFmpeg 명령어
저장 권한이 있는 스트림에 대해 다음 명령으로 시작할 수 있습니다.
ffmpeg -i "https://example.com/path/master.m3u8" -c copy output.mp4
예시 URL을 실제로 접근 가능한 주소로 바꾸세요. -c copy는 호환되는 코덱을 재인코딩하지 않아 일반적으로 화질 손실이 없습니다. 다만 링크 만료, 세그먼트 누락, 암호화, 코덱 비호환, 라이브 스트림 상태에 따라 실패할 수 있습니다.
방법 2: Direct Link Downloader(Windows)
- 본인이 소유하거나 저장 허가를 받은 동영상의 M3U8 링크 또는 지원되는 영상 페이지 링크를 복사합니다.
- Windows에서 Direct Link Downloader를 실행하고 링크를 붙여 넣은 후 분석 결과를 확인합니다.
- 제공되는 화질과 저장 폴더를 선택해 다운로드를 시작합니다. 지원되는 스트림은 필요한 조각을 모아 재생 가능한 파일로 저장할 수 있으며 MP4 출력은 원본 호환성에 따라 달라집니다.
- 원본 파일을 삭제하기 전에 저장된 영상의 길이, 소리, 화면을 확인하세요.
Microsoft Store에서 Direct Link Downloader 보기 →
M3U8 저장 시 알아야 할 한계
- DRM 우회 불가:
#EXT-X-KEY가 있다고 무조건 DRM은 아니지만, 라이선스가 필요한 보호 영상의 DRM이나 접근 제한을 해제하는 기능은 아닙니다. - 만료된 주소: 서명 URL, 쿠키 또는 권한이 만료되면 원래 제공처에서 합법적으로 새 링크를 받아야 합니다.
- 원본 이상의 화질 불가: 720p만 제공되는 원본을 4K로 만들 수 없습니다.
- 완벽한 MP4 보장 불가: 오디오 트랙 누락, 끊긴 라이브 녹화, 손상된 세그먼트 또는 비호환 코덱 문제가 생길 수 있습니다.
공개되었거나 사용 권한이 있는 링크는 무료 M3U8 Inspector에서 먼저 확인할 수 있습니다. 민감한 서명 링크는 신뢰하지 않는 검사 서비스에 입력하지 마세요.
자주 묻는 질문
M3U8 파일은 바이러스인가요?
일반적으로 실행 파일이 아닌 일반 텍스트입니다. 그러나 신뢰할 수 없는 서버 링크를 포함할 수 있으므로 안전한 플레이어를 사용해야 합니다.
M3U와 M3U8의 차이는 무엇인가요?
둘 다 재생목록이지만 M3U8은 UTF-8 인코딩을 사용합니다. 일반 음악용 M3U가 항상 HLS를 의미하지는 않습니다.
M3U8과 MP4는 같은 것인가요?
아닙니다. M3U8은 미디어 위치를 알려 주는 텍스트이고, MP4는 실제 영상 및 오디오 트랙을 담는 컨테이너입니다.
M3U8과 TS 파일은 어떻게 다른가요?
M3U8은 목록이고 .ts는 MPEG-2 Transport Stream 데이터를 담습니다. 자세한 내용은 M3U8을 MP4로 저장하는 가이드를 참고하세요.
브라우저에서는 재생되는데 다운로드가 실패하는 이유는 무엇인가요?
사이트의 플레이어가 쿠키, 인증 헤더, 짧은 유효기간의 URL, DRM 또는 별도 오디오 트랙을 사용할 수 있기 때문입니다. 재생 가능 여부가 독립 다운로드 가능 여부를 보장하지는 않습니다.
라이브 HLS도 저장할 수 있나요?
권한이 있고 보호되지 않은 일부 라이브 스트림은 녹화할 수 있습니다. 하지만 재생목록에서 사라진 과거 세그먼트는 다시 받을 수 없을 수 있습니다.
핵심 정리
M3U8은 영화 파일이 아니라 HLS 동영상의 안내 지도입니다. 마스터 재생목록은 변형 스트림을, 미디어 재생목록은 실제 조각을 지정합니다. 오프라인 저장에는 접근 가능한 미디어와 적절한 출력 형식이 필요합니다. Windows의 지원 스트림에는 Direct Link Downloader를 사용할 수 있습니다.
소유하거나 다운로드 권한이 있는 콘텐츠만 저장하세요. DRM 및 접근 통제 우회는 지원하지 않습니다.