Skip to content

Formato del M3U

Sharkiller edited this page Sep 29, 2023 · 6 revisions

🔴 Reproductor de listas M3U

image image

🔴 #EXTM3U

Este encabezado es obligatorio que sea la primera línea de una lista M3U.

Puede contener una, todas o ninguno de los siguientes tags en la misma línea separados por un espacio.

🟡 url-tvg="{URLs separadas por comas}"

Este tag es usado para listar las URL de los EPG que van a ser usados para mostrar la programación en la lista de canales.
Puede ser una o múltiples URL separas por una coma.
La URL puede devolver un texto XMLTV o un texto comprimido con gzip de un XMLTV.

Ejemplo: url-tvg="https://domain1.com/epg1.xml,https://domain2.com/epg2.xml.gz"

🟡 player-buffer="{numero en segundos}"

Esta opción sobreescribe el búfer por defecto de todos los canales de esta lista, aun el buffer configurado dentro del manifiesto del canal.
Es útil para arreglar canales que hacen búfer constante o nunca cargan, o para disminuirlo para que canales carguen más rápido cuando el búfer por defecto es muy grande.
Esta opción también puede ser configurada por canal.

Ejemplo: player-buffer="30"

🟣 Ejemplo de línea completa

#EXTM3U player-buffer="20" url-tvg="https://domain1.com/epg1.xml,https://domain2.com/epg2.xml.gz"

🔴 Ejemplo de bloque de canal con todas las opciones

🟡 Clearkey

#KODIPROP:inputstream.adaptive.license_type=clearkey
#KODIPROP:inputstream.adaptive.license_key=0123456789abcdef0123456789abcdef:fedcba9876543210fedcba9876543210
#EXTINF:-1 tvg-logo="https://dominio1.com/logos/canal1.png" group-title="Noticias",Canal 1
https://dominio1.com/live/canal1/manifest.mpd

🟡 Widevine

#KODIPROP:inputstream.adaptive.license_type=com.widevine.alpha
#KODIPROP:inputstream.adaptive.license_key=https://miserver.com/widevine
#EXTINF:-1 tvg-logo="https://dominio1.com/logos/canal1.png" group-title="Noticias",Canal 1
https://dominio1.com/live/canal1/manifest.mpd

🟡 Widevine con certificado separado

#KODIPROP:inputstream.adaptive.license_type=com.widevine.alpha
#KODIPROP:inputstream.adaptive.license_key=https://miserver.com/widevine
#KODIPROP:inputstream.adaptive.server_certificate=https://miserver.com/widevine/certificate
#EXTINF:-1 tvg-logo="https://dominio1.com/logos/canal1.png" group-title="Noticias",Canal 1
https://dominio1.com/live/canal1/manifest.mpd

🟡 Headers personalizados

#KODIPROP:inputstream.adaptive.stream_headers=origin=https://videoplayer.com
#KODIPROP:inputstream.adaptive.stream_headers=referer=https://videoplayer.com/
#KODIPROP:inputstream.adaptive.stream_headers=user-agent=Mi UserAgent Personalizado/137.0
#EXTINF:-1 tvg-logo="https://dominio1.com/logos/canal1.png" group-title="Noticias",Canal 1
https://dominio1.com/live/canal1/manifest.mpd
#EXTVLCOPT:http-origin=https://videoplayer.com
#EXTVLCOPT:http-referrer=https://videoplayer.com/
#EXTINF:-1 tvg-logo="https://dominio1.com/logos/canal1.png" group-title="Noticias",Canal 1
https://dominio1.com/live/canal1/manifest.mpd

🟡 Forzar formato del video

#KODIPROP:inputstream.adaptive.file_type=mpd
#EXTINF:-1 tvg-logo="https://dominio1.com/logos/canal1.png" group-title="Noticias",Canal 1
https://dominio1.com/live/canal1.php

🟡 Todas las opciones

#KODIPROP:inputstream.adaptive.stream_headers=origin=https://videoplayer.com
#KODIPROP:inputstream.adaptive.stream_headers=referer=https://videoplayer.com/
#KODIPROP:inputstream.adaptive.stream_headers=user-agent=Mi UserAgent Personalizado/137.0
#EXTVLCOPT:http-origin=https://videoplayer.com [OPCIONAL]
#EXTVLCOPT:http-referrer=https://videoplayer.com/ [OPCIONAL]
#EXTINF:-1 player-buffer="20" tvg-id="Canal1.ar" tvg-logo="https://dominio1.com/logos/canal1.png" group-title="Noticias",Canal 1
https://dominio1.com/live/canal1/manifest.mpd

🟢 #KODIPROP:inputstream.adaptive.file_type=

Cuando el enlace del video no termina en un formato reconocido, como por ejemplo .php o carece de extensión, es necesario asignar el formato correcto del contenido. Valores admitidos: mpd, m3u8

🟢 #KODIPROP:inputstream.adaptive.stream_headers=

Utilizado para listar los headers que uno desea modificar. Se puede usar múltiples veces para todos los headers necesarios. Formato {header}={valor}

🟢 #KODIPROP:inputstream.adaptive.license_type=

Valores admitidos: clearkey, org.w3.clearkey, widevine y com.widevine.alpha

🟢 #KODIPROP:inputstream.adaptive.license_key=

🔵 Para Clearkey (clearkey y org.w3.clearkey)

Formatos admitidos:

0123456789abcdef0123456789abcdef:fedcba9876543210fedcba9876543210

"0123456789abcdef0123456789abcdef":"fedcba9876543210fedcba9876543210"

{"0123456789abcdef0123456789abcdef":"fedcba9876543210fedcba9876543210"}
{"keys":[{"kty":"oct","k":"/ty6mHZUMhD+3LqYdlQyEA","kid":"ASNFZ4mrze8BI0VniavN7w"}],"type":"temporary"}

También se soporta keys múltiples:

{
    "0123456789abcdef0123456789abcdef":"fedcba9876543210fedcba9876543210", 
    "fedcba9876543210fedcba9876543210":"0123456789abcdef0123456789abcdef"
}
{"keys":[
    {"kty":"oct","k":"/ty6mHZUMhD+3LqYdlQyEA","kid":"ASNFZ4mrze8BI0VniavN7w"},
    {"kty":"oct","k":"ASNFZ4mrze8BI0VniavN7w","kid":"/ty6mHZUMhD+3LqYdlQyEA"}
],"type":"temporary"}

URL que devuelve cualquiera de los formatos anteriores:

http://servidor-de-clearkey.com/canal1.php

Si la url no devuelve un formato válido, entonces se realiza un POST a la misma url con datos de key ids en formato de petición de acuerdo especificación EME:

{"kids":[
    "ASNFZ4mrze8BI0VniavN7w",
    "/ty6mHZUMhD+3LqYdlQyEA"
],"type":"temporary"}

Que necesitan responder con un formato de licencia de acuerdo especificación EME válido:

{"keys":[
    {"kty":"oct","k":"/ty6mHZUMhD+3LqYdlQyEA","kid":"ASNFZ4mrze8BI0VniavN7w"},
    {"kty":"oct","k":"ASNFZ4mrze8BI0VniavN7w","kid":"/ty6mHZUMhD+3LqYdlQyEA"}
],"type":"temporary"}

🔵 Para Widevine (widevine y com.widevine.alpha)

URL del servidor de Widevine

Ejemplo: #KODIPROP:inputstream.adaptive.license_key=https://miserver.com/widevine

🟢 #KODIPROP:inputstream.adaptive.server_certificate=

Si el servidor de Widevine requiere una URL separada para obtener el certificado de encriptación se puede configurar con esta línea.

Ejemplo: #KODIPROP:inputstream.adaptive.server_certificate=https://miserver.com/widevine/certificate

🟢 #EXTVLCOPT:http-origin/referrer

Solo como compatibilidad. Es preferible usar #KODIPROP:inputstream.adaptive.stream_headers=

🟢 #EXTINF:-1 {tags...},Nombre del canal

Información del canal. Puede contener uno o todos de los siguientes tags en la misma línea separados por una coma.

🔵 tvg-logo

URL del logo del canal para ser listado.

🔵 group-title

Nombre del grupo del canal.

🔵 tvg-id

ID para vincular el canal con la información del EPG.

🔵 player-buffer

Un número en segundos para sobreescribir el búfer por defecto del canal.

🟣 Ejemplo de línea con todos los tags

#EXTINF:-1 player-buffer="5" tvg-id="Canal1.ar" tvg-logo="https://domain1.com/logos/channel1.png" group-title="Noticias",Canal 1

🔴 Parámetro de URL &ordenar

Si en la URL de la lista .m3u está presente el parámetro &ordenar los canales se ordenarán en el siguiente orden:

Alfabéticamente por group-title y dentro de los mismos alfabéticamente por nombre de canal

🔴 Parámetro de URL &epg-disable

Si en la URL de la lista .m3u está presente el parámetro &epg-disable no se cargaran los EPG aun cuando la opción global de EPG esté activa en la extensión.

🔴 Parámetro de URL &epg-enable

Si en la URL de la lista .m3u está presente el parámetro &epg-enable se cargará la programación de los EPG aun cuando la opción global de EPG esté desactivada en la extensión.