Em resumo
- O EPG é um fluxo de dados separado dos canais: uma lista de programas por canal com horário de início e fim, geralmente no formato XMLTV, publicada pelo provedor ou por um terceiro.
- Ele só aparece quando três coisas se alinham: uma fonte, um identificador de canal que bate dos dois lados, e o fuso horário certo no seu aparelho.
- Com Xtream Codes o provedor entrega o guia por canal. Com uma lista M3U o guia teria que vir de um arquivo XMLTV à parte; o IPTV Guard não lê esses arquivos hoje, então uma M3U toca os canais sem guia.
Nesta página
Abra qualquer player de IPTV e a primeira coisa que você vê ao lado de um canal é o que está passando agora, e o que vem depois. Essa coluna é o EPG, o guia eletrônico de programação, e é a peça mais frágil de toda a montagem, porque depende de dados que não viajam junto com os canais. Entender de onde eles vêm e como são presos aos seus canais explica quase todo problema de guia, e deixa as soluções óbvias.
O guia não faz parte do stream
O stream de um canal carrega vídeo e áudio. Não carrega a grade dele. A grade vive num fluxo separado, atualizado algumas vezes por dia, que um player busca e casa com os canais da sua lista. Dois canais podem tocar perfeitamente com o guia vazio, e um guia pode estar cheio para um canal cujo stream está morto. São coisas independentes.
Essa separação é o motivo de o guia ficar vazio tantas vezes: o lado do stream funcionou, o lado dos dados não tinha nada, ou não conseguiu ser casado.
De onde vêm os dados
Três fontes, da mais comum à mais rara.
A fonte do próprio provedor. Servidores Xtream Codes podem entregar dados de programação por canal, já casados com a lista de canais deles. É o caso confortável: o player pergunta "o que passa no canal 1234 hoje", o servidor responde. A cobertura depende do provedor: os canais grandes quase sempre, os pequenos ou estrangeiros como ele achar por bem.
Um arquivo XMLTV. Um único arquivo, muitas vezes compactado, publicado numa URL, cobrindo muitos canais por vários dias. Provedores dão um para usuários de M3U; projetos independentes também publicam alguns. É o formato universal dos guias de TV, o que outros players recebem como "URL de EPG".
APIs de metadados. Serviços que respondem perguntas sobre programas, filmes e séries sob demanda, usados para enriquecer o que a fonte diz com pôsteres, elenco e descrições. Nosso guia sobre XMLTV versus APIs de metadados cobre a diferença.
O que um arquivo XMLTV contém
O XMLTV é um formato de texto puro do início dos anos 2000 que todo mundo na indústria ainda usa porque é simples. Dois tipos de entrada:
- Canais: um identificador e um nome de exibição. O identificador é a chave de tudo, algo como
globo.brousportv.br, escolhido por quem produz o arquivo. - Programas: para cada um, o identificador do canal, um horário de início, um de fim, um título, e opcionalmente uma descrição, uma categoria, um número de episódio, uma imagem.
Os horários são escritos com um deslocamento, por exemplo 20260920210000 -0300, ou seja, o programa começa às 21h num fuso três horas atrás do tempo universal, o horário de Brasília. O player converte isso para o relógio do seu aparelho. Se o fuso do aparelho está errado, todo programa se desloca, que é a causa número quatro de um guia errado.
Como um canal encontra os programas dele
É a etapa que falha em silêncio. Sua lista dá nome aos canais e um identificador a cada um: tvg-id numa M3U, epg_channel_id no Xtream Codes. A fonte de EPG dá nome aos canais dela com os próprios identificadores. O player casa os dois. Quando são idênticos, os programas se prendem. Quando não são, o player não tem um jeito honesto de adivinhar: "Globo HD" na sua lista e globo.br na fonte são o mesmo canal para você, e dois textos diferentes para uma máquina.
Bons provedores mantêm os identificadores consistentes entre a lista e a fonte. Listas editadas na mão, fontes de terceiros e nomes de canal com sufixos regionais quebram o casamento. O sintoma é um canal sem guia ao lado de canais com guia, ou, pior, os programas de outro canal, quando dois identificadores colidem.
Alguns players tentam um casamento aproximado pelos nomes. Ajuda nos casos óbvios e cria casamentos errados nos outros. A solução confiável está do lado dos dados: use a fonte que acompanha a sua lista, que é o que um servidor Xtream Codes faz por construção.
O que um player precisa fazer
Um guia que parece instantâneo é muito trabalho bem escondido:
- Carregar em segundo plano. Uma fonte completa para milhares de canais pode pesar dezenas de megabytes. Buscar tudo antes de mostrar qualquer coisa seria um minuto de rodinha. O player mostra os canais primeiro e preenche o guia por trás, canais visíveis primeiro.
- Guardar em cache. Os programas não mudam a cada minuto. O player guarda o que buscou e atualiza de tempos em tempos, então a segunda abertura é instantânea.
- Tentar de novo em silêncio. Servidores estouram o tempo, especialmente no horário de pico. Um canal cujos dados não chegaram é perguntado de novo mais tarde, sem um erro na sua cara.
- Dizer "Ao vivo" em vez de girar. Um canal sem dados de programação não está quebrado. O player deve dizer isso e tocar como qualquer outro.
- Converter horários uma vez, corretamente. Usando o fuso do aparelho, respeitando o horário de verão onde ele existe, sem deslocamento manual para ajustar.
Essa lista é a diferença entre um guia que você usa e um guia que você desliga.
O que lembrar
O guia é um dado ao lado dos canais, não dentro deles. Ele precisa de uma fonte (o servidor Xtream do provedor, no IPTV Guard), de identificadores que batam dos dois lados, e do relógio certo no seu aparelho. Quando um dos três falta, o guia fica vazio ou errado, e os canais tocam mesmo assim. O guia das seis causas transforma isso numa lista de verificação; este aqui explica por que a lista tem essa cara.
No IPTV Guard
O IPTV Guard carrega o guia por canal em segundo plano, guarda em cache, tenta de novo em silêncio, e mostra 'Ao vivo' em vez de uma rodinha quando um canal não tem dados de programação. Com Xtream Codes não há nada para configurar. Com uma lista M3U não há guia: se o seu provedor oferece Xtream Codes, ou se a sua URL M3U contém get.php, coloque como Xtream e o guia vem junto com os canais.
Perguntas frequentes
De onde vem o EPG do meu provedor?
A maioria monta a partir de grades públicas e de fontes de terceiros, e depois mapeia para a própria lista de canais. É por isso que a cobertura varia: os grandes canais nacionais estão sempre lá, os pequenos muitas vezes não.
Posso usar uma fonte de EPG diferente da do meu provedor?
No IPTV Guard, hoje, não: o guia vem do servidor Xtream Codes. Players que aceitam uma URL XMLTV própria enfrentam o problema de casamento descrito abaixo: a fonte precisa usar os mesmos identificadores de canal da sua lista, senão os programas caem nos canais errados.
Por que o guia só cobre hoje?
A fonte publica o que publica: algumas cobrem sete dias, outras um. O player não consegue inventar programas que não recebeu.
Por que meu guia está uma hora deslocado?
O arquivo XMLTV dá os horários com um deslocamento, e o player converte para o fuso do seu aparelho. Um aparelho no fuso errado, ou sem o horário de verão, desloca tudo. Corrija o aparelho, não o app.
Qual o tamanho de um arquivo de EPG?
De alguns megabytes a mais de cem numa fonte grande que cobre milhares de canais por uma semana. É por isso que os players carregam em segundo plano e guardam em cache.
