Si tu as un tant soit peu cherché de l'IPTV, tu as vu deux expressions revenir sans cesse : « URL M3U » et « Xtream Codes ». C'est presque la même chose sous le capot, et presque tous les lecteurs modernes prennent en charge les deux, mais le choix a quand même son importance — ils tombent en panne différemment, et basculer de l'un à l'autre est souvent le correctif le moins cher quand quelque chose casse.
C'est une comparaison d'utilisateur d'IPTV, pas un décorticage de protocole.
Le M3U, c'est un fichier récupéré une fois ; Xtream, c'est une petite API à laquelle le lecteur continue de parler.
Ce que c'est vraiment
M3U est un fichier texte à plat. Ouvre-en un dans un éditeur de texte et tu verras un en-tête (#EXTM3U), puis une succession de lignes #EXTINF:… qui associent chaque chaîne à une URL de flux. C'est à peu près le format le plus simple qui existe. Ton lecteur télécharge le fichier une fois, le parse, et il a sa liste de chaînes.
#EXTM3U
#EXTINF:-1 tvg-id="bbc1" group-title="UK",BBC One HD
http://fournisseur.example/live/bbc1/index.m3u8
C'est tout le modèle de données : une liste de chaînes, chacune avec un nom et une URL. Rien de dynamique. Si tu veux une liste rafraîchie, tu retéléchargues le fichier.
Xtream Codes est une API HTTP. Tu donnes au lecteur un serveur, un identifiant et un mot de passe ; le lecteur appelle une poignée d'endpoints (get.php?type=m3u_plus, player_api.php, xmltv.php) pour récupérer la liste des chaînes, la bibliothèque VOD, le catalogue de séries et le guide comme autant de documents séparés. Les URLs de flux elles-mêmes sont construites par le lecteur à partir des identifiants et de l'ID de chaîne.
Mécaniquement, un identifiant Xtream renvoie presque toujours un M3U à l'un de ses endpoints — quand tu « importes un M3U » depuis un fournisseur Xtream, tu utilises un appel précis de l'API. L'inverse n'est pas vrai : un M3U simple n'expose rien d'autre.
Quand choisir lequel
Prends M3U si :
- Tu ne t'intéresses qu'aux chaînes en direct. M3U n'a aucun concept de VOD ou de catalogue de séries ; si ton fournisseur en propose, M3U ne les montrera pas.
- Tu veux garder un instantané local. Le fichier M3U est portable — sauvegarde-le, modifie-le dans un éditeur de texte, partage un sous-ensemble trié sur le volet à quelqu'un.
- Tu n'as pas confiance que le fournisseur va durer. Un M3U exporté continue de marcher tant que les URLs de flux qu'il contient marchent, même si l'endpoint d'API du fournisseur disparaît demain.
- Le fournisseur est buggué. M3U a moins de pièces mobiles. Si son API Xtream est instable mais que son export M3U marche, utilise simplement le M3U.
Prends Xtream Codes si :
- Tu veux la VOD et les séries. Elles n'apparaissent tout simplement pas en M3U classique.
- Tu veux des catégories que le lecteur sait utiliser nativement. Xtream envoie « live », « VOD » et « séries » comme des arbres séparés ; M3U n'a que des chaînes
group-title, conventionnelles mais pas structurées. - Tu changes souvent d'appareil et tu ne veux pas réimporter. Les identifiants Xtream marchent partout, et n'importe quel lecteur compatible reprend exactement la même bibliothèque à partir d'eux.
- Tu veux que le lecteur rafraîchisse dynamiquement la liste des chaînes. Xtream re-fetche par session ; M3U est un instantané à un instant T.
Comment savoir lequel tu as
Si tu t'es inscrit chez un fournisseur et qu'il t'a envoyé une seule ligne du genre :
http://serveur.example:8080/get.php?username=ABC&password=XYZ&type=m3u_plus&output=mpegts
C'est une URL M3U. Tu peux la coller directement dans le testeur M3U pour vérifier qu'elle marche.
S'il t'a envoyé trois éléments — une URL de serveur, un identifiant, un mot de passe — c'est un identifiant Xtream. La plupart des lecteurs modernes ont un formulaire « Ajouter une source Xtream » séparé. La plupart des fournisseurs exposent volontiers les deux : les mêmes identifiants marchent sur les deux interfaces, et tu peux utiliser le testeur M3U pour vérifier l'endpoint de playlist et le validateur EPG pour vérifier l'endpoint de guide, le tout sans rien installer.
Modes de défaillance courants (et vers quel format basculer)
Le même fournisseur peut être parfaitement sain sur une interface et cassé sur l'autre. Six modes de défaillance valent la peine d'être connus.
Le M3U renvoie du HTML
Tu colles l'URL dans le testeur et tu obtiens « le serveur a renvoyé une page HTML ». En général, ça veut dire que l'endpoint M3U exige un cookie de session, ou que ton fournisseur a rate-limité l'IP qui le sollicite. Essaie Xtream — les endpoints d'API sont souvent moins agressivement filtrés que l'export M3U en bloc.
Xtream renvoie « auth failed » mais le M3U marche
Certains fournisseurs mettent à jour leur base d'identifiants Xtream avec du retard. L'URL M3U est signée à la création et continue de marcher ; l'API te refuse parce qu'elle n'a pas encore pris en compte le nouveau mot de passe. Attends une heure, ou utilise simplement le M3U.
Un lecteur sait le lire, un autre non
Xtream Codes est une spec de facto, pas une vraie. Il y a des fournisseurs qui revendiquent le support Xtream mais n'implémentent que deux des endpoints standards ; il y a des lecteurs qui frappent un endpoint non standard et échouent quand il manque. Si un lecteur ne sait pas lire ton fournisseur Xtream mais lit très bien le M3U, bascule sur M3U. L'inverse est plus rare mais arrive.
Logos manquants en M3U, présents en Xtream
En M3U, les URLs de logo sont inline (tvg-logo="…"). En Xtream, elles sont servies par un endpoint de logos. Si ton M3U a des URLs de logo mal formées ou périmées, basculer en Xtream va les repeupler. Le cas inverse (logos en M3U, manquants en Xtream) n'arrive presque jamais.
L'EPG s'accroche aux chaînes dans un format mais pas l'autre
Le <channel id="…"> du XMLTV doit correspondre au tvg-id="…" en M3U ou au champ channel-id en Xtream. Ces IDs ne sont pas toujours les mêmes dans les deux formats — les fournisseurs les régénèrent parfois selon un planning. Si ton guide est vide en M3U mais peuplé en Xtream, les IDs ne matchent pas en M3U ; utilise Xtream, point.
Un format est plus rapide
Xtream sur un réseau lent fait beaucoup plus d'allers-retours que M3U. Sur une connexion bancale, la différence peut atteindre 5 à 10 secondes au démarrage. Le M3U télécharge une fois et continue à partir des données locales. Si la vitesse au premier lancement compte pour toi, M3U l'emporte en général.
Ce que fait Klipa
Klipa prend en charge les deux, les traite comme des sources interchangeables (tu peux avoir un M3U et un identifiant Xtream côte à côte dans la même bibliothèque), et les refetche en arrière-plan. Si le M3U se met à renvoyer du HTML, la session Xtream maintient ta liste de chaînes en vie jusqu'au prochain rafraîchissement. Si l'auth Xtream casse, le M3U en cache continue de marcher.
La recommandation forte, c'est : prends celui que ton fournisseur sert le plus fiablement, mais ne sois pas fidèle à un seul format. Le format n'est pas le produit. Les chaînes, si.