AICKO IPTV: la app gratuita para tus listas IPTV Descargar

Publicado el · por el equipo de AICKO IPTV · 7 min de lectura

Xtream Codes: un software convertido en protocolo

Xtream Codes era originalmente el nombre de un software comercial para gestionar servidores de difusión de vídeo: permitía a un operador gestionar flujos, cuentas de clientes, categorías y estadísticas desde un panel de administración. El software dejó de distribuirse en 2019, pero la interfaz de programación (API) que ofrecía a los reproductores se mantuvo. Muchos programas de servidor la han retomado de forma idéntica para seguir siendo compatibles con las aplicaciones existentes.

Cómo funciona una conexión Xtream Codes

Hoy, «Xtream Codes» designa sobre todo una forma estandarizada de conectarse: un reproductor que «habla» esta API puede conectarse a cualquier servidor que la implemente. No es un servicio, ni un proveedor, ni un contenido. Como ocurre con una lista M3U, la legalidad depende por completo del servicio al que te conectes: un operador que tiene los derechos de emisión puede usar perfectamente esta API, mientras que un servicio que redifunde canales sin autorización sigue siendo ilegal, sea cual sea la técnica empleada.

Los tres datos de conexión

Un servicio compatible facilita a su cliente tres elementos:

  • la dirección del servidor, a menudo acompañada de un puerto, por ejemplo http://serveur.exemple.fr:8080;
  • un usuario (username);
  • una contraseña (password).

El puerto es el número de «puerta» por la que escucha el servidor. Sin indicación, http usa el puerto 80 y https el puerto 443; muchos servidores de este tipo usan otros puertos como 8080 o 25461. Un error frecuente es olvidar el puerto o pegar una ruta superflua tras la dirección (/get.php, /c/…): la aplicación construye ella misma las rutas y espera solo la dirección raíz.

Lo que escribesResultado
http://serveur.exemple.fr:8080Correcto
serveur.exemple.fr:8080Lo acepta la mayoría de los reproductores, que añaden http://
http://serveur.exemple.fr (puerto olvidado)Falla si el servidor no escucha en el puerto 80
http://serveur.exemple.fr:8080/player_api.phpFallo frecuente: ruta añadida dos veces
https:// en lugar de http://Falla si el servidor no ofrece cifrado en ese puerto

El usuario y la contraseña suelen distinguir mayúsculas de minúsculas: «Martin» y «martin» son dos cuentas distintas. Un espacio copiado por error al final de un campo también basta para que falle la conexión.

Qué ocurre al conectarse: player_api.php

Cuando validas tus datos, el reproductor envía una primera petición HTTP al script player_api.php del servidor, con tus credenciales como parámetros:

http://serveur.exemple.fr:8080/player_api.php?username=IDENTIFIANT&password=MOTDEPASSE

El servidor responde con un documento JSON (un formato de datos de texto estructurado) compuesto por dos bloques. Esta es una respuesta simplificada:

{
  "user_info": {
    "auth": 1,
    "status": "Active",
    "exp_date": "1798761600",
    "is_trial": "0",
    "active_cons": "0",
    "max_connections": "1",
    "allowed_output_formats": ["m3u8", "ts"]
  },
  "server_info": {
    "url": "serveur.exemple.fr",
    "port": "8080",
    "https_port": "8443",
    "server_protocol": "http",
    "timezone": "Europe/Paris"
  }
}

El bloque user_info describe tu cuenta; el bloque server_info describe el servidor. Si auth vale 0, las credenciales se rechazan y el reproductor muestra un error de conexión. Si el servidor no responde en absoluto, o devuelve una página HTML en lugar de JSON, el problema está antes de la autenticación: dirección errónea, puerto cerrado, servidor fuera de línea o red que bloquea la conexión.

Las principales acciones de la API

Una vez autenticado, el reproductor carga el catálogo añadiendo un parámetro action a la misma dirección. Cada acción devuelve una lista JSON. Las más utilizadas son las siguientes.

AcciónQué devuelve
get_live_categoriesLas categorías de canales en directo (identificador y nombre)
get_live_streamsLos canales, filtrados opcionalmente con &category_id=, con nombre, logotipo e identificador EPG
get_vod_categoriesLas categorías de vídeo bajo demanda
get_vod_streamsLas películas disponibles, con póster, valoración, fecha de alta y extensión del archivo
get_vod_infoLa ficha detallada de una película (&vod_id=): resumen, duración, pistas
get_series_categoriesLas categorías de series
get_seriesLa lista de series
get_series_infoLas temporadas y los episodios de una serie (&series_id=)
get_short_epgLos próximos programas de un canal (&stream_id=)

La guía completa de programación está disponible, por su parte, en formato XMLTV mediante el script xmltv.php, con las mismas credenciales. Es una de las ventajas de la API: el reproductor no necesita una dirección de guía aparte. El funcionamiento de esta guía se detalla en nuestro artículo sobre la EPG y XMLTV.

Cómo se reproducen después los vídeos

Las listas JSON no contienen los vídeos, solo identificadores. Para iniciar una reproducción, el reproductor construye una dirección según un modelo fijo:

http://serveur:port/live/IDENTIFIANT/MOTDEPASSE/12345.ts
http://serveur:port/movie/IDENTIFIANT/MOTDEPASSE/67890.mkv
http://serveur:port/series/IDENTIFIANT/MOTDEPASSE/24680.mp4

En el directo, la extensión elegida (.ts para un flujo MPEG-TS continuo, .m3u8 para HLS) debe figurar en la lista allowed_output_formats de la cuenta. En las películas y los episodios, la extensión corresponde al archivo realmente almacenado en el servidor. Estos formatos se presentan en HLS, MPEG-TS y DASH.

Estado, caducidad y conexiones simultáneas

El bloque user_info contiene varios campos útiles para entender un rechazo o un corte.

El estado

El campo status suele valer Active. Otros valores como Expired, Banned o Disabled indican que la cuenta ya no puede reproducir contenido, aunque la propia conexión se complete. El campo is_trial señala una cuenta de prueba.

La fecha de caducidad

El campo exp_date no es una fecha legible sino una marca de tiempo Unix: el número de segundos transcurridos desde el 1 de enero de 1970 a medianoche UTC. En el ejemplo anterior, 1798761600 corresponde al 1 de enero de 2027 a las 0 h UTC. Los reproductores la convierten en fecha para mostrarla. Un valor vacío o null significa por lo general una cuenta sin fecha de fin.

Las conexiones simultáneas

max_connections indica cuántos flujos pueden reproducirse al mismo tiempo con la misma cuenta, y active_cons cuántos lo están haciendo en ese momento. Si el límite es 1 y otro aparato del hogar ya está viendo un canal, la nueva reproducción falla o corta la anterior. Ojo con una trampa habitual: al cambiar de canal, la conexión anterior tarda a veces unos segundos en cerrarse en el servidor. Cambiar de canal muy deprisa puede provocar, por tanto, un rechazo breve por «demasiadas conexiones», que desaparece solo.

Xtream Codes o lista M3U: las diferencias

La mayoría de los servicios compatibles ofrecen también una lista M3U generada a partir de la misma cuenta. Los dos métodos dan acceso al mismo catálogo, pero no de la misma manera.

CriterioConexión Xtream CodesLista M3U
CargaPor categoría, bajo demandaUn único archivo, a veces muy voluminoso
Películas y seriesFichas, pósteres, temporadas y episodios estructuradosLista plana, a menudo sin temporadas
Guía de programaciónSe facilita automáticamenteHay que indicar la dirección url-tvg
Información de la cuentaCaducidad y conexiones visiblesNinguna
Servidores admitidosSolo los que implementan la APICualquier origen, incluidos tus archivos

En resumen, la API es más cómoda cuando el servicio la ofrece, sobre todo para los catálogos de películas y series; la lista M3U es más universal. La sintaxis de las listas se explica en el formato M3U línea por línea, y la introducción de los dos tipos de cuenta en AICKO IPTV, en la página Xtream Codes y M3U.

Seguridad y diagnóstico

Una particularidad de esta API merece conocerse: el usuario y la contraseña viajan en la dirección de cada petición y de cada flujo. En un servidor con http simple, circulan por tanto en claro por la red. Algunas consecuencias prácticas:

  • no uses nunca para esta cuenta una contraseña que emplees en otro sitio (correo, banco);
  • no publiques capturas de pantalla ni registros de errores que contengan una dirección de flujo completa: revela tus credenciales;
  • prefiere https cuando el servicio lo ofrezca (el campo https_port lo indica).

Para diagnosticar un fallo, el método más eficaz consiste en abrir la dirección player_api.php?username=…&password=… en un navegador, en la misma red:

  1. Ninguna respuesta o tiempo agotado: dirección o puerto erróneos, servidor detenido o red que bloquea ese puerto.
  2. Respuesta con "auth":0: usuario o contraseña incorrectos.
  3. Respuesta con un estado distinto de Active: cuenta caducada o suspendida, que hay que resolver con el servicio.
  4. Respuesta correcta: la conexión funciona; si la reproducción falla de todos modos, mira el formato del flujo, la red o la decodificación del aparato.

En resumen

  • Xtream Codes es hoy una API de conexión que han retomado muchos servidores, no un servicio.
  • La conexión se basa en una dirección con puerto, un usuario y una contraseña que distinguen mayúsculas de minúsculas.
  • El script player_api.php devuelve el estado de la cuenta y después el catálogo mediante acciones como get_live_streams o get_series.
  • exp_date es una marca de tiempo Unix y max_connections limita las reproducciones simultáneas.
  • Las credenciales viajan en las direcciones: usa una contraseña única.

Preguntas frecuentes

¿Es legal Xtream Codes?

La técnica es neutra: es una interfaz de conexión entre un reproductor y un servidor. Lo que importa es el servicio al que te conectas. Debes tener los derechos sobre los programas que ves; un servicio que redifunde canales de pago sin autorización sigue siendo ilegal.

¿Por qué mi conexión funciona en un aparato y en otro no?

Comprueba primero si hay una errata, sobre todo en las mayúsculas o un espacio final. Si lo escrito es idéntico, puede que se haya alcanzado el límite de conexiones simultáneas, o que el segundo aparato esté en una red que bloquea el puerto que usa el servidor.

¿Cómo conozco la fecha de caducidad de mi cuenta?

La mayoría de los reproductores la muestran en la información del perfil. Si no, la respuesta de player_api.php contiene el campo exp_date, una marca de tiempo Unix que cualquier conversor en línea transforma en una fecha legible.

¿Hay que introducir una dirección de guía de TV con una conexión Xtream Codes?

Por lo general no: el reproductor obtiene la guía del mismo servidor. Una dirección de guía externa solo es útil si la del servicio está vacía o incompleta.

Para saber más

También te puede interesar

🧩

Formatos y técnica

El formato M3U / M3U8 explicado línea por línea

#EXTM3U, #EXTINF, tvg-id, tvg-logo, group-title: entiende cada línea de una lista M3U, evita errores de codificación y crea la tuya correctamente.

Leer el artículo
🧩

Formatos y técnica

EPG y XMLTV: de dónde viene la guía de programación

Estructura de un archivo XMLTV, correspondencia tvg-id, zonas horarias, guía vacía o desfasada una hora: entiende y repara la guía de programación EPG.

Leer el artículo
🧩

Formatos y técnica

HLS, MPEG-TS y DASH: los protocolos del streaming de vídeo

Segmentos, manifiestos, tasa de bits adaptativa, latencia y compatibilidad: entiende HLS, MPEG-TS y MPEG-DASH, los tres formatos del streaming de vídeo.

Leer el artículo

Descarga AICKO IPTV

La aplicación es gratuita y funciona con tu propia suscripción IPTV. Elige tu dispositivo: el enlace móvil te lleva automáticamente a la tienda correcta.

Android e iOS Versión móvil Windows 10 y 11 Versión PC Samsung, Android TV, Fire TV Versión televisión
Consíguelo en el App Store Disponible en Google Play Disponible enMicrosoft Store Disponible enAmazon Appstore