How Tos

Source Synchronized Encoding (SSE) — redundancia bit-idéntica

Ejecuta dos encoders contra la misma fuente para que un packager o CDN pueda hacer failover por segmento entre los dos entrypoints sin discontinuidad en el manifest.

Available in: UI · API

Usa este how-to para configurar un par de encoders que produzcan salida bit-idéntica desde la misma fuente. Un origen o CDN aguas abajo puede entonces cambiar del entrypoint de un encoder al del otro segmento a segmento sin insertar una etiqueta de discontinuidad en el manifest, así los espectadores no vuelven a almacenar en búfer cuando un encoder falla.

Cuándo usar esto

Live stream premium donde un fallo de un único encoder no debe producir un glitch visible al espectador — deportes, informativos, emisiones VOD-window premium, streams críticos para revenue publicitario. Para Live streams estándar con failover dirigido por operador, el toggle por-Destination en runtime de On air suele ser suficiente.

Cómo funciona

Dos encoders ingestan la misma fuente y producen la misma salida empaquetada, segmento a segmento. La capa de empaquetado espera a la salida de transcodificación activa antes de arrancar (evitando datos viejos), elimina los índices byte-range por segmento que de otro modo diferirían entre encoders, y alinea las fronteras de segmento al intervalo de keyframes para que los dos conjuntos de segmentos sean intercambiables. Un origen que se suscribe a los dos entrypoints puede entregar cualquiera de los dos al reproductor; si uno cae, el siguiente segmento se sirve desde el otro y el reproductor nunca ve una discontinuidad.

SSE soporta dos modos de entrada:

ModoFuente temporal para sincronizaciónRequisito de red
SDITimecodes RP188 embebidos en la señal SDI.Ninguno más allá del feed SDI.
StreamRelojes de host sincronizados por NTP.Ambos hosts encoder deben tener NTP. Ambos deben recibir el mismo stream UDP / multicast sin re-stamping de paquetes.

Prerrequisitos

  • Dos Devices del mismo tipo (los dos basados en GPU, o los dos en CPU) alcanzables desde la instancia de C21 Live Control.
  • Una fuente compartida que ambos encoders puedan ingestar:
    • Para modo SDI: ambos hosts encoder tienen acceso al mismo feed SDI (dos runs SDI paralelos desde la misma fuente, o un amplificador de distribución SDI).
    • Para modo Stream: ambos hosts encoder pueden hacer pull del mismo stream UDP / multicast, y el sender upstream no hace re-stamping de paquetes.
  • Para modo Stream: sincronización NTP en ambos hosts encoder. La alineación del offset de grabación depende de ello.
  • Un Encoding con un keyframe interval estable. SSE deriva las fronteras de segmento de ese valor — cambiarlo tras el deploy desplaza la alineación.
  • Un origen o CDN aguas abajo que soporte failover por segmento entre dos entrypoints (orígenes CMAF o compatibles con DASH-IF; consulta la documentación de tu origen).

Restricciones

  • Los marcadores SCTE y los timecodes deben propagarse de forma idéntica a ambos encoders. Cualquier divergencia en los cue points rompe la alineación.
  • En modo Stream el sender upstream no debe re-stampear paquetes. Un relay que reescribe timestamps anula la redundancia.
  • Ambos encoders deben correr el mismo perfil de encoding — codec, bitrate, resolución, keyframe interval, modo HDR. El emparejamiento SSE es por encoding.

Via UI

Configura dos Devices

Registra los dos Devices encoder en Devices. Asegura que comparten el mismo tipo y la misma clase de hardware.

Crea el Channel y Encoding compartidos

Crea un Channel del tipo de entrada correspondiente (SDI para modo SDI, Stream para modo Stream) — ambos hosts encoder deben poder ingestarlo. Crea un Encoding con el codec, bitrate, resolución y keyframe interval que el par va a producir.

Activa SSE en el Channel

Abre el editor del Channel y activa Sync Source Encoding. Este flag le indica al lado encoder que cualquier broadcast sobre este Channel debe correr en modo SSE.

Enlaza el Live stream en los dos encoders

Crea dos Live streams, ambos apuntando al mismo Channel, mismo Encoding y mismos Destinations, cada uno corriendo en uno de los dos Devices.

Arranca ambos Live streams

Arranca los dos Live streams juntos. Los dos encoders comienzan a producir la misma salida empaquetada; el origen aguas abajo debería reportar ambos entrypoints como sanos.

Via API

El flag SSE vive en el Channel:

curl -X PUT "https://<tu-host>/c21apiv2/channels/<channelId>" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "settings": {
      "sync_source_encoding": true
    }
  }'

Cuando el valor por-Channel no está definido, una constante global del deploy puede activar SSE de forma general (detalle de instalación — coordínalo con tu representante Cires21).

Una vez activado el flag, los dos Live streams que ingestan este Channel a través de Devices distintos corren sincronizados por defecto.

Notas de empaquetado

  • La duración de segmento la dirige el keyframe interval del Encoding. Donde haya concatenación configurada, varios segmentos alineados a keyframe se agrupan en el segmento final entregado.
  • Las master playlists HLS omiten la etiqueta EXT-X-START — requerido para compatibilidad con reproductores basados en FFmpeg.
  • Las playlists HLS llevan una etiqueta EXT-X-PROGRAM-DATE-TIME en cada segmento, anclada al wall-clock y derivada del índice del segmenter de la fuente.
  • Como ese date-time por segmento es idéntico en todos los encoders que ingestan el mismo Channel, un origen aguas abajo (AWS MediaPackage v2, por ejemplo) ancla todas las renditions al mismo instante.
  • Los MPDs DASH ponen suggestedPresentationDelay para que el reproductor quede un número determinista de segmentos por detrás del live edge.
  • Para salidas CMAF / fMP4, los índices byte-range por segmento se eliminan para que los dos streams de encoder queden byte-comparables.

Verificar

  • Ambos encoders publican segmentos con timestamps coincidentes al mismo tiempo nominal.
  • Para salidas CMAF / fMP4, los bytes de segmento de un encoder coinciden con los del otro (compara una muestra manualmente si tu origen no lo expone directamente).
  • El log de failover del origen registra un swap por segmento ante un fallo de encoder con ninguna discontinuidad de manifest vista por el reproductor.
  • Durante una parada controlada de un encoder, el reproductor aguas abajo no vuelve a almacenar en búfer.
  • Encodings → Color & HDR — el keyframe interval que dirige las fronteras de segmento vive en el perfil de Encoding.
  • Devices — registra los dos Devices encoder que formarán el par.
  • On air — toggle por-Destination en runtime para el caso más sencillo de failover dirigido por operador.

FAQ

Copyright © 2026