Si ton fournisseur IPTV t'a envoyé un identifiant Xtream (serveur, identifiant, mot de passe) mais que le lecteur que tu veux utiliser ne prend qu'une URL M3U unique — ou l'inverse — tu n'es pas coincé. Les deux, c'est la même chose. En dessous, un identifiant Xtream n'est qu'une façon propre de noter tout ce qu'une URL M3U contient déjà.

Ce guide explique la conversion dans les deux sens, ce à quoi faire attention, et comment la faire sans taper tes identifiants quelque part où un inconnu pourrait les lire. Le convertisseur d'URL Xtream ↔ M3U de ce site fait la conversion entièrement dans ton navigateur — il n'y a aucun endpoint serveur derrière cette page.

Trois pastilles étiquetées — serveur, identifiant, mot de passe — en haut, avec des pulsations colorées qui descendent dans les parties correspondantes de la formule d'URL get.php en bas.

L'URL M3U est un gabarit fixe ; un identifiant Xtream, ce sont juste les trois informations glissées dedans.

Pourquoi la question se pose

Le même fournisseur prend presque toujours en charge les deux formes, mais le lecteur que tu vas installer ne te demandera qu'une seule. Les apps divergent sur quelques points précis :

  • Les vieux lecteurs M3U-only (VLC, apps de Smart TV basiques, boîtiers IPTV dédiés) prennent une URL unique. Ils ignorent les endpoints d'API Xtream ; ils téléchargent un fichier de playlist à plat et lisent les flux qu'il contient.
  • Les lecteurs qui parlent Xtream (la plupart des apps IPTV modernes, dont Klipa) préfèrent le trio d'identifiants. Ils s'en servent pour récupérer la liste des chaînes en direct, la bibliothèque VOD, le catalogue de séries et l'EPG comme autant de documents séparés — meilleur classement, rafraîchissement dynamique, sections à la demande que l'export M3U ne sait pas représenter.

Si ton fournisseur t'a donné l'un et que le lecteur veut l'autre, la conversion est l'affaire de 30 secondes. Pas besoin de demander « l'autre format » au fournisseur — il te donne déjà les deux, juste sous une forme.

La formule Xtream vers M3U

Tous les fournisseurs Xtream utilisent le même gabarit d'URL. Une fois que tu le connais, tu peux construire l'URL M3U à la main à partir des identifiants :

http://<serveur>:<port>/get.php?username=<IDENTIFIANT>&password=<MOT_DE_PASSE>&type=m3u_plus&output=mpegts

Trois exemples concrets, avec les identifiants serveur : http://serveur.example:8080, identifiant : ABC, mot de passe : XYZ :

M3U :       http://serveur.example:8080/get.php?username=ABC&password=XYZ&type=m3u_plus&output=mpegts
EPG :       http://serveur.example:8080/xmltv.php?username=ABC&password=XYZ
player_api : http://serveur.example:8080/player_api.php?username=ABC&password=XYZ

Les morceaux :

  • get.php est l'endpoint de playlist. Il s'appelle toujours get.php — il n'y a pas de convention de nommage propre à chaque fournisseur ici.
  • type=m3u_plus demande le format M3U étendu qui inclut les logos de chaînes et les titres de groupes. type=m3u tout court marche aussi mais produit une playlist plus pauvre ; tu veux presque toujours m3u_plus.
  • output=mpegts demande des flux qui se lisent en MPEG-TS brut. L'autre option courante est output=hls, qui produit des URLs HLS (.m3u8) — utile pour les navigateurs et certains appareils Apple, moins universellement gérée sur les boîtiers TV. Si ton lecteur est tatillon, basculer output est la première chose à essayer.
  • xmltv.php est l'endpoint EPG. Mêmes identifiants, document séparé. La plupart des lecteurs prennent cette URL dans un autre champ (« URL EPG » ou « URL XMLTV »).
  • player_api.php est l'API JSON. Les lecteurs qui « parlent Xtream nativement » s'en servent pour récupérer les arbres live/VOD/séries et les logos de chaînes.

L'inverse : extraire les identifiants d'une URL M3U

À partir d'une URL M3U qui ressemble à la formule ci-dessus, tu peux relire directement les trois champs Xtream :

http://serveur.example:8080/get.php?username=ABC&password=XYZ&type=m3u_plus
                                              └────┘          └────┘
                                          identifiant       mot de passe
  • Le serveur, c'est tout ce qui précède le premier slash après l'hôte : http://serveur.example:8080. Retire /get.php et tout ce qui suit.
  • L'identifiant, c'est la valeur du paramètre username.
  • Le mot de passe, c'est la valeur du paramètre password.

S'il manque un paramètre de query, l'URL n'est pas au format Xtream standard. Certains fournisseurs servent des URLs M3U simples qui ne contiennent aucun identifiant — typiquement des playlists statiques ou à base de token où l'URL elle-même est le secret. Il n'y a rien à en extraire ; tu l'utilises telle quelle dans n'importe quel lecteur capable de M3U.

Pièges classiques

Quelques détails piègent régulièrement les gens.

L'encodage URL des caractères spéciaux

Si ton mot de passe contient des caractères comme &, =, +, #, % ou /, ils doivent être percent-encodés dans l'URL. Un & littéral au milieu du mot de passe casse le parse de l'URL — le lecteur traiterait tout ce qui suit comme un paramètre de query distinct.

La plupart des panels de fournisseurs le font pour toi. Si tu construis l'URL à la main et que ton mot de passe a des bizarreries dedans, passe-le d'abord dans n'importe quel outil « URL encode ». Ou évite carrément et laisse le convertisseur dans le navigateur le faire pour toi.

Le port

Les fournisseurs Xtream tournent très rarement sur les ports par défaut 80 ou 443. Les plus courants sont 8080, 25461, 8000, ou un port aléatoire élevé. Le port fait partie de l'URL du serveur, il n'est pas optionnel. Si tu vois http://serveur.example/get.php?… sans port, soit ça tourne sur le port 80 (rare), soit le fournisseur a un reverse proxy devant (rare aussi). La plupart du temps, le port est juste manquant parce que quelqu'un a copié l'URL à la main et l'a oublié.

http ou https

La plupart des fournisseurs Xtream servent en HTTP, pas en HTTPS. La forme https:// renvoie souvent une erreur de certificat ou un 404 parce que le serveur ne fait pas du tout de TLS. Si on t'a donné une URL de serveur en https:// et qu'elle ne marche pas, essaie http:// tout simple. Le compromis, c'est que ton mot de passe voyage désormais en clair ; c'est malheureusement la norme chez les fournisseurs IPTV.

Chemin personnalisé sur l'URL M3U

Certains fournisseurs personnalisent leur routage — au lieu de /get.php, tu verras /playlist.m3u, /m3u.php, voire /index.php?type=m3u. Les identifiants contenus dans ces URLs correspondent toujours à ce qu'attend l'API Xtream, donc le convertisseur les extraira correctement, mais l'URL de playlist qu'utilise le fournisseur, elle, n'est pas standard. Si tu construis ta propre URL M3U avec le chemin standard /get.php, le fournisseur peut la refuser. Dans ces cas-là, garde l'URL d'origine qu'il t'a donnée — ne cherche pas à la « corriger ».

Espace invisible à la fin des identifiants

Coller depuis un mail ou un post de forum traîne régulièrement un espace, un saut de ligne ou une espace insécable invisible à la fin de l'identifiant. L'API Xtream traite ABC et ABC comme deux identifiants distincts ; tu obtiens une réponse d'authentification échouée identique à celle d'un mot de passe faux. Le convertisseur trimme automatiquement les espaces de l'identifiant et te prévient quand il a dû le faire. Si tu construis l'URL à la main, colle d'abord chaque champ dans un éditeur de texte brut et regarde visuellement la fin.

Faire la conversion en sécurité

Plusieurs sites proposent cette conversion en ligne. La plupart sont corrects ; certains sont louches. Le risque est simple — des identifiants collés dans le formulaire d'un inconnu peuvent être journalisés, récoltés, ou rejoués. Même un opérateur honnête sans intention malveillante a des logs d'accès.

Le convertisseur de ce site est conçu pour ne pas pouvoir avoir de logs d'accès sur tes identifiants, parce qu'il n'a aucun endpoint serveur derrière. La conversion tourne entièrement dans ton navigateur, en JavaScript. Les identifiants vivent dans les éléments input du DOM jusqu'à la fermeture de la page ; ils ne sont pas dans la barre d'URL, ils ne sont pas dans le localStorage, et ils ne sont envoyés nulle part. Si tu ouvres l'onglet réseau du navigateur pendant une conversion, tu verras exactement zéro requête sortante qui transporte les identifiants.

C'est le standard à attendre de n'importe quel outil qui te demande des identifiants IPTV. Si une interface de convertisseur envoie une requête réseau quand tu cliques sur « convertir », elle a, par définition, transmis tes identifiants quelque part.

Après la conversion : vérifie avant d'importer

Une URL construite avec succès ne veut pas dire une URL qui marche. Les deux sens de conversion sont des transformations de chaînes déterministes — elles sont correctes en tant que transformations, mais elles ne te disent pas si les identifiants sont valides, si l'abonnement est à jour ou si le serveur est joignable.

Deux vérifications peu coûteuses avant de t'engager dans l'import :

  • Pour les URLs M3U, colle le résultat dans le testeur de playlist M3U. Il récupère la playlist, la parse, et sonde les 100 premiers flux. Tout ce qui est vert signifie que l'URL est bonne ; tout ce qui est rouge te dit précisément quel est le mode de défaillance (réponse HTML, 404, flux morts).
  • Pour les identifiants Xtream, colle le trio dans le vérificateur d'identifiants Xtream. Il appelle l'API côté serveur, renvoie le statut d'auth, l'expiration, les limites de connexions et le nombre de chaînes. Il distingue « mot de passe faux » de « abonnement expiré » de « serveur injoignable ».

Lancer l'un de ces deux outils avant de t'embêter à installer un lecteur fait économiser une vingtaine de minutes de debug quand quelque chose cloche avec les identifiants eux-mêmes.

Quand l'URL M3U ne contient pas d'identifiants

Une petite portion des URLs M3U que tu croiseras n'est pas du Xtream du tout. Ce sont des playlists à plat hébergées sur un serveur statique, ou des URLs porteuses d'un token où le secret est inclus dans le chemin plutôt que dans la query string :

https://serveur.example/playlists/9c1f4a8b3e/stream.m3u8

Il n'y a rien à extraire — l'URL elle-même est l'identifiant. Elles fonctionnent dans les lecteurs M3U-only telles quelles. Elles n'ont pas d'équivalent Xtream parce qu'elles ne sont pas générées par le panel Xtream Codes ; elles viennent d'une autre stack IPTV (plus ancienne). Si ton fournisseur ne t'a donné que ça et que ton lecteur exige des identifiants Xtream, c'est qu'il n'a pas d'identifiant Xtream à te donner. Demande au fournisseur, ou choisis un lecteur qui accepte les URLs M3U.

À quoi ça ressemble dans Klipa

Klipa accepte les deux formats dans la même bibliothèque, côte à côte. Tu peux ajouter une URL M3U et un identifiant Xtream du même fournisseur comme des sources séparées ; l'appli utilise celle qui est en bonne santé. Si l'export M3U se met à renvoyer du HTML un beau jour, l'appel API Xtream maintient ta liste de chaînes en vie jusqu'au rafraîchissement suivant, et inversement.

C'est la réponse simple à « quel format dois-je utiliser » — les deux. Si tu n'en prends qu'un, la comparaison Xtream vs M3U détaille lequel privilégier selon le cas.