📖 Como usar
📝 Formato da lista
🛡️ Proxy
⚠️ Avisos técnicos
🌐 Fontes públicas
1. URL Manual: cole qualquer link M3U8/HLS no campo da esquerda e clique Tocar.
2. Lista de canais: hospede um arquivo
canais.txt no mesmo repositório do GitHub Pages que esta página, e ele aparece automaticamente na lista. Edite no GitHub e a próxima recarga já reflete.
3. Lista externa: pode apontar para qualquer URL pública — incluindo listas M3U do iptv-org (ver aba Fontes públicas).
Formato simples (recomendado): um canal por linha, separado por
|:
# Lista de canais IPTV # Formato: PAIS|NOME|URL # Linhas comecando com # sao ignoradas AR|Telefe|http://190.104.226.30/Live/870787012c00961adaf9b2304d704b57/telefe_720.m3u8 AR|TV Publica|https://...m3u8 BR|TV Brasil|https://...m3u8 US|NASA TV|https://...m3u8
Formato M3U padrão: também é aceito automaticamente. Se a primeira linha começar com
#EXTM3U, o parser usa o padrão M3U/M3U8 (com #EXTINF + URL).
Códigos de país: use ISO-3166 alpha-2 (AR, BR, US, UK, ES, MX, CL, UY...). A bandeira aparece automaticamente.
Para que serve: resolve dois problemas — CORS (quando o servidor IPTV não envia
Access-Control-Allow-Origin) e mixed content (streams HTTP em página HTTPS).
Como funciona: um Cloudflare Worker baixa o stream, adiciona os headers CORS, reescreve as URLs internas do manifest M3U8 (master → variants → segmentos .ts), e devolve tudo via HTTPS.
⚠ Custo de banda: 1h de vídeo HD ≈ 1GB transitando pelo Worker. O free tier do Cloudflare é 100k requests/dia (cada chunk .ts é 1 request, vídeo de 6s/chunk ≈ 600 requests/h). Use para sessões eventuais, não 24/7.
Como hospedar (5 minutos):
- Crie conta gratuita em
cloudflare.com - Vá em Workers & Pages → Create → Hello World
- Dê um nome (ex:
hls-proxy) e clique Deploy - Clique em Edit code e cole o conteúdo de
hls-proxy-worker.js - Clique Save and Deploy
- Copie a URL gerada (algo como
https://hls-proxy.SEU-USUARIO.workers.dev) - Cole no campo URL do Cloudflare Worker aqui na esquerda
- Marque Usar proxy e teste tocar o canal HTTP
Restringir o Worker: abra
hls-proxy-worker.js e troque ALLOWED_ORIGINS = ['*'] por ['https://rmayormartins.github.io'] para evitar que outros usem seu Worker.
⚠ Limitações: não resolve geo-block (servidor IPTV vê o IP do datacenter Cloudflare, que provavelmente não é o país certo). Não resolve DRM (streams criptografados com chave externa). Para geo-block use VPN no seu lado.
⚠ HTTPS / HTTP (mixed content): páginas servidas via
https:// (caso do GitHub Pages) não conseguem tocar streams http://. O navegador bloqueia. Soluções: (1) use streams https://, (2) abra esta página localmente com file://, (3) hospede em servidor HTTP próprio.
⚠ CORS: servidores IPTV precisam enviar header
Access-Control-Allow-Origin para o HLS.js conseguir ler os segmentos. Streams curados (iptv-org, broadcasters oficiais) costumam ter CORS aberto. IPs aleatórios geralmente não — vão dar erro de "manifest fetch".
⚠ Streams instáveis: muitos endpoints IPTV mudam de IP, caem ou expiram tokens. Se um canal não toca hoje, amanhã pode tocar. Não é problema do player.
Safari: reproduz HLS nativamente, sem precisar do HLS.js. Já é tratado pelo código automaticamente.
iptv-org é o repositório comunitário mais conhecido, com listas M3U organizadas por país, idioma, categoria. Conteúdo público e gratuito.
Argentina:
Brasil:
Todos os países:
https://iptv-org.github.io/iptv/countries/ar.m3uBrasil:
https://iptv-org.github.io/iptv/countries/br.m3uTodos os países:
https://iptv-org.github.io/iptv/index.m3u
Cole qualquer uma dessas URLs no campo Fonte da Lista e clique Recarregar. A lista é parseada e os canais aparecem agrupados.
Sobre o link Telefe que você passou: é um endpoint não oficial em IP fixo (
190.104.226.30). Pode funcionar localmente mas não vai tocar em GitHub Pages por ser HTTP. Para Telefe oficial, busque em iptv-org/ar.m3u.