Se já ouviste o termo "M3U" mas as explicações que leste mergulharam logo em tipos MIME e atributos estendidos, é esta a versão que querias. Uma M3U é um ficheiro de texto simples a conter uma lista de URLs de media. É este o conceito todo. Tudo o resto é pormenor.

Este artigo destrincha o que está mesmo lá dentro, o que distingue "M3U" de "M3U8" e de "M3U estendida", e porque é que todos os fornecedores de IPTV usam o formato.

A M3U mais simples possível

Aqui está o formato todo em três linhas:

#EXTM3U
#EXTINF:-1,Big Buck Bunny
https://example.com/bunny.mp4

Um cabeçalho (#EXTM3U), uma entrada de canal (uma linha #EXTINF seguida do URL), pronto. Qualquer leitor de media que suporte M3U lê estas três linhas e propõe reproduzir "Big Buck Bunny". Podes gravar o exemplo de cima como test.m3u, dar duplo clique e o VLC reproduz. Não há compilador, codificação nem validador de esquema. É o equivalente, em formato de ficheiro, a uma lista de compras.

O que está mesmo dentro de #EXTINF

Numa playlist IPTV real, cada canal é mais parecido com isto:

#EXTINF:-1 tvg-id="bbc1.uk" tvg-logo="https://logos.example/bbc1.png" group-title="UK",BBC One HD
http://provider.example/live/abc123/index.m3u8

As peças:

  • -1 — a duração em segundos. Para canais em direto é sempre -1 (significa "desconhecida / ilimitada"). As entradas de VOD põem aqui uma duração real.
  • tvg-id — um identificador usado para emparelhar este canal com as suas entradas no guia eletrónico de programação. Se o ficheiro EPG listar <channel id="bbc1.uk">, o leitor IPTV sabe que aqueles dados pertencem a este canal.
  • tvg-logo — um URL para o logótipo do canal. Opcional; se faltar, o leitor mostra um marcador de lugar.
  • group-title — a categoria sob a qual este canal aparece no leitor. Nomes convencionais: "UK", "Desporto", "Filmes", "Notícias".
  • BBC One HD — tudo o que vem depois da vírgula é o nome do canal tal como é apresentado.

Há ainda o URL na linha seguinte, que é o stream propriamente dito. Costuma ser uma playlist HLS (a terminar em .m3u8) ou um stream TS (a terminar em .ts).

A playlist de um fornecedor real não é mais do que milhares destas, empilhadas umas sobre as outras.

O que significa "M3U8"

M3U8 é o mesmo formato, codificado em UTF-8. A extensão .m3u8 existe porque a especificação original do M3U assumia Latin-1 ou code pages locais, que não conseguiam representar nomes de canais em árabe, cirílico ou línguas asiáticas. A M3U8 resolveu isso.

No IPTV moderno, na prática, está tudo em M3U8, mesmo quando o ficheiro tem extensão .m3u. Trata-os como sinónimos.

O que é um "URL M3U"

Quando um fornecedor de IPTV te envia um URL deste género:

http://provider.example:8080/get.php?username=ABC&password=XYZ&type=m3u_plus

Esse URL devolve um ficheiro M3U quando é pedido. O fornecedor gera o ficheiro na hora com as tuas credenciais lá dentro. O ficheiro em si é exatamente o mesmo formato de texto simples descrito acima — só é entregue por HTTP em vez de ser enviado por email em anexo.

Se quiseres ver exatamente o que o teu fornecedor envia, cola o URL no browser. A maioria dos browsers mostra o texto bruto. (Se em vez de mostrar fizerem download, abre o ficheiro descarregado num editor de texto.)

Como verificar uma playlist antes de a importar

A competência mais útil para quem está a começar em IPTV: confirmar que a playlist funciona antes de a importares para uma app. O testador de playlists M3U gratuito deste site recebe o URL, vai buscar o ficheiro, analisa a lista de canais e sonda os primeiros 100 streams em paralelo. Diz-te quantos resolvem. Se a resposta for "zero", o teu fornecedor está estragado; não percas tempo com o leitor.

Isto resulta porque o formato M3U é tão direto que dá para verificar toda a cadeia em poucos segundos sem instalar nada.

Um ecrã de telemóvel a pedir 'Adicionar a tua playlist' com um campo para o URL M3U.

Na prática, importar uma M3U é só colar — o leitor trata do resto da análise.

Porque é que os fornecedores usam M3U

O formato tem mais de 25 anos e foi originalmente desenhado para playlists de MP3 no Winamp. Sobreviveu por duas razões: é trivial de gerar (qualquer backend é capaz de juntar uns milhares de linhas #EXTINF) e todos os leitores de media alguma vez escritos sabem lê-lo. Não há alternativa a sério. Houve tentativas — JSPF, XSPF — mas nenhuma vingou.

Se hoje constróis um leitor, suportas M3U porque toda a gente entrega M3U. Se és fornecedor, entregas M3U porque todos os leitores o leem. O formato não vai a lado nenhum.

Editar uma M3U à mão

Como é texto simples, podes editar uma playlist em qualquer editor de texto. Motivos comuns:

  • Remover canais que nunca vais ver — o fornecedor dá-te 5000 canais de 80 países, tu só vês 200. Guarda uma versão mais magra.
  • Recategorizar — passar group-title="UK Sports" para group-title="Desporto" para consolidar.
  • Corrigir logótipos partidos — substituir URLs tvg-logo desatualizados por outros que funcionem.
  • Combinar fornecedores — colar canais de dois ficheiros M3U num só. A maioria dos leitores lê isso sem problemas.

O ficheiro editado funciona da mesma forma que o original. Grava-o localmente como a-minha-playlist.m3u e aponta o leitor para o ficheiro (não para um URL).

O que não é

Uma M3U não é:

  • Um ficheiro de vídeo. É uma lista de apontadores para vídeo.
  • Um protocolo. É um formato de ficheiro. Os streams para os quais aponta podem usar qualquer protocolo.
  • Uma forma de fazer canais piratas funcionar. A M3U é só texto; o que importa é se os URLs lá dentro funcionam e se os streams por trás desses URLs estão publicados legitimamente.

Se percebes "um ficheiro de texto a listar URLs", percebes M3U. Tudo o resto é o leitor e o servidor. Para o quadro mais amplo, vê o nosso guia simples sobre IPTV; para o formato alternativo que o teu fornecedor pode oferecer, vê Xtream Codes vs M3U.