Quando um player de IPTV não reproduz os seus canais, existem pelo menos quatro coisas que podem estar erradas: o próprio player, o provedor, a sua rede ou o ficheiro da playlist. Depurar uma configuração onde os quatro são incógnitas é péssimo, e a maioria dos tópicos de resolução de problemas online são de pessoas a adivinhar incorretamente qual deles é o problema.

A forma mais rápida de resolver é eliminar três dessas quatro variáveis de uma só vez, alimentando o player com uma playlist comprovadamente funcional composta por streams de teste públicos e gratuitos. Se esses funcionarem, o player funciona — tudo o que ainda falhar está a jusante (downstream). Se não funcionarem, reduziu o problema ao player ou à sua rede, e os passos seguintes são muito diferentes.

O gerador de M3U de amostra neste site produz exatamente essa playlist. É um conjunto selecionado de streams mantidos pela Mux, Apple, Unified Streaming, NASA, France 24, DW, e alguns outros — fontes que têm sido estáveis durante muitos anos especificamente por serem usadas mundialmente como bases de teste. Você escolhe as categorias que pretende, recebe um URL estável e cola-o no player.

Este guia explica o que cada teste revela, o que fazer quando algo falha, e em que streams se deve basear para cada questão.

Quatro caixas rotuladas — player, rede, provedor, playlist — visíveis no início. À medida que uma playlist de teste comprovada chega através da rede, três das quatro caixas são riscadas uma a uma, deixando apenas o player como a incógnita restante.

Uma playlist comprovadamente funcional elimina três das quatro variáveis de uma só vez — o que sobra é o player.

Como é realmente uma "boa playlist de teste"

Pode encontrar dez mil listas de "M3U de IPTV gratuitas" no GitHub. A maioria delas está 80% morta em seis meses. Não são bases de teste — são listas extraídas de quem calhou estar acessível ao público num determinado dia, e os links apodrecem à velocidade da internet.

Uma playlist de teste útil tem propriedades diferentes:

  • Origem estável. O anfitrião compromete-se a manter o stream online porque é uma demonstração pública. Mux, Apple, Unified Streaming, emissoras com transmissões ao vivo públicas.
  • Pequena. Cinco a dez canais, não cinco mil. Está a testar a canalização do player, não a exercitar exaustivamente cada caminho de código.
  • Mista. Uma demonstração estilo VOD (Big Buck Bunny), um stream de notícias ao vivo em HLS (NASA, France 24), um stream apenas de áudio, e opcionalmente uma entrada deliberadamente quebrada. Cada uma testa um caminho de código diferente dentro do player.
  • Sem credenciais. Uma playlist de teste que precisa do seu login não é uma playlist de teste; é aquilo que está a tentar depurar.

O gerador gera uma destas. Dois URLs que pode colar num player produzem superfícies de teste diferentes, mas a mistura padrão (vídeos de demonstração + notícias ao vivo, com logótipos e títulos de grupo ativados) cobre a grande maioria das questões de "este player está estragado".

O que cada teste revela

Assim que a playlist de teste for reproduzida no player, certas questões tornam-se passíveis de resposta, o que não acontecia antes.

O Big Buck Bunny / Tears of Steel / Apple BipBop funciona

Estes são streams HLS codificados em H.264 com uma resolução de vídeo muito pequena. Se forem reproduzidos sem problemas, o player consegue:

  • Abrir um URL HLS.
  • Descodificar H.264.
  • Renderizar para a superfície que a plataforma usa.
  • Controlar uma saída de áudio.

Se um player falhar nestes, a falha é fundamental. Ou a stack de media do player não está a inicializar de todo, ou a rede não consegue alcançar o anfitrião do stream. Ambos são fáceis de verificar: abra o mesmo URL num browser de computador. Os streams de referência HLS da Apple reproduzem-se diretamente no Safari; o Big Buck Bunny é reproduzido em qualquer browser com HLS.js.

A NASA TV / France 24 / France 24 / DW funciona

Estes são streams HLS ao vivo. Caminho de código diferente do VOD. Se os vídeos de demonstração funcionarem mas as notícias ao vivo não, o player tem problemas com uma ou mais das seguintes coisas:

  • Feeds HLS contínuos (não-DVR) onde o manifesto é atualizado ao vivo.
  • Durações prolongadas de sockets (streams ao vivo mantêm a ligação aberta; VOD termina e fecha).
  • A rede a manter a ligação ativa (algumas firewalls descartam TCPs de longa duração).

Os streams de notícias ao vivo também tendem a usar codecs e escalas de bitrate ligeiramente diferentes dos VODs de demonstração, por isso um sintoma "notícias ao vivo falham, demonstrações funcionam" também pode ser um problema de codec. O stream de teste HEVC da Apple no gerador deteta isto — se o problema for o HEVC, esse também falha.

Os logótipos dos canais aparecem

O gerador inclui URLs tvg-logo que apontam para a Wikimedia. Se tiver os logótipos ativados no formulário e o player não os mostrar, o player:

  • Não os está a obter (alguns players só obtêm logótipos através da ação do utilizador).
  • Está a obtê-los mas a renderizá-los incorretamente (formato de imagem diferente esperado).
  • Está a falhar na cadeia de certificados específica da Wikimedia ou na CDN.

Isto raramente é o verdadeiro bloqueador, mas confirma que a rede consegue chegar a um domínio diferente dos próprios streams. Útil quando se persegue um bloqueio ao nível da rede.

Os títulos de grupo renderizam corretamente

O atributo group-title (ativado por defeito) coloca cada stream numa pasta de categoria. Se o seu player mostrar tudo como uma lista plana única quando os grupos estão ativados, o player não honra o group-title — comum em players antigos, menos comum nos modernos. Isto não é geralmente uma falha fatal; significa apenas que terá de depender dos favoritos para navegar quando importar um provedor real com milhares de canais.

Os streams deliberadamente quebrados produzem um erro claro

A categoria "quebrado" (broken) é opcional. Quando ativada, a playlist inclui um URL de falha de DNS e um URL de HTTP-404. Um bom player apresenta uma mensagem de erro clara ("stream não disponível" / "404 não encontrado") e permite-lhe voltar para um canal funcional. Um mau player bloqueia, vai abaixo, ou avança silenciosamente sem lhe dizer que canal estava defeituoso.

Esta categoria de teste deteta um problema ergonómico real: quando eventualmente importar uma playlist de um provedor com 5.000 canais, talvez 5–10% dos canais estejam mortos em qualquer momento. Um player que bloqueie em canais mortos é praticamente inutilizável; um que apresente um erro e lhe permita continuar a navegar é aceitável. É melhor saber agora.

Streams de teste públicos que vale a pena conhecer

O catálogo do gerador é selecionado, mas se quiser saber os URLs subjacentes, aqui está a lista curta. Estes têm sido estáveis durante anos (a maioria por uma década ou mais):

  • Big Buck Bunnyhttps://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8 (Bases de teste da Mux).
  • Tears of Steelhttps://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel.ism/.m3u8 (Demonstração da Unified Streaming).
  • Apple BipBop — Streams de referência HLS da Apple. A variante "avançada" testa o HEVC.
  • NASA TVhttps://ntv1.akamaized.net/hls/live/2014075/NASA-NTV1-HLS/master.m3u8.
  • France 24 Englishhttps://live-hls-web-aje.getaj.net/AJE/01.m3u8.
  • France 24, DW News — HLS ao vivo alojado por emissoras.

Também pode colar qualquer um destes diretamente num player como uma "playlist" de um só canal, mas uma playlist pequena com vários canais é um teste mais exaustivo (exercita a interface de utilizador da lista de canais e o caminho de código de mudança de canais, coisa que um URL direto único não faz).

Depois de o teste passar

Se a playlist de teste for reproduzida corretamente, o player não é o problema. A próxima coisa a testar é a rede — consegue alcançar o IP do seu provedor a partir do mesmo dispositivo? Alguns provedores de IPTV estão bloqueados ao nível do ISP em certos países.

O teste de rede mais barato: vá ao testador de playlists M3U num browser de computador, cole o URL do provedor real e veja se os streams resolvem. O testador de M3U sonda os streams a partir de um IP no lado do servidor que quase de certeza não está bloqueado, portanto um cenário onde "o testador diz que sim, o meu player diz que não" confirma que o problema é da sua rede local.

Se a rede estiver a funcionar, o problema é a playlist do provedor ou as credenciais. O diagnóstico para esse caso é o verificador de credenciais Xtream (se tiver credenciais do tipo Xtream) ou simplesmente colar de novo o URL no testador de M3U para confirmar se os streams estão vivos.

Depois de o teste falhar

Se a playlist de teste não for reproduzida, o problema está a montante de qualquer provedor — e vale a pena ser específico sobre qual teste falhou:

  • Nenhum dos streams funciona, sem mensagem de erro. O player não está a inicializar. Verifique se tem os codecs de que precisa (algumas apps de Smart TV vêm com um conjunto de codecs mais reduzido do que o esperado). Experimente um player diferente no mesmo dispositivo — o VLC ou um media player genérico irá reproduzir estes streams se algo for capaz.
  • Os streams funcionam noutro player no mesmo dispositivo, mas não no seu. É um bug do player. Contacte o desenvolvedor com o URL da playlist de teste — é uma base comprovadamente funcional e remove ambiguidades.
  • Nenhum dos streams funciona E nenhum outro player funciona também. Quase de certeza que é a rede. Um portal cativo, um bloqueador ao nível do DNS (alguns serviços de DNS bloqueadores de anúncios bloqueiam CDNs de streaming), uma firewall corporativa. Tente a mesma playlist numa rede diferente — usar o tethering do telefone é normalmente o teste de sanidade mais rápido.
  • Os streams funcionam mas a lista de canais está vazia ou estranha. O player não está a analisar o M3U corretamente. Verifique o conteúdo da playlist usando o "Ver Código-Fonte" ou a pré-visualização nativa do browser para confirmar se o ficheiro parece bem formado (cabeçalho #EXTM3U, seguido de linhas alternadas de #EXTINF e URL). A playlist do gerador é válida por construção; se o seu player a rejeitar, ele tem um analisador rigoroso que poderá não gostar das variantes M3U que os provedores reais fornecem.

Porque não alojamos estes streams

O Klipa não aloja nenhum dos streams na playlist de teste. São feeds de demonstração e de emissões de terceiros. Especificamente:

  • Não pagamos pela largura de banda. Cada reprodução destes streams puxa da CDN de terceiros, não da nossa.
  • Não usamos proxies nem reescrevemos. Os URLs na playlist apontam diretamente para o terceiro; o player liga-se a eles diretamente.
  • Não rastreamos reproduções. A CDN de terceiros vê a reprodução, mas nós não.

O reverso da medalha é que qualquer stream individual pode ficar offline. Se um canal não carregar quando importar a playlist de teste, mude para outro na mesma playlist antes de assumir que o player está estragado. O design prevê a utilização de múltiplos streams de fontes independentes.

Depois de isto funcionar

Assim que confirmar que o player funciona numa playlist de amostra, importar o seu provedor real é um problema separado. A estratégia é: se ambos funcionarem, já está. Se a amostra funcionar e a do provedor não, o verificador de credenciais Xtream e o testador de M3U dir-lhe-ão que falha do lado do provedor está a atingir (autenticação, expiração, streams mortos, IP bloqueado).

O Klipa aceita o URL da playlist de amostra diretamente — cole-o como uma fonte M3U e obterá exatamente os canais no gerador. O mesmo em qualquer outro player compatível com M3U.