Ir al contenido

EIT Stream

EIT Stream es una herramienta para convertir archivos XMLTV en un flujo MPEG-TS con Tablas de Información de Eventos (EIT) para redes de transmisión como DVB, ATSC, ISDB.

Solo descarga el archivo binario y dale permisos de ejecución:

Ventana de terminal
curl -Lo /usr/bin/eit-stream http://cesbo.com/and/eit-stream
chmod +x /usr/bin/eit-stream

Crea un archivo de configuración /etc/eit-stream.conf con cualquier editor de texto. Ejemplo:

xmltv = /opt/xmltv.xml
output = udp://lo@239.0.0.1:1234
onid = 8000
codepage = 5
eit-days = 1
eit-rate = 1500
[tdt-tot]
country = EST
offset = +120
# Primer multiplex
[multiplex]
tsid = 1
[multiplex/service]
pnr = 101
xmltv-id = discovery
[multiplex/service]
pnr = 102
xmltv-id = history
# Segundo multiplex
[multiplex]
tsid = 2
xmltv = /opt/xmltv-2.xml
[multiplex/service]
pnr = 201
xmltv-id = euronews

Las líneas que comienzan con el símbolo # son comentarios y se ignoran.

  • xmltv - ruta al archivo xmltv local, o enlace http/https a un archivo xmltv o xmltv comprimido en gzip. Esta opción puede redefinirse en [multiplex] o en [multiplex/service]
  • output - dirección UDP de destino
  • onid - identificador de red original
  • codepage - codepage. Esta opción puede redefinirse en [multiplex] o en [multiplex/service]
  • eit-days - número de días en la guía EPG. Por defecto es 3
  • eit-rate - bitrate en kbit/s. Por defecto 15 kbit/s por cada servicio

Los siguientes codepages están disponibles para la codificación de texto:

  • 0 - Predeterminado. Latín (ISO 6937)
  • 1 - Europa Occidental (ISO 8859-1)
  • 2 - Europa Central (ISO 8859-2)
  • 3 - Europa del Sur (ISO 8859-3)
  • 4 - Europa del Norte (ISO 8859-4)
  • 5 - Cirílico (ISO 8859-5)
  • 6 - Árabe (ISO 8859-6)
  • 7 - Griego (ISO 8859-7)
  • 8 - Hebreo (ISO 8859-8)
  • 9 - Turco (ISO 8859-9)
  • 10 - Nórdico (ISO 8859-10)
  • 11 - Tailandés (ISO 8859-11)
  • 13 - Báltico (ISO 8859-13)
  • 14 - Céltico (ISO 8859-14)
  • 15 - Europa Occidental (ISO 8859-15)
  • 21 - UTF-8

Sección [tdt-tot]:

  • country - código de país en formato ISO 3166-1 alfa-3
  • offset - diferencia horaria en minutos respecto a GMT. Por ejemplo +120 es GMT+2 o -300 es GMT-5

Sección [multiplex]

  • tsid - identificador del flujo de transporte del multiplex
  • name - campo opcional para describir el multiplex

Sección [multiplex/service]

  • pnr - número de canal/pnr
  • xmltv-id - id del canal en xmltv
  • parental-rating - restricción de edad. El valor se define en pares: país y edad. Por ejemplo: parental-rating = EST 16 USA 14. Código de país en formato ISO 3166-1 alfa-3 (3 letras). Edad de 4 a 18 (inclusive), 0 - sin restricciones.

Con Astra puedes añadir el flujo UDP con EIT al MPTS. En la configuración de MPTS añade la entrada y establece la dirección UDP, por ejemplo en la configuración anterior la dirección es udp://lo@239.0.0.1:1234. En la configuración avanzada de MPTS activa la opción “Pass EIT”. Usa la opción no_eit en otras entradas para desactivar EIT de otras fuentes.

Registra el servicio en systemd para iniciar el servicio en segundo plano y arrancar automáticamente al iniciar el sistema. Crea el archivo /etc/systemd/system/eit-stream.service:

[Unit]
Description=eit-stream service
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/eit-stream /etc/eit-stream.conf
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

El siguiente comando puede usarse para gestionar el servicio:

  • iniciar servicio: systemctl start eit-stream
  • detener servicio: systemctl stop eit-stream
  • habilitar inicio automático: systemctl enable eit-stream
  • deshabilitar inicio automático: systemctl disable eit-stream

Para reiniciar el servicio una vez por la noche añade la siguiente línea en /etc/crontab:

0 2 * * * root systemctl restart eit-stream

XMLTV es un formato basado en XML para describir información de la programación de TV. Proporciona un mecanismo para almacenar información de canales, horarios de programas y sus metadatos asociados.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">
<tv generator-info-name="Some tv generator">
<channel id="1">
<display-name lang="en">Channel 1</display-name>
<icon src="http://site.domain/1.png"/>
</channel>
<channel id="2">
<display-name lang="en">Channel 2</display-name>
<icon src="http://site.domain/2.png"/>
</channel>
<programme start="20180920140000 +0300" stop="20180920141500 +0300" channel="1">
<title lang="en">Program title 1</title>
<desc lang="en">Program description 1</title>
<date>Program release date 1</date>
<category lang="en">Category 1</category>
<category lang="en">Category 2</category>
</programme>
<programme start="20180920150000 +0300" stop="20180920141600 +0300" channel="1">
<title lang="en">Program title 2</title>
<desc lang="en">Program description 2</title>
<date>Program release date 2</date>
<category lang="en">Category 1</category>
</programme>
<programme start="20180920143000 +0300" stop="20180920141500 +0300" channel="2">
<title lang="en">Program title 3</title>
<desc lang="en">Program description 3</title>
<date>Program release date 3</date>
<category lang="en">Category 1</category>
<category lang="en"> Category 2</category>
</programme>
</tv>