Reserva de fuentes¶
Un stream puede tener varias fuentes. Sapsan vigila la fuente activa, conmuta automáticamente a la siguiente cuando esta se degrada y vuelve a la principal cuando se recupera. Esta lógica se llama LSI (Live Source Input).
Varias entradas¶
Las entradas se enumeran en orden de prioridad — la primera es la principal:
streams:
- name: tv1
inputs:
- udp:
host: 239.0.0.1
port: 5000
- tshttp:
url: http://backup-origin.example.com/tv1/mpegts
Cómo funciona la conmutación¶
Propiedades clave del algoritmo, importantes para el aire:
- Una fuente se vuelve activa solo cuando está lista: debe entregar los parámetros del stream (MediaInfo) y el primer fotograma clave. Hasta entonces los espectadores siguen recibiendo la fuente actual.
- Retorno sin pantalla negra: una entrada de mayor prioridad recuperada se comprueba en segundo plano, y la conmutación ocurre solo cuando ha entregado un fotograma clave.
- Una entrada caída se reconecta con demoras crecientes (
reconnect_initial_delay→reconnect_delay_step→reconnect_max_delay); cuando se agotan todas las entradas, la rotación vuelve a empezar desde la primera. - Una fuente cuyo bitrate supera
max_bitratese detiene forzosamente. - Tiempos de espera separados para la ausencia de vídeo y de audio: el audio perdido con vídeo vivo también cuenta como degradación.
Política de conmutación¶
La sección lsi fija la política para todo el stream; source_options en una entrada concreta la anula:
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
Los tiempos de espera se expresan en segundos. Parámetros principales (lsi y/o source_options):
| Parámetro | Descripción |
|---|---|
source_timeout, video_timeout, audio_timeout |
tiempos de espera por ausencia de datos/vídeo/audio |
max_bitrate |
límite de bitrate de la fuente |
reconnect_initial_delay, reconnect_delay_step, reconnect_max_delay |
política de reconexión |
retry_limit, max_retry_timeout |
límites de reintentos |
recheck_secondary_inputs_interval |
con qué frecuencia comprobar si una entrada de mayor prioridad ha vuelto |
allow_if, deny_if (solo en source_options) |
habilitar/deshabilitar una entrada mediante un archivo de bandera externo |
allow_if/deny_if permiten controlar las entradas desde fuera sin editar la configuración: una entrada se usa solo mientras el archivo de bandera lo permite.
El archivo de cortinilla (backup)¶
Si todas las fuentes caen, en lugar de una pantalla negra se muestra un archivo (vea cómo preparar el archivo):
streams:
- name: tv1
inputs:
- udp: {host: 239.0.0.1, port: 5000}
lsi:
backup:
file: /storage/technical-difficulties.mp4
timeout: 5
La cortinilla entra en acción timeout segundos después de la caída de las entradas (de inmediato si no hay entradas en absoluto) y tiene sus propios audio_timeout/video_timeout.
Observabilidad¶
Por stream: el tiempo en la entrada principal y en las de reserva, el tiempo sin datos, el número de reintentos, la validez de las entradas de reserva y un detector de divergencia de parámetros — si una entrada de reserva entrega parámetros de vídeo diferentes (lo que hace imposible una conmutación sin interrupciones), se ve con antelación, antes del incidente. Por entrada: los tiempos de apertura/conexión/inicio y el último error. Vea monitoreo.