M3U, Xtream Codes, EPG — 용어의 의미와 내가 가진 것이 무엇인지
누군가 링크와 비밀번호를 건네며 "이걸 IPTV 앱에 넣으세요"라고 말합니다. 그 다음부터는 대부분 용어의 문제입니다. 구독이 플레이어에게 전달되는 방식은 두 가지이고, 둘은 전혀 다르게 동작하며, 자신이 어느 쪽을 받았는지 아는 것만으로 그 앱이 무엇을 보여줄 수 있고 무엇을 보여줄 수 없는지 거의 다 설명됩니다.
- 재생목록은 텍스트 파일
- M3U는 채널 이름과 스트림 주소의 목록입니다. 그 이상은 없습니다 — 가이드도, 카탈로그도 없습니다.
- 계정은 곧 API
- Xtream Codes는 앱이 채널·영화·시리즈·가이드·다시보기를 각각 별도로 조회할 수 있는 서버입니다.
- 둘 다 채널을 제공하지 않는다
- 둘 다 당신의 서비스 제공자 서버를 가리킬 뿐입니다. IPTV 앱은 메일 앱이 클라이언트인 것과 똑같이 하나의 클라이언트입니다.
IPTV는 서비스가 아니라 전달 방식이다
IPTV란 안테나, 위성 접시, 케이블 대신 일반 인터넷 연결로 전달되는 텔레비전을 뜻합니다. 정의는 그게 전부입니다. 누가 영상을 보내는지, 그럴 권리가 있는지, 요금을 내고 있는지는 아무것도 말해주지 않습니다. 자체 채널을 스트리밍하는 공영 방송사도, 수상한 재판매업자도 똑같은 기술을 씁니다.
IPTV 플레이어는 그 클라이언트 쪽입니다 — 주소를 받아 스트림을 열고 화면을 그리는 앱일 뿐입니다. 웹 브라우저에 자체 웹사이트가 없듯, 이 앱에도 자체 채널이 없습니다. 이 구분은 기억해 둘 가치가 있습니다. 합법적인 앱과 불법 복제 도구를 가르는 기준이 바로 이것이고, App Store에 콘텐츠가 하나도 들어있지 않은 플레이어들이 잔뜩 올라와 있는 이유도 이것이기 때문입니다.
헷갈리는 지점은, 구독을 플레이어에 전달하는 이 두 가지 방식의 기능 차이가 너무 커서 사람들이 아예 다른 제품이라고 착각한다는 것입니다. 그렇지 않습니다 — 같은 채널을 앱에게 서로 다른 방식으로 설명해 준 것뿐입니다.
M3U 재생목록 vs Xtream Codes 계정
서비스 제공자가 .m3u나 .m3u8로 끝나는 긴 URL을 줬다면 전자입니다. 서버 주소와 사용자 이름, 비밀번호를 줬다면 후자입니다.
| M3U 재생목록 | Xtream Codes 계정 | |
|---|---|---|
| 정체 | 채널과 스트림 URL을 나열한 텍스트 파일 | 콘텐츠 종류별로 앱이 조회하는 API |
| 라이브 채널 | 지원 — 밋밋한 단일 목록으로 | 지원 — 카테고리별로 정리되어 |
| 영화·시리즈 | 제공자가 같은 목록에 섞어 넣었을 때만 | 지원 — 시즌·에피소드를 갖춘 제대로 된 카탈로그로 |
| 프로그램 가이드 | 별도의 XMLTV URL이 주어졌을 때만 | 기본 내장, 채널별로 |
| 다시보기 / 재방송 | 지원 안 함 | 제공자가 지원하는 경우 |
| 업데이트 | 파일 전체를 다시 내려받음 | 바뀐 부분만 요청 |
| 인증 정보 | 보통 모든 스트림 URL에 박혀 있음 | 요청마다 전송되며 별도로 저장 가능 |
많은 제공자가 같은 구독에 대해 둘 다 제공합니다. 선택할 수 있다면 Xtream 계정을 추가하는 쪽이 낫습니다 — 수십만 개 이름이 나열된 밋밋한 목록이 아니라 가이드와 카탈로그를 구성할 수 있을 만큼 충분한 구조를 앱에 제공하기 때문입니다.
나머지 용어들
- EPG (XMLTV)
- 프로그램 가이드입니다 — 지금 무엇을 방송 중인지, 다음은 무엇인지, 오늘 아침엔 뭘 했는지. 흔히 수십 메가바이트에 달하는 별도의 XML 파일로 오며, 제공자가 설정한 식별자로 채널과 매칭되어야 합니다. 식별자가 서로 맞지 않으면 가이드가 채널 절반에는 나오고 나머지 절반에는 텅 비는 일이 벌어집니다.
- 다시보기 (아카이브, 재방송)
- 제공자가 일정 기간——보통 하루에서 일주일——채널을 녹화해 두어, 이미 방송된 프로그램도 처음부터 볼 수 있게 하는 기능입니다. 제공자가 채널별로 이를 켜 두었을 때만 존재하며, 어떤 플레이어도 이 기능을 임의로 추가할 수 없습니다.
- VOD
- 라이브 스트림이 아니라 개별 파일로 존재하는 영화와 시리즈입니다. Xtream 계정에서는 자체 메타데이터를 갖춘 별도의 섹션이고, M3U에서는 그냥 목록에 항목이 더 있는 것뿐입니다.
- 연결 제한
- 구독이 동시에 재생할 수 있는 스트림 수로, 서버에서 집계됩니다. 이를 초과하는 것이 채널이 갑자기 열리지 않는 가장 흔한 원인입니다 — 두 번째 "연결"이 이전 스트림을 아직 붙잡고 있는 자기 자신의 휴대폰인 경우도 포함해서요.
- 전송 스트림 (TS / HLS)
- 라이브 채널이 도착하는 두 가지 형태입니다. HLS는 세그먼트로 잘려 있어 불안정한 연결을 더 잘 견디고, 원시 TS는 더 빨리 시작하지만 관용도는 낮습니다. 제공자는 보통 둘 다 제공하며, 어느 쪽을 쓸지는 앱이 정하거나 사용자가 정합니다.
어떤 플레이어에든 구독 추가하기
표현은 앱마다 다르지만 순서는 항상 같습니다.
-
둘 중 무엇을 가졌는지 확인하기
긴 링크 하나면 재생목록입니다. 포트가 붙은 호스트 이름에 사용자 이름과 비밀번호가 따라오면 Xtream 계정입니다. 세부 정보가 미리 담긴 앱을 받았다면, 원본 정보를 따로 달라고 요청하세요. 그 플레이어를 반드시 써야 할 의무는 없습니다.
-
추가하고 첫 번째 가져오기가 끝날 때까지 기다리기
큰 목록은 시간이 좀 걸립니다 — 수만 개의 항목을 해석하고 저장해야 하니까요. 이는 한 번만 일어나는 일입니다. 여기서 진행률도 없이 앱이 멈춰버린다면, 파일 전체를 메모리로 불러오고 있는 것이고, 매번 똑같이 그럴 것입니다.
-
가이드가 따로 왔다면 연결하기
M3U라면 EPG는 따로 붙여넣는 두 번째 URL입니다. Xtream 계정이라면 이미 포함되어 있습니다.
-
다른 무엇보다 즐겨찾기부터 정리하기
십만 개 채널을 두 번씩 훑어보는 사람은 없습니다. 실제로 보는 20개 정도만 표시해 두면 그 목록이 비로소 쓸 만해지며, 들이는 시간 대비 가장 값진 5분일 것입니다.
-
카테고리마다 채널 하나씩 시험 재생해 보기
제공자 쪽에 카테고리 전체가 죽어 있는 경우가 흔합니다. 경기 도중이 아니라 지금 미리 알아두는 편이 낫습니다.
채널이 버퍼링되는 이유와 누가 고칠 수 있는지
IPTV의 버퍼링은 거의 앱 탓이 아닙니다. 라이브 스트림은 속도를 늦췄다가 따라잡는 능력 자체가 없습니다 — 소스가 보내는 속도 그대로 도착하며, 그 속도를 유지할 수 없으면 화면이 멈춥니다. 원인은 세 가지이고, 서로 구분할 수 있습니다.
채널 하나만 끊기고 나머지는 멀쩡하다면, 그 채널의 소스가 과부하 상태이거나 인코딩이 부실한 것입니다. 사용자 쪽에서 할 수 있는 일은 없고, 같은 채널의 다른 화질 옵션이 도움이 될 때는 있습니다. 모든 채널이 하루 중 같은 시간대에 끊긴다면, 제공자 서버가 피크 시간대에 포화 상태인 것입니다 — 가입자를 과도하게 받은 서비스에서 흔히 보이는 전형적인 저녁 문제입니다. 항상 모든 채널이 끊긴다면 자신의 연결, 특히 Wi-Fi를 살펴보세요. 혼잡한 2.4GHz 대역에서 공유기와 방 두 개만큼 떨어져 있는 휴대폰이, 대역폭 부족보다 훨씬 흔한 원인입니다.
버퍼를 크게 잡으면 불안정한 연결을 견디는 대신 채널을 바꿀 때 기다리는 시간이 길어지며, 애초에 데이터를 충분히 보내지 못하는 소스는 이걸로 구할 수 없습니다. 그리고 스트림이 1초쯤 열렸다가 바로 죽는다면, 그건 대개 버퍼링이 아니라 연결 제한 때문입니다 — 같은 계정에서 이미 다른 무언가가 재생 중인 것입니다.
구독을 마련했다면 플레이어에서 확인할 것들
- 거대한 목록에서도 버틴다
대형 제공자의 내보내기 목록은 수십만 항목에 달합니다 — 이 페이지를 검증할 때 쓴 목록은 701,017개였습니다. 목록을 메모리로 읽어들이는 플레이어는 가져오는 동안 멈추고, 그 이후로도 계속 느립니다. 데이터베이스로 스트리밍해 넣는 플레이어는 어떤 크기든 즉시 열립니다.
- 가이드가 채널 바로 옆에 있다
보려면 다른 화면으로 넘어가야 하는 프로그램 가이드는 결국 안 쓰게 되는 가이드입니다. 태블릿이나 Mac이라면 둘을 동시에 띄울 여유가 있습니다.
- 인증 정보가 제대로 저장된다
Xtream 스트림 URL에는 비밀번호가 그대로 박혀 있습니다. 그 URL을 데이터베이스에 그대로 기록하는 플레이어는 결국 비밀번호를 데이터베이스에 적어둔 셈입니다. 그건 키체인에 있어야 할 것입니다.
- 연결 제한을 존중한다
연결 하나짜리 계정에서 시청 중에 다운로드까지 하면, 둘 중 하나는 반드시 실패합니다. 이를 아는 플레이어는 충돌하는 대신 순서를 기다리게 만듭니다.
- 영화와 시리즈에서 이어보기가 된다
IPTV 카탈로그 안의 VOD도 다른 동영상과 똑같이 동작해야 합니다 — 어디까지 봤는지 기억하고, 다음 화는 탭 한 번이면 볼 수 있어야 합니다.
이 기능만 놓고 본 세 화면
자주 나오는 질문
IPTV 앱에는 채널이 딸려 있나요?
합법적인 앱이라면 그렇지 않고, 그럴 수도 없습니다. 그건 클라이언트일 뿐입니다 — 제공자로부터 구독을 가져오면 앱이 그걸 재생합니다. 채널이 처음부터 들어 있는 앱은 콘텐츠를 배포하고 있는 것이고, 이는 법적으로 완전히 다른 문제이며 좋은 신호인 경우는 거의 없습니다.
왜 몇몇 채널은 프로그램 가이드가 비어 있나요?
가이드는 제공자가 설정한 식별자로 채널과 매칭됩니다. 재생목록 안 채널의 식별자가 XMLTV 파일의 어떤 식별자와도 맞지 않으면, 그 채널에는 가이드가 뜨지 않습니다. 이건 제공자 쪽의 데이터 문제이며, 유일한 해결책은 제공자가 수정된 목록을 내놓는 것뿐입니다.
왜 다운로드를 시작하면 채널이 멈추나요?
구독이 거의 확실히 동시 연결 하나만 허용하는 것입니다. 재생과 다운로드로 연결이 두 개가 되니 하나는 밀려납니다. 제공자는 추가 연결을 판매하며, 일부 플레이어는 이 문제를 피하려고 자체 IPTV 다운로드를 연결 하나로 제한하기도 합니다.
휴대폰과 Mac에서 같은 구독을 동시에 쓸 수 있나요?
연결을 두 개 이상 허용하는 구독일 때만 가능합니다. 제한은 기기가 아니라 서버 쪽 계정 단위로 집계되므로, 연결 하나짜리 계정이라면 몇 대의 기기에 설정해 두었든 한 번에 화면 하나만 가능합니다.
이미 가지고 있는 구독으로 FoxDL이 하는 일
FoxDL은 어디까지나 클라이언트 쪽입니다. 자체 채널이나 영화, 스트림을 제공하거나 호스팅하지 않습니다 — 합법적으로 구독한 서비스를 사용자가 직접 추가합니다.
- M3U 재생목록과 Xtream Codes 계정 지원 — Xtream 계정이라면 카탈로그, 시즌, 에피소드, 이어보기까지 가능합니다.
- 제공자가 지원한다면 EPG와 다시보기까지.
- 제공자급 규모의 목록——485MB, 200만 채널짜리 재생목록도 최대 메모리 9MB로 약 2분 만에 가져옵니다. 카탈로그를 메모리로 불러오는 대신 곧바로 디스크로 파싱하고, 모든 화면이 데이터베이스에서 페이지 단위로 읽어오기 때문입니다.
- 인증 정보는 키체인에 저장됩니다. 비밀번호가 담긴 스트림 URL은 필요할 때만 생성되고 데이터베이스에는 절대 기록되지 않습니다.
- 연결 상태를 인지합니다 — IPTV 다운로드는 연결 하나로 제한되어 시청 중인 방송을 방해하지 않습니다.
- 목록 전체에 걸친 즐겨찾기, 검색, 최근 시청 목록.
무료: iPhone·iPad에서는 재생목록 또는 계정 첫 번째, Mac에서는 처음 두 개까지. Pro는 이 제한을 없애줍니다. 가격, 채널 구성, 서비스 안정성은 전적으로 해당 제공자의 몫이며 저희와는 무관합니다.
자주 묻는 질문
- M3U 재생목록을 FoxDL에 추가하려면 어떻게 하나요?
- Xtream Codes 계정을 추가하려면 어떻게 하나요?
- FoxDL은 EPG 편성표와 다시보기 TV를 보여주나요?
- FoxDL은 수백만 개 채널이 담긴 재생목록도 처리할 수 있나요?
- IPTV 채널이 버퍼링되거나 열리지 않는 이유는 무엇인가요?
- FoxDL이 직접 IPTV 채널이나 영화, 스트림을 제공하나요?