Skip to content

Saída MPEG-TS

O receptor do outro lado não é um reprodutor: ele procura o serviço pelo número do programa, as trilhas pelos PIDs e o nome do serviço na SDT. Enquanto essas tabelas não forem as que ele espera, o sinal não existe para ele, por mais correto que seja o vídeo lá dentro.

Todas as saídas MPEG-TS de um stream — a entrega por HTTP, SRT, os destinos por UDP, SRT e RIST — são produzidas por um único multiplexador. A seção Saída MPEG-TS na aba Saída define as suas tabelas de serviço; a mesma seção num destino individual as sobrepõe apenas para esse destino.

As tabelas do stream

A seção diz isso mesmo no painel: ela vale para toda saída MPEG-TS do stream até que um push ou um SRT play a sobreponha. Campos vazios mostram os padrões como dicas.

Campo O que define Padrão
Número do programa (PNR) a entrada na PAT, program_number na PMT e service_id na SDT 1
PID da tabela PMT o PID da tabela PMT auto
PID das trilhas PIDs explícitos das trilhas: uma linha «Trilha» + «PID» por trilha auto
Nome do serviço (SDT) o nome do serviço na SDT o nome do stream
Nome do provedor (SDT) o nome do provedor na SDT vazio
Transport stream ID transport_stream_id na PAT e no cabeçalho da SDT 1
Original network ID original_network_id no cabeçalho da SDT 1

As regras são verificadas ao salvar, não no ar:

  • os PIDs estão na faixa 32–8190: abaixo disso é reservado às tabelas de serviço, acima, aos pacotes nulos;
  • PIDs duplicados dentro da seção são proibidos, inclusive um PID de trilha igual ao PID da tabela PMT;
  • o número do programa nunca é zero — o número zero na PAT é reservado à NIT;
  • os nomes do serviço e do provedor juntos são limitados para que a SDT caiba em um pacote TS.

Um PID pode ser definido para uma trilha que agora não existe: ele vale quando a trilha aparece. Se um PID explícito colide com o PID atribuído automaticamente a outra trilha, o explícito vence e a trilha desalojada migra de forma determinística para um PID livre — com um aviso no log.

A seção de saída MPEG-TS do stream

SDT

Junto com a PAT e a PMT, a saída leva uma tabela SDT (PID 0x11): um serviço do tipo digital television, service_id igual ao número do programa, e os nomes do serviço e do provedor tirados da mesma seção.

As strings são codificadas conforme o DVB: o latino vai como está e todo o resto como UTF-8 com a codificação declarada, por isso nomes cirílicos são lidos corretamente pelos receptores.

Quando as configurações mudam, as versões das tabelas PAT/PMT/SDT afetadas são incrementadas e os receptores pegam as novas como devem. A edição é aplicada em tempo real: destinos de entrega e clientes conectados não reconectam.

Tabelas próprias por destino

Um destino individual tem uma seção Substituição da saída MPEG-TS com os mesmos campos — é a resposta a uma tarefa típica de cabeça de rede, em que o mesmo sinal é entregue a receptores diferentes sob números diferentes. Ela está disponível para:

  • um push por UDP, RTP, SRT ou RIST — o RTMP não tem fluxo de transporte, por isso a seção não existe lá;
  • a distribuição por SRT da porta dedicada do stream.

Campos vazios são herdados da seção do stream — os valores herdados aparecem como placeholders. Um valor definido no destino sobrepõe o do stream. A exceção é PID das trilhas: é um campo único, e um mapa não vazio do destino substitui inteiro o do stream — não há fusão por trilha.

A saída MPEG-TS por HTTP e o listener SRT compartilhado do servidor não têm substituição: eles sempre servem a saída compartilhada do stream.

Uma substituição em um destino de entrega

Por que isto é barato

Para um destino com tabelas próprias não se inicia um segundo multiplexador. O destino recebe uma cópia da saída compartilhada na qual só as tabelas de serviço e os PIDs dos pacotes são reescritos: o arranjo dos pacotes no tempo, o PCR e os contadores de continuidade do multiplex compartido são preservados.

Daí seguem duas consequências práticas:

  • as propriedades CBR da saída valem também para os destinos sobrepostos — reescrever as tabelas não quebra o bitrate constante;
  • destinos com configurações efetivas idênticas dividem um stream byte a byte idêntico: cem destinos iguais custam tanto quanto um.

A versão de tabelas de uma saída reescrita é mantida pela sua própria história de mudanças, e não copiada da saída compartilhada.

O que vem a seguir

  • Entrega à rede — para onde este stream vai.
  • CBR para DVB — os requisitos do modulador quanto à taxa e ao PCR.
  • TR 101 290 — como verificar que as tabelas e a continuidade estão em ordem.