Pular para o conteúdo

EIT Stream

O EIT Stream é uma ferramenta para converter arquivos XMLTV em stream MPEG-TS com tabelas de informação de eventos (EIT) para redes de transmissão como DVB, ATSC e ISDB.

Basta baixar um único arquivo binário e dar permissão de execução:

Terminal window
curl -Lo /usr/bin/eit-stream http://cesbo.com/and/eit-stream
chmod +x /usr/bin/eit-stream

Crie o arquivo de configuração /etc/eit-stream.conf com qualquer editor de texto. Exemplo:

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
# First multiplex
[multiplex]
tsid = 1
[multiplex/service]
pnr = 101
xmltv-id = discovery
[multiplex/service]
pnr = 102
xmltv-id = history
# Second multiplex
[multiplex]
tsid = 2
xmltv = /opt/xmltv-2.xml
[multiplex/service]
pnr = 201
xmltv-id = euronews

As linhas que começam com o símbolo # são comentários e são ignoradas.

  • xmltv - caminho para o arquivo xmltv local, ou link http/https para um arquivo xmltv ou xmltv em gzip. Esta opção pode ser redefinida em [multiplex] ou em [multiplex/service]
  • output - endereço UDP de destino
  • onid - identificador da rede original
  • codepage - página de código. Esta opção pode ser redefinida em [multiplex] ou em [multiplex/service]
  • eit-days - número de dias no epg. O padrão é 3
  • eit-rate - bitrate em kbit/s. Padrão de 15 kbit/s para cada serviço

As seguintes páginas de código estão disponíveis para a codificação de texto:

  • 0 - Padrão. Latim (ISO 6937)
  • 1 - Europeu Ocidental (ISO 8859-1)
  • 2 - Europeu Central (ISO 8859-2)
  • 3 - Europeu do Sul (ISO 8859-3)
  • 4 - Europeu do Norte (ISO 8859-4)
  • 5 - Cirílico (ISO 8859-5)
  • 6 - Árabe (ISO 8859-6)
  • 7 - Grego (ISO 8859-7)
  • 8 - Hebraico (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 - Celta (ISO 8859-14)
  • 15 - Europeu Ocidental (ISO 8859-15)
  • 21 - UTF-8

Seção [tdt-tot]:

  • country - código do país no formato ISO 3166-1 alpha-3
  • offset - diferença de horário em minutos em relação ao GMT, com sinal. Por exemplo, +120 é GMT+2 e -300 é GMT-5

Seção [multiplex]

  • tsid - identificador do transport stream do multiplex
  • name - campo opcional para descrever o multiplex

Seção [multiplex/service]

  • pnr - número do canal/pnr
  • xmltv-id - id do canal no xmltv
  • parental-rating - restrição de idade. O valor é definido em pares: país e idade. Por exemplo: parental-rating = EST 16 USA 14. Código do país no formato ISO 3166-1 alpha-3 (3 letras). Idade de 4 a 18 (inclusive), 0 - sem restrições.

Com o Astra você pode adicionar o stream UDP com EIT ao MPTS. Nas configurações do MPTS, adicione uma entrada e defina o endereço UDP; por exemplo, na configuração acima o endereço é udp://lo@239.0.0.1:1234. Nas configurações avançadas do MPTS, ative a opção “Pass EIT”. Use a opção no_eit nas outras entradas para desativar o EIT vindo delas.

Registre o serviço no systemd para executá-lo em segundo plano e iniciá-lo automaticamente junto com o sistema. Crie o arquivo /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

Os comandos a seguir podem ser usados para gerenciar o serviço:

  • iniciar o serviço: systemctl start eit-stream
  • parar o serviço: systemctl stop eit-stream
  • ativar o início automático: systemctl enable eit-stream
  • desativar o início automático: systemctl disable eit-stream

Para reiniciar o serviço uma vez por noite, adicione a linha a seguir em /etc/crontab:

0 2 * * * root systemctl restart eit-stream

XMLTV é um formato baseado em XML para descrever informações de programação de TV. Ele oferece um mecanismo para armazenar informações de canais, a grade de programas e os metadados associados.

<?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>