EPG et XMLTV pour l'IPTV : Le guide complet

Une TV sans guide, c'est juste une liste de fréquences. Le Guide Électronique des Programmes (EPG) transforme « chaîne 482 » en « Le 20 Heures — 20:00 ». En IPTV, l'EPG est livré via un standard nommé XMLTV, et la façon dont vous le branchez fait la différence entre un salon moderne et un tableur d'URLs frustrant. Voici tout ce qu'il faut savoir.

Le XMLTV, c'est quoi exactement ?

Le XMLTV est un format XML ouvert, hérité du début des années 2000, qui décrit ce qui passe, où, et quand. Une entrée typique :

<programme start="20260425200000 +0200" stop="20260425210000 +0200" channel="france2.fr">
  <title lang="fr">Le 20 Heures</title>
  <desc>Journal télévisé présenté par Anne-Sophie Lapix.</desc>
  <category>Information</category>
</programme>

Chaque <programme> relie un créneau horaire à un channel id. La balise <channel> en tête de fichier mappe cet id à un nom d'affichage. Si le nom de chaîne dans la playlist ne correspond pas au tvg-id XMLTV, le guide est vide — c'est la cause n°1 du « EPG ne marche pas ».

D'où vient l'EPG

SourceCe que vous obtenezCoût
API Xtream CodesEPG livré avec les chaînes, mappage automatiqueInclus
URL XMLTV du fournisseurUn seul fichier avec des milliers de chaînesSouvent gratuit
Sources communautaires (epg.best, iptv-org)Guides ouverts par paysGratuit
Schedules DirectProgrammes premium US/UK/CA, très fiablesAbonnement
XMLTV scrappé maisonCuraté à la main depuis les sites des chaînesQue du temps

Configurer l'EPG dans StreamVision

Voie A — Xtream Codes (zéro config)

Si vous êtes connecté en Xtream, l'EPG est déjà actif. L'app appelle get_short_epg par chaîne à la demande et un get_full_epg une fois par jour. Rien d'autre à faire.

Voie B — M3U + XMLTV externe

Étape 1. Dans StreamVision → Source → Modifier M3U → URL EPG, collez le lien XMLTV (souvent en .xml ou .xml.gz).
Étape 2. Choisissez la fréquence de rafraîchissement (par défaut : toutes les 12 h). L'app télécharge le fichier en arrière-plan.
Étape 3. Ouvrez n'importe quelle chaîne — le bandeau « en cours / à suivre » et la grille complète se remplissent automatiquement.

Fuseaux horaires : le tueur silencieux

La moitié des « EPG faux » se résume à un calcul de fuseau. Les heures XMLTV sont absolues (20260425200000 +0200), mais certains fichiers sont produits avec le mauvais offset, ou pire, sans offset du tout. StreamVision applique, dans cet ordre :

  1. L'offset présent dans l'entrée XMLTV, s'il est valide.
  2. Un override par source que vous pouvez forcer dans l'app (utile pour les flux mal exportés).
  3. Le fuseau actuel du téléphone, en dernier recours.

Si votre guide est décalé de deux heures, ne blâmez pas le lecteur — ouvrez le fichier XML et vérifiez l'offset de quelques balises <programme> d'abord.

Mapping chaîne ↔ EPG (l'astuce tvg-id)

Dans un M3U, chaque ligne devrait déclarer un tvg-id qui correspond à un id de chaîne dans votre XMLTV :

#EXTINF:-1 tvg-id="france2.fr" tvg-name="France 2" group-title="FR TNT",France 2
http://serveur.com/live/USER/PASS/123.ts

Si la playlist utilise tvg-id="FR2" alors que l'id XMLTV est france2.fr, le guide reste vide. StreamVision permet de remapper manuellement par chaîne — pratique quand un fournisseur change ses conventions.

XMLTV compressé (.xml.gz, .xz)

Une semaine complète d'EPG pour 2 000 chaînes pèse facilement 80 Mo en clair. La plupart des sources publiques servent une version gzip (.xml.gz), souvent 10× plus légère. StreamVision détecte l'extension et décompresse à la volée — pas d'étape supplémentaire.

Checklist de dépannage

Pourquoi s'embêter avec l'EPG ?

Au-delà de la jolie grille, un vrai EPG débloque : minuteurs d'enregistrement (catch-up Xtream), recherche vocale « ce qui passe maintenant » sur Android TV, contrôle parental par âge, notifications intelligentes au coup d'envoi de votre équipe, et le plus simple — savoir ce qui passe sans scroller 8 000 chaînes. C'est ce qui fait que l'IPTV ressemble enfin à de la vraie TV.

Un vrai guide TV

Branchez votre URL XMLTV ou utilisez Xtream — StreamVision s'occupe du reste.