Source Synchronized Encoding (SSE) — redundancia bit-idéntica
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:
| Modo | Fuente temporal para sincronización | Requisito de red |
|---|---|---|
| SDI | Timecodes RP188 embebidos en la señal SDI. | Ninguno más allá del feed SDI. |
| Stream | Relojes 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-TIMEen 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
suggestedPresentationDelaypara 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.
Cross-links
- 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
runtimeTogglePublishings) protege contra un fallo del lado destino. Muchos deploys usan ambos.Ingestar una emisión de YouTube Live
Sacar al aire una emisión pública de YouTube Live como fuente de un Live stream.
Emitir radio como vídeo
Emite un Channel de radio como un Live stream donde la pista visual es una imagen o clip corto programable, el audio es siempre el directo, y la imagen se puede sustituir sin interrumpir el audio.