Publié le · par l’équipe AICKO IPTV · 7 min de lecture

EPG : un guide qui voyage à part

L'EPG (Electronic Program Guide, guide électronique des programmes) est la grille qui indique ce qui passe maintenant et ensuite sur chaque chaîne. Sur la TNT, ces informations sont transportées dans le signal lui-même, au sein de tables normalisées par la norme DVB. Sur Internet, c'est différent : la vidéo d'une chaîne et son guide arrivent en général par deux chemins distincts.

D'un côté, le lecteur reçoit le flux vidéo à partir d'une playlist M3U ou d'une connexion Xtream Codes. De l'autre, il télécharge un fichier de guide, presque toujours au format XMLTV, qui décrit plusieurs jours de programmes pour des dizaines ou des centaines de chaînes. Le travail du lecteur consiste ensuite à faire correspondre chaque chaîne de la playlist à sa grille dans le fichier.

Cette séparation explique la plupart des problèmes : une chaîne peut fonctionner parfaitement tout en ayant un guide vide, parce que la vidéo et le guide ne dépendent pas l'un de l'autre.

La structure d'un fichier XMLTV

XMLTV est un format ouvert, né au début des années 2000 dans la communauté du logiciel libre, fondé sur le langage XML. Un fichier contient un élément racine <tv>, puis deux types de blocs : les chaînes et les programmes.

<?xml version="1.0" encoding="UTF-8"?>
<tv generator-info-name="exemple">
  <channel id="exemple1.fr">
    <display-name>Exemple 1</display-name>
    <icon src="https://img.exemple.fr/ex1.png"/>
  </channel>
  <programme start="20260928204500 +0200" stop="20260928223000 +0200" channel="exemple1.fr">
    <title lang="fr">Documentaire du soir</title>
    <desc lang="fr">Voyage au cœur des volcans d'Auvergne.</desc>
    <category lang="fr">Documentaire</category>
  </programme>
</tv>

L'élément channel

Chaque <channel> porte un attribut id, l'identifiant unique de la chaîne dans ce fichier. Il est souvent formé comme un nom de domaine (exemple1.fr), mais ce n'est qu'une convention : n'importe quelle chaîne de caractères est valable. Il contient aussi un ou plusieurs noms d'affichage (<display-name>) et parfois un logo (<icon>).

L'élément programme

Chaque <programme> décrit une émission : heure de début (start), heure de fin (stop), chaîne concernée (channel, qui reprend l'id d'un élément <channel>), titre, et éventuellement résumé, catégorie, épisode, année, affiche ou signalétique d'âge. Les programmes sont indépendants les uns des autres, ce qui permet à un fichier de couvrir de quelques heures à plusieurs semaines.

La correspondance entre playlist et guide : tvg-id

Le lien entre la chaîne de votre playlist et sa grille repose sur l'attribut tvg-id de la ligne #EXTINF. La règle est simple : le tvg-id de la playlist doit être identique, caractère pour caractère, à l'id du <channel> dans le fichier XMLTV.

#EXTINF:-1 tvg-id="exemple1.fr" group-title="Généralistes",Exemple 1 HD
https://tv.exemple.fr/live/ex1.m3u8

Si la playlist indique tvg-id="Exemple1.fr" et le guide id="exemple1.fr", la correspondance échoue chez beaucoup de lecteurs, car la comparaison tient compte des majuscules. Lorsqu'il n'y a pas de tvg-id, certains lecteurs tentent une correspondance par le nom (tvg-name ou nom affiché) avec le <display-name> du guide ; c'est moins fiable, car « Exemple 1 HD » et « Exemple 1 » ne sont pas identiques.

Avec une connexion Xtream Codes, la correspondance est en principe automatique : le serveur fournit pour chaque chaîne un champ epg_channel_id qui joue le rôle du tvg-id, et un guide XMLTV cohérent avec ces identifiants. Le fonctionnement de cette API est détaillé dans notre article sur les connexions Xtream Codes, et la syntaxe des playlists dans le format M3U ligne par ligne.

Heures, fuseaux et décalages

Les heures XMLTV s'écrivent sous la forme AAAAMMJJhhmmss suivie d'un décalage par rapport au temps universel (UTC). Ainsi, 20260928204500 +0200 signifie le 28 septembre 2026 à 20 h 45, dans un fuseau en avance de deux heures sur UTC, soit 18 h 45 UTC.

En France métropolitaine, l'heure légale est UTC+1 en hiver (+0100) et UTC+2 en été (+0200). Le passage à l'heure d'été a lieu le dernier dimanche de mars, le retour à l'heure d'hiver le dernier dimanche d'octobre. Un guide correct pour une chaîne française doit donc changer de décalage à ces dates, ou tout exprimer en UTC avec +0000.

Le lecteur convertit ensuite ces heures dans le fuseau de votre appareil. D'où trois sources possibles de décalage :

SymptômeCause probableRemède
Tout le guide est décalé d'une heure exactementLe fichier indique un décalage fixe qui ignore le changement d'heure, ou +0000 alors que les heures sont localesRéglage de décalage du guide dans le lecteur, ou attribut tvg-shift
Décalage de plusieurs heuresFuseau de l'appareil mal réglé, ou guide prévu pour un autre paysVérifier date, heure et fuseau dans les paramètres système
Une seule chaîne décaléeChaîne diffusée depuis un autre fuseau ou décalée volontairement (version « +1 »)tvg-shift sur cette seule chaîne
Décalage de quelques minutesLa chaîne ne respecte pas ses horaires annoncésAucun : le guide reflète la grille prévue

L'attribut tvg-shift se place sur une ligne #EXTINF et s'exprime en heures, éventuellement négatives ou décimales : tvg-shift="-1" recule le guide d'une heure pour cette chaîne. C'est un pansement : si le décalage apparaît ou disparaît au changement d'heure, le vrai défaut est dans le fichier source.

Un dernier piège, fréquent sur les clés TV et les box : une date système fausse. Si l'appareil n'a pas synchronisé son horloge (absence de réseau au démarrage, pile de sauvegarde absente), le lecteur cherche les programmes d'un autre jour et n'affiche rien. Activez la date et l'heure automatiques dans les paramètres.

Guide vide : les causes, dans l'ordre

Quand le guide reste désespérément vide, procédez méthodiquement, du plus simple au plus technique.

  1. Le guide n'est pas encore chargé. Un gros fichier peut demander de quelques secondes à plusieurs minutes au premier téléchargement, surtout sur un appareil modeste. Laissez le lecteur finir, puis rouvrez la liste des chaînes.
  2. Aucune adresse de guide n'est renseignée. Avec une playlist M3U, il faut soit un attribut url-tvg dans l'en-tête, soit une adresse saisie dans les réglages du lecteur.
  3. L'adresse ne répond pas. Ouvrez-la dans un navigateur : vous devez obtenir un téléchargement ou du XML, pas une page d'erreur.
  4. Les identifiants ne correspondent pas. Cherchez le tvg-id d'une chaîne dans le fichier XMLTV (après décompression). S'il n'y figure pas exactement, le lien est rompu.
  5. Le guide est périmé. Regardez les dates des derniers <programme> : un fichier qui s'arrête hier ne peut rien afficher aujourd'hui.
  6. La date de l'appareil est fausse. Voir la section précédente.

Si seules quelques chaînes n'ont pas de guide, c'est presque toujours l'étape 4 : ces chaînes n'existent pas dans le fichier, ou sous un autre identifiant. Aucun réglage du lecteur ne peut inventer une grille absente de la source.

Taille, compression et fréquence de mise à jour

Un fichier XMLTV est verbeux : chaque programme répète ses balises, ses attributs et parfois de longs résumés. Pour quelques centaines de chaînes sur une semaine, le fichier peut peser plusieurs dizaines de mégaoctets. C'est pourquoi on le diffuse très souvent compressé au format gzip, avec l'extension .xml.gz. Le texte XML, très répétitif, se compresse bien : on observe couramment une taille divisée par cinq à dix.

ÉlémentEffet sur le poidsConseil
Nombre de jours couvertsProportionnelDeux à trois jours suffisent pour le direct
Nombre de chaînesProportionnelUn guide limité à vos chaînes est plus rapide
Résumés et imagesImportantUtiles, mais alourdissent le chargement
Compression .gzDivise fortement le téléchargementÀ privilégier quand la source la propose

Sur une clé TV avec peu de mémoire, c'est moins le téléchargement que l'analyse du fichier qui coûte : des dizaines de milliers de programmes doivent être lus et indexés. Un guide ciblé se charge nettement plus vite qu'un guide « mondial » dont vous n'utilisez qu'une fraction.

Côté fréquence, les lecteurs retéléchargent le guide à intervalles réguliers (souvent une fois par jour) ou à la demande. Si votre grille semble figée, forcez une actualisation depuis les réglages. Dans AICKO IPTV, cette opération et l'ajout d'une source de guide sont décrits sur la page guide TV (EPG).

En résumé

  • Le guide des programmes est un fichier XMLTV séparé de la vidéo.
  • Il contient des éléments <channel> et <programme> reliés par un identifiant.
  • Le tvg-id de la playlist doit être strictement identique à l'id du guide.
  • Les heures portent un décalage UTC (+0100 ou +0200 en France) ; tvg-shift corrige une chaîne décalée.
  • Un guide compressé en .xml.gz et limité à vos chaînes se charge plus vite.

Questions fréquentes

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

Le fichier source utilise un décalage fixe qui ne suit pas le passage à l'heure d'été ou d'hiver. Le remède durable est une source corrigée ; en attendant, un décalage d'une heure dans les réglages du guide ou un tvg-shift compense le défaut.

Puis-je utiliser un autre guide que celui de mon service ?

Oui, si votre lecteur permet de saisir une adresse XMLTV. Le guide ne fonctionnera toutefois que si ses identifiants de chaînes correspondent aux tvg-id de votre playlist ; sinon, il faut adapter ces identifiants dans la playlist.

Le lecteur doit-il décompresser lui-même le fichier .gz ?

Oui, la plupart des lecteurs de télévision acceptent directement les fichiers .xml.gz. Vous n'avez à le décompresser vous-même que pour l'inspecter, par exemple avec 7-Zip sous Windows.

Pourquoi certaines chaînes ont-elles un guide et d'autres non ?

Les chaînes sans guide sont absentes du fichier XMLTV ou y figurent sous un identifiant différent de leur tvg-id. Le lecteur ne peut afficher que ce que la source décrit.

Pour aller plus loin

À lire aussi

🧩

Formats et technique

Le format M3U / M3U8 expliqué ligne par ligne

#EXTM3U, #EXTINF, tvg-id, tvg-logo, group-title : comprenez chaque ligne d'une playlist M3U, évitez les erreurs d'encodage et créez la vôtre proprement.

Lire l’article
🧩

Formats et technique

Comment fonctionne une connexion Xtream Codes

Serveur, port, identifiant, player_api.php, catégories, films, séries, expiration et connexions simultanées : le fonctionnement d'une connexion Xtream Codes.

Lire l’article
🧩

Formats et technique

HLS, MPEG-TS, DASH : les protocoles du streaming vidéo

Segments, manifestes, débit adaptatif, latence et compatibilité des appareils : comprendre HLS, MPEG-TS et MPEG-DASH, les trois formats du streaming vidéo.

Lire l’article

Téléchargez AICKO IPTV

L'application est gratuite et fonctionne avec votre propre abonnement IPTV. Choisissez votre appareil : le lien mobile vous envoie automatiquement vers le bon store.

Android et iOS Version mobile Windows 10 et 11 Version PC Samsung, Android TV, Fire TV Version télévision
Télécharger dans l'App Store Disponible sur Google Play