Reserva de fontes¶
Um stream pode ter várias fontes. O Sapsan vigia a fonte ativa, comuta automaticamente para a próxima quando ela se degrada e volta para a principal quando ela se recupera. Esta lógica se chama LSI (Live Source Input).
Várias entradas¶
As entradas são listadas em ordem de prioridade — a primeira é a principal:
streams:
- name: tv1
inputs:
- udp:
host: 239.0.0.1
port: 5000
- tshttp:
url: http://backup-origin.example.com/tv1/mpegts
Como funciona a comutação¶
Propriedades chave do algoritmo, importantes para o ar:
- Uma fonte fica ativa apenas quando está pronta: ela precisa entregar os parâmetros do stream (MediaInfo) e o primeiro quadro-chave. Até lá os espectadores continuam recebendo a fonte atual.
- Retorno sem tela preta: uma entrada de maior prioridade recuperada é sondada em segundo plano, e a comutação ocorre somente depois que ela entrega um quadro-chave.
- Uma entrada caída reconecta com pausas crescentes (
reconnect_initial_delay→reconnect_delay_step→reconnect_max_delay); quando todas as entradas se esgotam, a rotação recomeça da primeira. - Uma fonte cuja taxa de bits excede
max_bitrateé interrompida à força. - Tempos limite separados para a falta de vídeo e de áudio: o áudio perdido com vídeo vivo também conta como degradação.
Política de comutação¶
A seção lsi define a política para o stream inteiro; source_options numa entrada específica a sobrepõe:
streams:
- name: tv1
inputs:
- udp: {host: 239.0.0.1, port: 5000}
- udp:
host: 239.0.0.2
port: 5000
source_options:
source_timeout: 10
lsi:
source_timeout: 5
video_timeout: 3
audio_timeout: 3
Os tempos limite são definidos em segundos. Parâmetros principais (lsi e/ou source_options):
| Parâmetro | Descrição |
|---|---|
source_timeout, video_timeout, audio_timeout |
tempos limite de ausência de dados/vídeo/áudio |
max_bitrate |
limite de taxa de bits da fonte |
reconnect_initial_delay, reconnect_delay_step, reconnect_max_delay |
política de reconexão |
retry_limit, max_retry_timeout |
limites de tentativas |
recheck_secondary_inputs_interval |
com que frequência verificar se uma entrada de maior prioridade voltou |
allow_if, deny_if (apenas em source_options) |
ligar/desligar uma entrada por um arquivo de bandeira externo |
allow_if/deny_if permitem controlar as entradas de fora sem editar a configuração: uma entrada é usada apenas enquanto o arquivo de bandeira permite.
O arquivo de vinheta (backup)¶
Se todas as fontes caírem, em vez de uma tela preta é exibido um arquivo (veja como preparar o arquivo):
streams:
- name: tv1
inputs:
- udp: {host: 239.0.0.1, port: 5000}
lsi:
backup:
file: /storage/technical-difficulties.mp4
timeout: 5
A vinheta entra em ação timeout segundos depois da queda das entradas (imediatamente, se não houver entradas nenhuma) e tem seus próprios audio_timeout/video_timeout.
Observabilidade¶
Por stream: o tempo na entrada principal e nas de reserva, o tempo sem dados, o número de tentativas, a validade das entradas reserva e um detector de divergência de parâmetros — se uma entrada reserva entrega parâmetros de vídeo diferentes (o que torna impossível uma comutação sem interrupção), isso fica visível com antecedência, antes do incidente. Por entrada: os tempos de abertura/conexão/início e o último erro. Veja monitoramento.