Se hai mai cercato un provider IPTV, avrai visto due termini ripetuti all'infinito: "URL M3U" e "Xtream Codes". Sotto la superficie sono quasi la stessa cosa, e quasi tutti i player moderni li supportano entrambi, ma la scelta è importante — vanno incontro a problemi in modi diversi, e passare dall'uno all'altro è spesso la soluzione più economica quando qualcosa non funziona.

Questo è un confronto pratico dal punto di vista dell'utente IPTV, non un'analisi dei protocolli.

Confronto affiancato: un player che recupera un singolo file playlist.m3u in un colpo solo, rispetto allo stesso player che espande tre frecce color foglia di tè per recuperare .php, player_api.php e xmltv.php.

L'M3U consiste in un unico recupero di un singolo file; Xtream è una piccola API con cui il player continua a interfacciarsi.

Cosa sono in realtà

L'M3U è un semplice file di testo. Aprendone uno in un editor di testo, vedrai un'intestazione (#EXTM3U), seguita da una sequenza di righe #EXTINF:… che abbinano ciascun canale all'URL di uno stream. È il formato più semplice che esista. Il tuo player scarica il file una volta, lo elabora e ottiene così una lista canali.

#EXTM3U
#EXTINF:-1 tvg-id="bbc1" group-title="UK",BBC One HD
http://provider.example/live/bbc1/index.m3u8

Il modello di dati è tutto qui: una lista di canali, ciascuno con un nome e un URL. Niente di dinamico. Se vuoi una lista aggiornata, devi riscaricare il file.

Xtream Codes è un'API HTTP. Fornisci al player un server, un nome utente e una password; il player richiama una serie di endpoint (get.php?type=m3u_plus, player_api.php, xmltv.php) per recuperare l'elenco dei canali, la libreria VOD, il catalogo delle serie e la guida come documenti separati. Gli URL effettivi degli stream vengono costruiti dal player a partire dalle credenziali e dall'ID del canale.

Meccanicamente, un login Xtream restituisce quasi sempre un M3U come uno dei suoi endpoint — quando "importi un M3U" da un provider Xtream, stai usando una specifica chiamata dell'API. Non vale il contrario: un semplice M3U non espone nient'altro.

Quando scegliere ciascuno

Usa l'M3U se:

  • Ti interessano solo i canali in diretta. L'M3U non ha il concetto di VOD o catalogo di serie TV; se il tuo provider li offre, l'M3U non li mostrerà.
  • Vuoi conservare una copia locale. Il file M3U è trasferibile — puoi farne un backup, modificarlo in un editor di testo o condividere una sua porzione scelta con qualcun altro.
  • Non ti fidi che il provider resti online. Un M3U esportato continuerà a funzionare finché gli URL degli stream al suo interno saranno validi, anche se l'endpoint API del provider dovesse sparire domani.
  • Il provider ha dei bug. L'M3U ha meno parti in movimento. Se l'API Xtream è instabile ma l'esportazione M3U funziona, usa semplicemente l'M3U.

Usa Xtream Codes se:

  • Vuoi il VOD e le serie TV. Semplicemente, non sono inclusi nel semplice M3U.
  • Vuoi categorie che il player possa usare nativamente. Xtream invia "diretta", "VOD" e "serie" come rami separati; l'M3U ha solo le stringhe group-title, che sono una convenzione ma non sono strutturate.
  • Cambi dispositivo spesso e non vuoi reimportare la lista. Le credenziali Xtream funzionano ovunque, e qualsiasi player compatibile caricherà esattamente la stessa libreria usandole.
  • Vuoi che il player aggiorni dinamicamente la lista dei canali. Xtream si aggiorna a ogni sessione; l'M3U scatta un'istantanea al momento del download.

Come capire qual è il tuo

Se ti sei abbonato a un provider e ti è stata inviata una sola riga come questa:

http://server.example:8080/get.php?username=ABC&password=XYZ&type=m3u_plus&output=mpegts

Quello è un URL M3U. Puoi incollarlo direttamente nel tester M3U per verificarne il funzionamento.

Se ti hanno inviato tre informazioni — l'URL di un server, un nome utente, una password — quello è un login Xtream. La maggior parte dei player moderni ha un modulo separato "Aggiungi sorgente Xtream". Quasi tutti i provider espongono volentieri entrambe le versioni: le stesse credenziali funzionano su entrambe le interfacce, e puoi usare il tester M3U per verificare l'endpoint della playlist e il validatore EPG per verificare l'endpoint della guida, tutto senza installare nulla.

Problematiche comuni (e in quale formato passare)

Lo stesso provider può funzionare perfettamente su un'interfaccia e avere problemi sull'altra. Ci sono sei tipi di errore che vale la pena conoscere.

L'M3U restituisce dell'HTML

Incolli l'URL nel tester e ricevi "il server ha restituito una pagina HTML". Di solito significa che l'endpoint M3U richiede un cookie di sessione, o che il tuo provider ha limitato l'accesso per l'IP che lo sta richiedendo. Prova con Xtream — spesso gli endpoint API sono meno soggetti a blocchi rispetto all'esportazione in blocco tramite M3U.

Xtream restituisce "autenticazione fallita" ma l'M3U funziona

Alcuni provider aggiornano il loro database di credenziali Xtream con un certo ritardo. L'URL M3U viene generato e validato al momento del rilascio e funziona fin da subito; l'API invece ti rifiuta perché non ha ancora registrato la nuova password. Aspetta un'ora, o usa semplicemente l'M3U.

Un player riesce a leggerlo, un altro no

Xtream Codes è uno standard di fatto, non un vero e proprio protocollo ufficiale. Ci sono provider che dichiarano di supportare Xtream ma implementano solo due degli endpoint standard; e ci sono player che interrogano un endpoint non standard, per poi bloccarsi quando non lo trovano. Se un player non riesce a leggere il tuo provider via Xtream ma legge benissimo l'M3U, passa all'M3U. Il caso contrario è più raro, ma succede.

Loghi dei canali mancanti su M3U, ma presenti su Xtream

Negli M3U, gli URL dei loghi si trovano all'interno del file stesso (tvg-logo="…"). In Xtream, vengono serviti da un endpoint dedicato ai loghi. Se il tuo M3U contiene URL loghi errati o obsoleti, passando a Xtream questi verranno caricati nuovamente in modo corretto. Il caso contrario (loghi presenti nell'M3U, ma assenti in Xtream) non si verifica quasi mai.

L'EPG si collega ai canali in un formato, ma non nell'altro

L'attributo <channel id="…"> dell'XMLTV deve corrispondere al tvg-id="…" nell'M3U o al campo channel-id in Xtream. Questi ID non sono sempre uguali nei due formati — a volte i provider li rigenerano periodicamente. Se la tua guida è vuota con l'M3U ma popolata in Xtream, vuol dire che gli ID non coincidevano nell'M3U; limitati a usare Xtream.

Un formato è più veloce

Su una rete lenta, Xtream esegue molti più scambi dati rispetto all'M3U. Con una connessione instabile, la differenza può essere di 5-10 secondi all'avvio. L'M3U effettua un solo download e prosegue attingendo dai dati salvati in locale. Se per te è importante la velocità al primo avvio, di solito l'M3U vince.

Cosa fa Klipa

Klipa li supporta entrambi, li gestisce come sorgenti intercambiabili (puoi avere un login M3U e uno Xtream uno di fianco all'altro nella stessa libreria) e li aggiorna entrambi in background. Se l'M3U inizia a restituire HTML, la sessione Xtream mantiene la tua lista canali in vita fino all'aggiornamento successivo. Se l'autenticazione di Xtream smette di funzionare, la copia in cache dell'M3U continua a funzionare.

Il forte consiglio è: scegli la modalità che il tuo provider riesce a fornire in modo più affidabile, ma non vincolarti a un formato. Il prodotto non è il formato. Il prodotto sono i canali.