Estructura de una lista .m3u para IPTV

IPTV es un sistema o tecnología que usa protocolos IP e Internet para transmitir contenidos multimedia en streaming. Habitualmente suele usarse para retransmitir televisión a través de redes de banda ancha.
No debe confundirse con Televisión por Internet o Internet TV. Ambas tecnologías usan los mismos protocolos o casi casi los mismos, pero la forma de entrega de los contenidos difiere. Mientras que en Internet TV los contenidos suelen ofrecerse de forma libre y no están geolocalizados y los contenidos son accesibles normalmente con un navegador de internet, en IPTV los contenidos se ofrecen solo a usuarios registrados o de suscripción y suele estar geolocalizado. Es casi la misma diferencia que puede haber entre TV por cable o TV de paga y la TV pública o abierta. Este sistema últimamente es usado para ofrecer TV en directo (o casi), de forma ilegal casi siempre, a usuarios que no disponen de una suscripción a un servicio de TV de paga.

M3U es un formato de archivo de texto plano (se puede abrir con el mismo Bloc de Notas de Windows) usado para crear listas de reproducción o Play Lists. M3U es el acrónimo de MPEG Versión 3.0 URL. Inicialmente solo era soportado por el reproductor Winamp, pero con el tiempo se ha convertido en un estándar para la creación de play lists y es soportado por casi todos los reproductores del mercado.
Originalmente fue creado para crear listas de reproducción musicales, pero actualmente es un tipo de archivo usado para crear listas IPTV.

El objetivo de este artículo es que aprendamos como se estructuran las listas m3u para IPTV y podamos nosotros mismos crear de cero o modificar listas ya hechas para que se ajusten mejor a nuestros gustos y/o necesidades. Como siempre recomendamos en Conocimiento Adictivo, es mucho más satisfactorio saber cómo son y se hacen las cosas que esperar que otros con sus caprichos personales nos digan cómo deben ser.

ESTRUCTURA DE UN ARCHIVO M3U
La estructura de un archivo m3u debe contener una serie de etiquetas determinadas distribuidas en tres líneas.
La estructura es la siguiente:
#EXTM3U
#EXTINF: (duración), (atributos),(título del canal)
URL

#EXTM3U
Etiqueta obligatoria y debe ir al principio del documento. Solo se escribe una única vez en todo el documento e indica a los reproductores que esa es una lista M3U Extendida. Es Extendida porque incluye atributos adicionales que no están presentes en una lista M3U básica.

#EXTINF:
Indica donde comienzan los metadatos adicionales de cada streaming. Debe usarse una línea para cada streaming incluido en la lista. Por ejemplo si listamos 5 canales de TV, habrá que crear 5 líneas #EXTINF:

(duración)
Indica la duración en segundos del archivo multimedia referenciado. En listas IPTV se usan dos parámetros. o bien 0 o bien -1. Ambos parámetros tienen la misma función, indican que la duración del streaming no es fija y no es posible determinarse. Algunos reproductores lo interpretan de forma ligeramente diferente, el parámetro 0 se refiere a una retransmisión almacenada en caché, y por lo tanto se puede hacer resumen de la retransmisión, esto es, hacer una pausa y continuar en el mismo punto donde se dejó. El parámetro -1 indica que es una retransmisión en vivo y no se puede hacer resumen.

Ejemplos:

#EXTINF:523 indica que es un archivo almacenado que tiene una duración de 523 segundos
#EXTINF:0 indica que es una retransmisión en vivo desde un almacenamiento en caché que permite resumir la reproducción
#EXTINF:-1 indica que es una retransmisión en vivo y no permite hacer resumen

Tras el parámetro de duración debe colocarse un espacio en blanco
Ejemplo: #EXTINF:-1 ,Nombre del canal

(atributos)
Son una serie de etiquetas opcionales que añaden metadatos que pueden ser leídos por los reproductores. No todos los reproductores son capaces de interpretar todos los atributos.
Entre los atributos debe dejarse un espacio en blanco.
Existen varias etiquetas de atributos, pero las más usadas en listas IPTV son las siguientes:

tvg-id=”ID EPG”
Indica el  ID o identificador de EPG o guía de programación. EPG (Electronic Program Guide) es similar al teletexto, ofrece la programación horaria de los diferentes canales de TV. En las retransmisiones de TV digital, aparte de los datos de video y audio, también se pueden enviar datos adicionales con la programación de ese canal. En IPTV esto no es posible y normalmente se ofrecen estas guías en formato XML que hay que descargar y usar de forma local, o bien descargar de una URL. La siguiente imagen es un ejemplo de parte de un XML configurado para ser usado como Guía EPG:


No todos los reproductores son compatibles con EPG. Algunos reproductores que sí son compatibles son RosadínTV, ProgDVB en PC o IPTV Pro en Android, los cuales permiten cargar fuentes EPG.

Si especificamos el ID de cada canal listado en la guía EPG, el reproductor mostrará la información de dicho canal. La forma de mostrar esta información difiere en cada reproductor.


Otra forma en la que se puede asociar un determinado canal a su información EPG es que el nombre del canal debe ser exactamente el mismo que el de la lista EPG de dicho canal.

Ejemplo:

#EXTINF:-1, tvg-id="AXN" ,AXN
#EXTINF:-1, tvg-name="AXN" ,AXN

En estos dos ejemplos el resultado sería el mismo si en la guía EPG el canal AXN tuviese exactamente ese nombre como ID.

tvg-shift=ajuste
Este es un ajuste para los horarios de la guía EPG. Es posible que la guía EPG usada no esté ajustada a tu horario. Con este parámetro podremos reajustar ese dato. Siempre debe tener los signos + ó -.
Este parámetro se coloca tras la etiqueta inicial #EXTM3U y tras un espacio en blanco.

Ejemplo:

#EXTM3U  tvg-shift=+2

En este ejemplo indicamos que al horario usado en la guía EPG deben sumarse dos horas.

tvg-name="Nombre del Canal"
Especifica el nombre que va a recibir el canal de forma interna. No es el nombre que aparecerá en los reproductores. Suele usarse en vez de la etiqueta tvg-id="". Este nombre suele ser el que aparece en la guía EPG que muestran algunos reproductores. Si en nuestro archivo m3u se combinan las etiquetas tvg-id="" y  tvg-name="" , el primero indica el ID del canal en la guía y el segundo es el nombre que se verá cuando se muestra la guía. Si solo se usa el parámetro tvg-name="", ese será el identificador en la guía EPG.

group-title=”Nombre de Grupo”
Este parámetro indica el grupo o categoría del canal. Puede que queramos agrupar los diferentes canales en categorías, por ejemplo Películas, Culturales, Infantiles, etc…
Algunos reproductores permiten agrupar los canales por categorías y con este parámetro podremos indicarle a que categoría pertenece cada canal.

Ejemplo:

#EXTINF:-1, tvg-name="AXN" group-title="Cine y Series" ,AXN
#EXTINF:-1, tvg-name="Sony HD" group-title="Cine y Series" ,Sony
#EXTINF:-1, tvg-name="CNN" group-title="Noticias" ,CNN en español
#EXTINF:-1, tvg-name="Discovery Channel" group-title="Culturales" ,Discovery

A este parámetro o atributo podemos aplicarle una serie de "adornos" como un fondo de color, texto en negrita, en itálica, etc… Las etiquetas a usar son similares a las usadas en HTML. Las etiquetas de adorno se especificarán entre corchetes  [ ] y tendrán etiqueta de inicio y final [ / ]. Algunos reproductores, como RosadinTV son capaces de interpretar estos datos y mostrarán esos "adornos" en la lista de canales.

Ejemplo:

#EXTINF:-1, group-title="CINE",[COLOR orange][B][I]CINE[/COLOR][/B][/I]
http://?

En la siguiente imagen, vemos el efecto de aplicar el anterior ejemplo, aunque solo se le aplicó la etiqueta de color.


En este ejemplo se mostrará la categoría CINE con un fondo naranja y el texto en negrita y en itálica. No se especifica una URL para el streaming porque su finalidad es ser un adorno. Normalmente este tipo de adornos se usan en una sola línea, como si fuese un canal, pero sin especificar una URL, como en el ejemplo anterior.

tvg-logo=”URL del LOGO”
Este parámetro permite especificar la ruta a un logo que identifique al canal. Algunos reproductores son compatibles con este parámetro y muestran una imagen o logo que representa a cada canal. No todos los reproductores son compatibles con este parámetro, PotPlayer por ejemplo no lo es, aunque RosadinTV o IPTV PRO sí lo son.


La dirección suele ser una URL a un archivo de imagen almacenado en internet, aunque se puede especificar una dirección local. Cuando la dirección es local, se puede indicar una dirección relativa o absoluta. Si es relativa, el logo debe encontrarse en la misma ubicación de la lista m3u.
Si vamos a usar listas remotas o vamos a compartir nuestras listas IPTV, lo ideal sería usar una URL para el logo, pues así nos aseguramos de que siempre estén disponibles estemos donde estemos, siempre que haya conexión a internet.

Ejemplos:

Usando una URL
#EXTINF:-1 tvg-logo="http://rockypoint360.com/rocky-point-business-directory/wp-content/uploads/2015/10/logo-megacable_1.jpg" group-title="España",MEGA

Usando una dirección local absoluta
#EXTINF:-1 tvg-logo="C:\Users\Propietario\Documents\RosadinTV\Logos\Logos 2017\mega.png" group-title="España",MEGA

Usando una dirección local relativa
#EXTINF:-1 tvg-logo="mega.png" group-title="España",MEGA

audio-track="IDIOMA"
Con este parámetro podemos especificar el o los idiomas de audio de los que consta el streaming. Los idiomas se deben especificar usando los códigos de idioma ISO 639-2. Si nuestro streaming tiene varios idiomas de audio disponibles, podemos especificarlos todos usan comas como separador. Algunos reproductores leen este parámetro y nos muestra los idiomas disponibles para el canal que estamos reproduciendo.

Ejemplos:

#EXTINF:-1 tvg-logo="mega.png" group-title="España" audio-track="spa",MEGA
#EXTINF:-1 tvg-logo="mega.png" group-title="España" audio-track="spa,rus,eng",MEGA

Estas son las etiquetas más comunes en listas m3u para IPTV, aunque hay varias más, incluso se pueden especificar parámetros tales como calidad preferente, idioma inicial, relación de aspecto, subtitulado, etc… Pero para nuestros propósitos de crear una lista m3u funcional sin complicaciones, estas son las que usaremos habitualmente. incluso es posible que ninguna.

(título del canal)
Aquí indicaremos el nombre que aparecerá en los reproductores. debe ir precedido de una coma y sin espacios tras ella.

Ejemplos:

#EXTINF:-1 tvg-logo="mega.png" group-title="España",MEGA
#EXTINF:-1 ,MEGA
#EXTINF:-1, tvg-name="AXN HD" ,AXN

URL
Aquí especificaremos la URL o dirección de internet que está retransmitiendo el streaming del canal que queremos ver.
Podemos especificar la URL a un streaming en directo, lo habitual en IPTV o a un archivo de video almacenado en un servidor o también la dirección a un archivo local.

Ejemplos:

#EXTM3U
#EXTINF:0, tvg-id="1" tvg-logo="amc.png" tvg-name="AMC"  group-title="CINE",AMC

#EXTM3U
#EXTINF:-1 ,Película de ejemplo (2017)

#EXTM3U
#EXTINF:-1,Star Wars Episodio I
H:\PELICULAS\STAR WARS\Star Wars Episode I The Phantom Menace (1999).mkv


Mostraremos a continuación unos ejemplos de listas típicas m3u para IPTV:
las URLs mostradas son ficticias y solo se usan como ejemplo.

Lista a un archivo local
#EXTM3U
#EXTINF:-1,Star Wars Episodio I
H:\PELICULAS\STAR WARS\Star Wars Episode I The Phantom Menace (1999).mkv

Lista simple
#EXTM3U
#EXTINF:-1 ,AMC
#EXTINF:0 ,AZ Cinema

Lista típica con algunos metadatos
#EXTM3U
#EXTINF:0, tvg-logo="amc.png" tvg-name="AMC"  group-title="CINE",AMC
#EXTINF:-1,  tvg-logo="http://foto.com/Az-Cinema.png" tvg-name="AZ Cinema"  group-title="CINE",AZ Cinema

Lista con un solo canal y todos los parámetros comentados anteriormente:
#EXTM3U  tvg-shift=+2
#EXTINF:-1,  tvg-id="AXNHD" tvg-name="AXN HD" tvg-logo="http://foto.com/Az-Cinema.png" group-title="CINE" audio-track="spa,rus,eng",AXN


No vamos a indicar donde conseguir listas M3u IPTV, pues ya hemos comentado que suelen ser ilegales, pero una sencilla búsqueda en internet te permitirá encontrarlas.
Actualmente los canales de las listas M3U descargables suelen caerse rapidísimamente y duran un suspiro. Las listas que suelen durar más son las llamadas listas remotas. Dichas listas son archivos M3U almacenados en internet y que suelen actualizar su contenido de forma frecuente para minimizar los tiempos de inactividad cuando se caen las fuentes de los canales.
Aunque les acabo de decir que no diremos dónde encontrar fuentes IPTV…no me puedo resistir y les indicaré de donde saco mis listas remotas. Actualmente es la más estable y duradera que he encontrado:
Puedes usar las listas recomendadas de forma remota, como te lo indicarán en su página.
Yo personalmente hago listas IPTV basándome principalmente en sus listas remotas, pero seleccionando únicamente los canales que me interesan. Esta gente, como medida de seguridad, actualizan frecuentemente las URL (al menos una vez al día) así que las listas que creo solo funcionan como mucho 24 horas. Pero por su forma de crear las URLs, se pueden actualizar rápidamente. El proceso de actualizar tu lista local personalizada basada en las listas de exabyte se explica en un post que publicamos en nuestra APP. Puedes preguntar en nuestro chat como obtener ese tutorial.

Espero que el objetivo inicial haya sido cumplido en buena parte y nos vemos en otra ocasión.

0 comentarios