Manual M3U para TDT Spain

Guía completa para crear listas compatibles con las extensiones avanzadas de TDT Spain.

Introducción

TDT Spain es compatible con listas M3U estándar, pero además incorpora una serie de extensiones propias identificadas mediante directivas #EXTV-.

Estas extensiones permiten trabajar con streams dinámicos, añadir cabeceras HTTP personalizadas, extraer automáticamente URLs ocultas dentro de páginas web o integrar plataformas especiales como YouTube.

Importante: cualquier lista M3U tradicional seguirá funcionando sin modificaciones. Las directivas EXTV amplían las capacidades del formato estándar.

Estructura básica de un canal


#EXTM3U

#EXTINF:-1 tvg-id="canal" tvg-name="canal" group-title="General",Mi Canal
#EXTV-index: 1
https://servidor.com/stream.m3u8

¿Qué significa cada línea?

#EXTM3U indica el inicio de la lista.

#EXTINF contiene toda la información descriptiva del canal.

#EXTV-index almacena un índice interno utilizado por TDT Spain.

La última línea corresponde a la URL que será reproducida.

Ejemplo 1: Canal con URL directa

#EXTINF:-1 tvg-id="euroindiemusic" tvg-epgid="euroindiemusic.TV" tvg-name="euroindiemusic" tvg-logo="https://graph.facebook.com/euroindiemusic/picture?width=200&height=200" group-title="Musica",Euro Indie Music Chart TV
#EXTV-index: 1
https://57068da1deb21.streamlock.net/euroindiemusic/euroindiemusic/playlist.m3u8

#EXTINF

El valor -1 indica una duración indefinida. Es el valor habitual para canales de televisión en directo.

tvg-id

Identificador interno único utilizado para identificar el canal dentro de la lista.

tvg-epgid

Identificador utilizado para relacionar el canal con una guía electrónica de programación (EPG).

tvg-name

Nombre interno asociado al canal.

tvg-logo

URL de la imagen que se mostrará como logotipo.

group-title

Permite clasificar el canal dentro de una categoría.

Nombre visible

El texto situado después de la coma será el nombre que verá el usuario.

#EXTV-index

Índice interno utilizado para organizar los elementos de la lista.

URL directa

Al tratarse de una URL M3U8 real, la aplicación puede reproducirla directamente sin procesamiento adicional.

 

Ejemplo 2: Emisora de radio

 
#EXTINF:-1 tvg-id="kissfm" tvg-logo="https://graph.facebook.com/kissfm.es/picture?width=200&height=200" group-title="Radio;Musica" tvg-name="Kiss FM",Kiss FM
#EXTV-index: 1
#EXTV-radio: "true"
https://bbkissfm.kissfmradio.cires21.com/bbkissfm.mp3
 

#EXTINF

El valor -1 indica una emisión en directo sin duración definida.

tvg-id

Identificador único de la emisora dentro de la lista.

tvg-logo

URL de la imagen utilizada como logotipo de la emisora.

group-title

Permite clasificar la emisora en una o varias categorías. En este ejemplo aparece en los grupos Radio y Musica.

tvg-name

Nombre interno de la emisora.

Nombre visible

El texto situado después de la coma será el nombre mostrado al usuario.

#EXTV-index

Índice interno utilizado para organizar los elementos de la lista.

#EXTV-radio

Marca el elemento como una emisora de radio. Cuando el valor es "true", la aplicación puede aplicar un comportamiento específico para radios, como mostrar un visualizador de audio, utilizar configuraciones de buffer optimizadas o desactivar funciones exclusivas de televisión.

URL del stream

URL directa del flujo de audio. Puede apuntar a emisiones MP3, AAC, HLS u otros formatos compatibles con el reproductor.

Ejemplo 3: Extracción dinámica de URL

Algunas webs no muestran directamente la URL de reproducción. En estos casos TDT Spain puede localizarla automáticamente.

#EXTV-streamtype: "geturl"

Funcionamiento

  1. Se descarga la página web indicada.
  2. Se analiza su contenido.
  3. Se aplica una expresión regular.
  4. Se obtiene la URL real del stream.
  5. Se inicia la reproducción.

Cabeceras HTTP

#EXTV-headers: user-agent="Mozilla/5.0" referer="https://ejemplo.com" origin="https://ejemplo.com"

User-Agent: identifica el dispositivo o cliente.

Referer: indica desde qué página se accede.

Origin: identifica el origen de la solicitud.

Base URL

#EXTV-baseurl: "https:"

Permite completar enlaces relativos.

Patrón de extracción

#EXTV-patron: "expresion_regular"

Define el patrón utilizado para localizar el stream. Debe estar en codificación URL Encode.

El patrón debe contener un grupo de captura que devuelva la URL final.

Ejemplo 4: Streams de YouTube

#EXTINF:-1 tvg-id="IB3 2" group-title="Baleares",IB3 2 
#EXTV-index: 1
#EXTV-streamtype: "youtube"
https://www.youtube.com/IB3/live

Cuando se utiliza el tipo youtube, TDT Spain detecta automáticamente el directo activo y recupera el stream real.

Proceso interno

  1. Acceso al canal de YouTube.
  2. Detección del directo activo.
  3. Obtención del stream.
  4. Inicio de la reproducción.

URLs compatibles

https://www.youtube.com/@usuario/live
https://www.youtube.com/c/canal/live
https://www.youtube.com/channel/ID/live
https://www.youtube.com/usuario/live

Referencia rápida

Directiva Descripción
#EXTINF Información descriptiva del canal
#EXTV-index Índice interno
#EXTV-streamtype Tipo de procesamiento del stream
#EXTV-headers Cabeceras HTTP personalizadas
#EXTV-baseurl Prefijo para URLs relativas
#EXTV-patron Expresión regular de extracción en codificación URL Encode
tvg-id Identificador del canal
tvg-epgid Identificador EPG
tvg-logo URL del logotipo
group-title Categoría del canal

Buenas prácticas

Errores frecuentes