Comprendre

EPG, XMLTV, guide TV : comment le guide des programmes marche vraiment en IPTV

Le guide des programmes est la partie de l'IPTV que tout le monde utilise et que personne ne comprend : d'où viennent les données, ce que contient un fichier XMLTV, comment une chaîne de votre playlist retrouve ses programmes, pourquoi les horaires se décalent, et ce qu'un lecteur doit faire pour l'afficher sans vous faire attendre.

5 min de lecture

En bref

  • L'EPG est un flux de données séparé des chaînes : une liste de programmes par chaîne avec heures de début et de fin, en général au format XMLTV, publiée par le fournisseur ou par un tiers.
  • Il ne s'affiche que quand trois choses s'alignent : une source, un identifiant de chaîne identique des deux côtés, et le bon fuseau horaire sur votre appareil.
  • Avec Xtream Codes le fournisseur le sert chaîne par chaîne. Avec une M3U le guide devrait venir d'un flux XMLTV à côté ; IPTV Guard ne lit pas ces flux aujourd'hui, donc une M3U lit ses chaînes sans guide.
Sommaire

Ouvrez n'importe quel lecteur IPTV et la première chose que vous voyez à côté d'une chaîne, c'est ce qui passe maintenant, et ce qui vient après. Cette colonne, c'est l'EPG, le guide électronique des programmes, et c'est la pièce la plus fragile de toute l'installation, parce qu'elle dépend de données qui ne voyagent pas avec les chaînes. Comprendre d'où elles viennent et comment elles s'attachent à vos chaînes explique presque tous les problèmes de guide, et rend les solutions évidentes.

Le guide ne fait pas partie du flux

Un flux de chaîne transporte de la vidéo et de l'audio. Il ne transporte pas sa grille. La grille vit dans un flux séparé, mis à jour quelques fois par jour, qu'un lecteur va chercher et fait correspondre aux chaînes de votre playlist. Deux chaînes peuvent se lire parfaitement avec un guide vide, et un guide peut être plein pour une chaîne dont le flux est mort. Ils sont indépendants.

Cette séparation est la raison pour laquelle le guide est vide si souvent : le côté flux a marché, le côté données n'avait rien, ou n'a pas pu être mis en correspondance.

D'où viennent les données

Trois sources, de la plus courante à la plus rare.

Le flux propre du fournisseur. Les serveurs Xtream Codes peuvent servir les programmes chaîne par chaîne, déjà mis en correspondance avec leur liste. C'est le cas confortable : le lecteur demande « qu'est-ce qui passe sur la chaîne 1234 aujourd'hui », le serveur répond. La couverture dépend du fournisseur : les grandes chaînes presque toujours, les petites ou étrangères selon son bon vouloir.

Un fichier XMLTV. Un fichier unique, souvent compressé, publié à une URL, couvrant beaucoup de chaînes sur plusieurs jours. Les fournisseurs en donnent un aux utilisateurs M3U ; des projets indépendants en publient aussi. C'est le format universel des guides TV, celui que d'autres lecteurs acceptent comme « URL EPG ».

Les API de métadonnées. Des services qui répondent à des questions sur les programmes, films et séries à la demande, utilisés pour enrichir ce que dit le flux avec affiches, casting et descriptions. Notre guide sur XMLTV contre API de métadonnées couvre la différence.

Ce que contient un fichier XMLTV

XMLTV est un format texte du début des années 2000 que toute l'industrie utilise encore parce qu'il est simple. Deux types d'entrées :

  • Les chaînes : un identifiant et un nom d'affichage. L'identifiant est la clé de tout, quelque chose comme tf1.fr ou bbcone.uk, choisi par celui qui produit le fichier.
  • Les programmes : pour chacun, l'identifiant de chaîne, une heure de début, une heure de fin, un titre, et éventuellement une description, une catégorie, un numéro d'épisode, une image.

Les heures s'écrivent avec un décalage, par exemple 20260920210000 +0200, ce qui veut dire que le programme commence à 21 h dans un fuseau à deux heures en avance sur le temps universel. Le lecteur convertit ça vers l'horloge de votre appareil. Si le fuseau de l'appareil est faux, tous les programmes se décalent, ce qui est la cause numéro quatre d'un guide faux.

Comment une chaîne retrouve ses programmes

C'est l'étape qui échoue en silence. Votre playlist nomme ses chaînes et donne à chacune un identifiant : tvg-id dans une M3U, epg_channel_id en Xtream Codes. Le flux EPG nomme ses chaînes avec ses propres identifiants. Le lecteur fait correspondre les deux. Quand ils sont identiques, les programmes s'attachent. Quand ils ne le sont pas, le lecteur n'a aucun moyen honnête de deviner : « TF1 HD » dans votre playlist et tf1.fr dans le flux, c'est la même chaîne pour vous, et deux chaînes de caractères pour une machine.

Les bons fournisseurs gardent des identifiants cohérents entre leur playlist et leur flux. Les playlists éditées à la main, les flux tiers et les noms de chaînes avec suffixes régionaux cassent la correspondance. Le symptôme : une chaîne sans guide à côté de chaînes qui en ont un, ou, pire, les programmes d'une autre chaîne, quand deux identifiants se télescopent.

Certains lecteurs tentent une correspondance approximative sur les noms. Ça aide dans les cas évidents et crée de fausses correspondances dans les autres. La solution fiable est côté données : utiliser le flux qui va avec votre playlist, ce qu'un serveur Xtream Codes fait par construction.

Ce qu'un lecteur doit faire

Un guide qui paraît instantané, c'est beaucoup de travail bien caché :

  • Charger en arrière-plan. Un flux complet pour des milliers de chaînes peut peser des dizaines de mégaoctets. Le récupérer avant d'afficher quoi que ce soit, ce serait une minute de roue. Le lecteur montre les chaînes d'abord et remplit le guide derrière, chaînes visibles en premier.
  • Mettre en cache. Les programmes ne changent pas chaque minute. Le lecteur garde ce qu'il a récupéré et rafraîchit selon un rythme, pour que le deuxième lancement soit instantané.
  • Réessayer discrètement. Les serveurs expirent, surtout aux heures de pointe. Une chaîne dont les données ne sont pas arrivées est redemandée plus tard, sans erreur sous votre nez.
  • Dire « Direct » plutôt que tourner. Une chaîne sans programme n'est pas cassée. Le lecteur doit le dire et la lire comme les autres.
  • Convertir les heures une fois, correctement. Avec le fuseau de l'appareil, en respectant l'heure d'été, sans décalage manuel à bricoler.

Cette liste, c'est la différence entre un guide qu'on utilise et un guide qu'on désactive.

Ce qu'il faut retenir

Le guide, ce sont des données à côté des chaînes, pas dedans. Il a besoin d'une source (le serveur Xtream du fournisseur, dans IPTV Guard), d'identifiants qui correspondent des deux côtés, et de la bonne horloge sur votre appareil. Quand l'un des trois manque, le guide est vide ou faux, et les chaînes se lisent quand même. Le guide des six causes en fait une liste de vérification ; celui-ci explique pourquoi la liste ressemble à ça.

Dans IPTV Guard

IPTV Guard charge le guide chaîne par chaîne en arrière-plan, le garde en cache, réessaie discrètement, et affiche « Direct » plutôt qu'une roue quand une chaîne n'a pas de programme. Avec Xtream Codes il n'y a rien à configurer. Avec une playlist M3U il n'y a pas de guide : si votre fournisseur propose Xtream Codes, ou si votre URL M3U contient get.php, entrez-la en Xtream et le guide arrive avec les chaînes.

Questions fréquentes

D'où vient l'EPG de mon fournisseur ?

La plupart le construisent à partir de grilles publiques et de flux tiers, puis le mappent sur leur propre liste de chaînes. C'est pour ça que la couverture varie : les grandes chaînes nationales sont toujours là, les petites souvent pas.

Puis-je utiliser une autre source EPG que celle de mon fournisseur ?

Pas dans IPTV Guard aujourd'hui : le guide vient du serveur Xtream Codes. Les lecteurs qui acceptent une URL XMLTV personnalisée se heurtent au problème de correspondance décrit plus bas : la source doit utiliser les mêmes identifiants de chaînes que votre playlist, sinon les programmes atterrissent sur les mauvaises chaînes.

Pourquoi le guide ne couvre-t-il qu'aujourd'hui ?

Le flux publie ce qu'il publie : certains couvrent sept jours, d'autres un seul. Le lecteur ne peut pas inventer des programmes qu'on ne lui a pas donnés.

Pourquoi mon guide est-il décalé d'une heure ?

Le fichier XMLTV donne les heures avec un décalage, et le lecteur les convertit dans le fuseau de votre appareil. Un appareil sur le mauvais fuseau, ou sans l'heure d'été, décale tout. Corrigez l'appareil, pas l'app.

Quelle taille fait un fichier EPG ?

De quelques mégaoctets à plus d'une centaine pour un gros flux couvrant des milliers de chaînes sur une semaine. C'est pour ça que les lecteurs le chargent en arrière-plan et le mettent en cache.

Guides voisins