• Hola Invitado, nos gustaría recordarte que mantener este sitio en línea conlleva unos gastos mensuales y anuales.

    Sin vuestra ayuda mensual no es posible seguir en pie, no hay mucho más que contar.

    Si quieres colaborar para que sea posible por lo menos seguir en pie como comunidad, puedes hacerlo mediante alguno de los métodos disponibles en esta página: https://www.lonasdigital.com/donaciones/

    Recuerda que si necesitas invitación para acceder al foro, puedes solicitarla en nuestro Grupo de Telegram


Estructura de una lista .m3u para IPTV

[Tutorial] 
Psycomy

Psycomy

Administrador
Registrado
1 Oct 2006
Mensajes
223
Reacciones
28
Puntos
81
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:


cache.php





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.


cache.php



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]CINE[/COLOR]
http://?


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


cache.php



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.


cache.php



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
http://200.76.77.237/LIVE/H01/CANAL444/PROFILE03.m3u8?supertvlat=/.ts


#EXTM3U
#EXTINF:-1 ,Película de ejemplo (2017)
https://servidor.com/película.mpg


#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
http://200.76.77.237/LIVE/H01/CANAL444/PROFILE03.m3u8?supertvlat=%2F.ts
#EXTINF:0 ,AZ Cinema
http://200.76.77.237/LIVE/H01/CANAL425/PROFILE03.m3u8?-1332%2F1499-20150816T153535.ts=-1


Lista típica con algunos metadatos
#EXTM3U
#EXTINF:0, tvg-logo="amc.png" tvg-name="AMC" group-title="CINE",AMC
http://200.76.77.237/LIVE/H01/CANAL444/PROFILE03.m3u8?supertvlat=%2F.ts
#EXTINF:-1, tvg-logo="http://foto.com/Az-Cinema.png" tvg-name="AZ Cinema" group-title="CINE",AZ Cinema
http://200.76.77.237/LIVE/H01/CANAL444/PROFILE03.m3u8?supertvlat=%2F.ts


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
http://200.76.77.237/LIVE/H01/CANAL444/PROFILE03.m3u8?supertvlat=%2F.ts



Fuente: https://blog-conocimientoadictivo.blogspot.com/2017/01/estructura-de-una-lista-m3u-para-iptv.html
 
Última edición:
Muy currado, gracias
 
buen trabajo
 
Esto me lo tengo que leer con calma, jejeje
 
Ufff, muchas gracias. Ha hincar los codos.
 
Hola!. He creado un pequeño programa en Java para ordenar las listas. Lo publico por si a alguien le pudiese valer.
Existen algunos bugs con el regex, pero lo cierto es que a mí me ha valido muy bien para ordenar mi lista.
Tiene que haber un fichero de texto con el orden de los canales que se quiera obtener. Al iniciar el programa, te preguntará por el nombre del fichero que contiene el orden de los canales. Luego te preguntará por tu lista de canales. Por último, los ordenará y te lo sacará en un nuevo archivo IPTV. Según he hecho el código, vale para los canales españoles, aunque como tenéis el código, lo podéis modificar a vuestro gusto.
Java:
package iptvbmaker;

import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class principal {

    public static void main(String[] args)  {
        //Fichero que contiene el orden de los canales.
        Scanner input = new Scanner(System.in);
        System.out.println("----CONVERSOR DE LISTAS 1.0----");
        System.out.println("1)- Añadir extensiones de los ficheros. \n2)- Los ficheros tienen que estar en el mismo directorio que el ejecutable de este programa para que funcione");
        System.out.println("Introduzca el nombre del fichero .txt que contiene el orden de los canales");
        String ficheroOrden = input.nextLine();
        System.out.println("Introduzca el fichero .m3u que quieres ordenar");
        String ficheroLista = input.nextLine();
    
        try {
        FileReader orden = new FileReader(ficheroOrden);//Fichero que contiene el orden.
        Scanner scOrden = new Scanner(orden);
    
        
        //Fichero de salida M3U.
        FileWriter salidam3u = new FileWriter("salidaOrdenada.m3u");
        PrintWriter output = new PrintWriter(salidam3u);
    
        //Lista de canales que tienen varias versiones
        List<String> conNumero = new ArrayList<String>();
        List<String> listaConTitulo = new ArrayList<String>();
        List<String> listaRepes = new ArrayList<String>();
        boolean tieneNumero = false;
    
 
        output.write("#EXTM3U\n");
    
        while(scOrden.hasNextLine()) {
            String canal = scOrden.nextLine();
        
            //Si el canal nombre del canal contiene un número, se pone en una lista.
            if(canal.matches(".*[0-9].*")) {
                conNumero.add(canal);
                tieneNumero = true;
            } else {
                tieneNumero = false;
            }
            //Fichero de la lista M3U.
            InputStream m3u = new FileInputStream(ficheroLista);
            Scanner scm3u = new Scanner(m3u);
        
            while(scm3u.hasNextLine()) {
                String punteroLinea = scm3u.nextLine();
                if(!punteroLinea.contains("http") && (punteroLinea.contains("#EXTINF:-1,ES|") || punteroLinea.contains("SPAIN") )&& !listaRepes.contains(punteroLinea)) {
                            //Encontrar que la cadena de caracteres completa contenga en alguna palabra esta sub-cadena.
                            //Hay que comprobar que la lista no contiene nada que matchee con punteroLinea
                            if(punteroLinea.contains(canal) && !listaConTitulo.contains(punteroLinea)) {
                                //Si tiene número, los añado para que luego cuando vuelva el canal sin número, los evite.
                                if(tieneNumero) {
                                    listaConTitulo.add(punteroLinea);
                                }
                                output.write(punteroLinea+"\n"); //Escribe el nombre del canal en el nuevo fichero.
                                listaRepes.add(punteroLinea);
                                output.write(scm3u.nextLine()+"\n"); //Escribe el link del enlace.
                            }
                        
                        }
                    
                
                
                
                }
            //Cierro el scanner de la lista m3u
                scm3u.close();
            
            }
        
        
        
        
    
    
        //Cierro los elementos scanner.
        scOrden.close();
        output.close();
        input.close();
        System.out.println("EXITO!- COMPRUEBA LOS RESULTADOS EN EL FICHERO salidaOrdenada.m3u");
        }catch (Exception e) {
            System.out.println("COMPRUEBA QUE EL NOMBRE DE LOS FICHEROS SEA CORRECTO");
        }
        }

}
EJEMPLO DEL ARCHIVO QUE ORDENA LOS CANALES:
Código:
LA 1
LA 2
ANTENA 3
CUATRO
TELECINCO
#0
#VAMOS
TELEMADRID
CANAL SUR
LIGA BAR
A3
SERIES 2
SERIES
TRECE
POPULAR
FOX
AMC BREAK
AMC CRIME
AXN
DARK
TNT
COMEDY CENTRAL
CALLE 13
COSMO
AMC
LA RESISTENCIA
TEN
AXN WHITE
SYFY
ENERGY
FDF
FACTORIA DE FICCION
DMAX
DKISS
NEOX
ESTRENOS 2
ESTRENOS
CLÁSICOS
ACCIÓN
COMEDIA
DRAMA
CINE Ñ
FEST
TCM
HOLLYWOOD
SUNDACE
PARAMOUNT
LIGA 1
LIGA 2
LIGA 3
LIGA 4
LIGA 5
LIGA 6
LIGA 7
LIGA 8
LIGA 9
LIGA 10
LIGA
LIGA DE CAMPEONES 1
LIGA DE CAMPEONES 2
LIGA DE CAMPEONES 3
LIGA DE CAMPEONES 4
LIGA DE CAMPEONES 5
LIGA DE CAMPEONES 6
LIGA DE CAMPEONES 7
LIGA DE CAMPEONES 8
LIGA DE CAMPEONES 9
LIGA DE CAMPEONES 10
LIGA DE CAMPEONES
DEPORTES 1
DEPORTES 2
DEPORTES 3
DEPORTES 4
DEPORTES 5
DEPORTES 6
DEPORTES 7
DEPORTES 8
DEPORTES 9
DEPORTES 10
DEPORTES
ELLAS
GOLF
XTRM
BLAZE
CRIMEN+INV
DAZN F1
DAZN 1
DAZN 2
EUROSPORT 1
EUROSPORT 2
EUROSPORT 3
GOL TV
TELEDEPORTE
CAZA
IBERALIA
TOROS
REAL MADRID
BARÇA
NATIONAL GEOTRAPHIC
NATIONAL GEO WILD
NAT GEOTRAPHIC
NAT GEO WILD
HISTORIA
DISCOVERY CHANNEL
ODISEA
VIAJAR
DECASA
COCINA
DIVINITY
BE MAD
GALICIA
NOVA
BE MADRID
BABY TV
DISNEY JUNIOR
CANAL PANDA
NICK JUNIORNICKELODEON
DREAMWORKS
DISNEY CHANNEL
BOING
CLAN
MTV 00S
MTV ESPAÑA
MEZZO
MEZZO LIVE HD
PLAYBOY
DAZN 3
DAZN 4
LIGA DE CAMPEONES 3
LIGA DE CAMPEONES 4
LIGA DE CAMPEONES 5
LIGA DE CAMPEONES 6
LIGA DE CAMPEONES 7
LIGA DE CAMPEONES 8
LIGA DE CAMPEONES 9
LIGA DE CAMPEONES 10
NAVARRA
ARAGON
TV3
EL TORO TV
ALQUILER 1
ALQUILER 2
ALQUILER 3
ALQUILER 4
ALQUILER 5
ALQUILER 6
ALQUILER 7
ALQUILER 8
ALQUILER 9
ALQUILER 10
EN DETALLE:
La lista la va ordenando según va matcheando palabras clave incluidas en este último archivo. De esta manera, si por ejemplo en tu lista La 1 contiene señal SD, HD,FHD y HEVC, aparecen todas juntas, luego La 2 aparecen también todas juntas: SD, HD, FHD y HEVC, y así sucesivamente. Así se agrupan las señales a la vez que te las ordena, sin necesidad de irlo haciendo manualmente. Además, tal y como he explicado antes, tu le metes la lista de todos los países, y te salen filtrados solo los españoles.

Un saludo y espero que les sirva!.
 
Última edición:

Temas similares

Respuestas
1
Visitas
2K
siu2
J
Respuestas
7
Visitas
2K
Mireto
Mireto
H
Respuestas
1
Visitas
571
Javilonas
Javilonas
Atrás
Arriba