Destinations

Qué es un Destination
Destinations es la sección del menú lateral que cataloga los endpoints de salida. La entidad subyacente es un Destination — el objeto que manipula la API y que edita el editor. Los dos términos aparecen juntos: la acción de la barra es "Add destination", y el editor edita un Destination.
Un Destination es independiente del Live stream que lo consume: el mismo Destination puede reutilizarse en muchos Live streams, y un Live stream puede emitir a muchos Destinations — directamente o a través de un Destination group.
Cómo funciona
Define
Pulsa Add destination y elige el type del Destination. El resto del formulario depende del tipo elegido — URL de endpoint o grupo multicast, credenciales, ajustes de segmento para HLS / DASH / CMAF, etc.
Enlaza
Enlaza el Destination a un Live stream desde el editor de Live streams — elígelo bajo el campo Destination. Alternativamente, agrupa varios Destinations en un Destination group y enlaza el grupo.
Monitoriza
El estado en runtime del Destination aparece en la fila del Live stream enlazado en On air como una flecha coloreada en el entrypoint Destination; el estado por rendition se muestra como un indicador por peldaño del Encoding group enlazado.
Tipos de Destination
Publishing.type expone un enum cerrado. Las etiquetas canónicas de la API son:
| Tipo | Notas |
|---|---|
| HLS / TS | Manifest HLS con segmentos MPEG-TS. |
| DASH | Manifest DASH. |
| CMAF | Manifest CMAF para entrega DASH / HLS unificada. |
| RTMP | Push RTMP a cualquier URL de ingest RTMP. |
| Enhanced RTMP | Push Enhanced-RTMP para contribución multitrack. |
| SRT | Push SRT (caller) a un listener SRT partner. |
| STREAM | MPEG-TS sobre UDP o RTP, usado para distribución multicast legacy. |
| SDIOUT | Feed SDI baseband para OB o master control. |
| Record | Captura el broadcast a disco y produce una grabación. |
DRM no es un tipo separado de Destination — es el bloque drm sobre un Destination DASH o CMAF (ver DRM en un Destination abajo).
Proveedores de CDN y entrega
El campo settings_common.provider de un Destination nombra el CDN o la plataforma de entrega a la que apunta el destination. El provider es informativo para algunos tipos y operativamente significativo para otros (notablemente Millicast, donde el provider habilita el hint rtmp_millicast_buffer_millisec; y C21 Live Cloud, donde el provider junto con la cuenta enlazada vincula el Destination a una cuenta C21 Live Cloud registrada).
El catálogo completo de providers está expuesto por GET /c21apiv2/publishing/providers (operationId getPublishingProviders); la matriz de compatibilidad por tipo de la UI vive en publishingProviders en el store de la app de Vue, expresada como listas de exclusión notFor.
Provider (valor de provider) | Propósito | Tipos de Destination compatibles |
|---|---|---|
| Akamai | Entrega por Akamai CDN. | DASH, HLS / TS, CMAF, RTMP, SRT, STREAM. |
| C21 Live Cloud | La plataforma gestionada cloud de Cires21. El Destination queda enlazado a una cuenta C21 Live Cloud registrada. | DASH, HLS / TS, CMAF, RTMP, SRT, STREAM. |
| Generic CDN | Cualquier CDN no listado por nombre. La entrada catch-all. | Todos los tipos de Destination. |
| Millicast (Millicast WebRTC CDN) | Fanout WebRTC de Millicast para entrega sub-segundo. El hint rtmp_millicast_buffer_millisec del Destination solo se aplica con provider Millicast. | RTMP, Enhanced RTMP. |
| TransparentCDN | Entrega por TransparentCDN. | DASH, HLS / TS, CMAF, RTMP, SRT, STREAM. |
| Twitch | Ingest a Twitch. RTMP es el ingest canónico. | RTMP, Enhanced RTMP. |
| Unified Streaming (Interface-1) | Origen Unified Streaming vía contrato Interface-1. | CMAF. |
| Youtube | Ingest a YouTube Live. RTMP es el ingest canónico. | HLS / TS, RTMP, SRT, STREAM. |
| MediaCopilot | Contribución HLS de un Live stream hacia un Entrypoint de MediaCopilot Live. Requiere una cuenta MediaCopilot contratada vía Cires21. Consulta Contribuir una señal en directo a MediaCopilot Live. | Solo HLS / TS. |
Configuración por tipo
El resto de esta sección recorre cada tipo de Destination, los bloques settings_* que aplican y las interacciones de DRM / backup / TTL.
HLS / TS
Manifest HLS con segmentos MPEG-TS.
- Providers compatibles: todos los que no excluyen HLS / TS — en la práctica Akamai, C21 Live Cloud, Generic CDN, TransparentCDN, Youtube, MediaCopilot.
settings_extra.hls:segments(número),duration(duración del segmento),ad_duration,max_ad_duration,absolute_path,keep_dvr(solo CMAF; aquí se ignora).- Cifrado estático AES-128:
settings_extra.aes.{active, key, iv, key_url}activa AES-128 clear-key. - DRM: no soportado en HLS / TS en v1 — usa CMAF para entrega protegida en el ecosistema Apple.
- URLs de backup: una ruta secundaria opcional configurable mediante
settings_common.urls.backup_server/settings_common.urls.backupcuando el CDN receptor soporte dual ingest.
DASH
Manifest DASH.
- Providers compatibles: Akamai, C21 Live Cloud, Generic CDN, TransparentCDN.
settings_extra.dash:min_buffer_time(segundos),time_shift_buffer_depth(segundos),minimum_update_period(segundos).- DRM: soportado vía el bloque
drm. La combinación típica essystems = ["Widevine", "PlayReady"]conencryption_mode = cenc.
CMAF
Manifest CMAF para entrega unificada DASH / HLS.
- Providers compatibles: Akamai, C21 Live Cloud, Generic CDN, TransparentCDN, Unified Streaming (Interface-1).
settings_extra.hls:segments,duration,absolute_path,keep_dvr(preserva la ventana DVR previa entre reinicios; solo CMAF).- DRM: soportado vía el bloque
drm. CMAF es el único tipo que soporta FairPlay (systems = ["FairPlay"]conencryption_mode = cbcs, o un CMAF Widevine + PlayReady encencpara el ecosistema no-Apple).
RTMP
Push RTMP a una URL de ingest externa.
- Providers compatibles: Akamai, C21 Live Cloud, Generic CDN, Millicast, TransparentCDN, Twitch, Youtube.
settings_common:stream(nombre de stream),urls.primary,urls.backupopcional,username,password.- Stream backup name:
backup_stream_namemásuse_stream_backup_name = true. Cuando el flag está activo, el serializer almacena el par como<stream>#<backup>dentro desettings_common.stream; las lecturas separan las dos mitades automáticamente. - Hint Millicast:
rtmp_millicast_buffer_millisecsolo se aplica cuandoprovider = Millicast. - DRM: no aplicable.
Enhanced RTMP
Push Enhanced-RTMP para contribución multitrack.
- Providers compatibles: Generic CDN, Millicast, Twitch.
settings_common: mismo shape que RTMP.- DRM: no aplicable.
Para el flujo sub-segundo extremo a extremo contra Dolby Millicast — Real time encoding más contribución RTMP / Enhanced RTMP — consulta Real Time streaming hacia Dolby Millicast.
SRT
Push SRT (caller) a un listener SRT partner.
- Providers compatibles: todos los que no excluyen SRT — Akamai, C21 Live Cloud, Generic CDN, TransparentCDN, Youtube.
settings_common:urls.primary,urls.backupopcional.settings_extra.srt:latency(milisegundos),encryption(AES-128,AES-192oAES-256; el servidor almacena la longitud entera de la clave en bytes),passphrase. El passphrase se redacta para bearer tokens no System Administrator — las lecturas devuelven***REDACTED***.- DRM: no aplicable.
STREAM
MPEG-TS sobre UDP o RTP. El store publishingProtocols de la UI expone udp:// y rtp:// como los protocolos que un Destination STREAM acepta. Un tercer protocolo, udpr:// (UDP-R), se ofrece cuando la instancia lleva la licencia C21LiveDeploy.
- Providers compatibles: todos los que no excluyen STREAM — Akamai, C21 Live Cloud, Generic CDN, TransparentCDN, Youtube.
settings_common:urls.primary,urls.backupopcional.ttl: entero 0–255, solo se aplica en este tipo.- DRM: no aplicable.
SDIOUT
Feed SDI baseband enrutado a la tarjeta SDI de salida de un Device encoder.
settings_sdiout:format(uno de los formatos SDI estándar — familias NTSC, PAL, 1080p / 1080i / 720p),encoder(FK al Device propietario de la tarjeta SDI),slot(número de slot SDI en ese Device),channels(número de canales de audio en la salida).- Providers: SDI es enrutado local; la matriz de provider CDN no aplica.
- DRM: no aplicable.
Record
Captura el broadcast a disco y produce una grabación.
settings_recording.remotefolder: FK a un RemoteFolder registrado.settings_recording.delete_after: retención en días. El encoder multiplica el valor por 24 para derivar la ventana de purga en horas.- Providers: Record es captura local; la matriz de provider CDN no aplica.
- DRM: no aplicable.
DRM en un Destination
DRM no es un tipo separado de Destination; es el bloque drm sobre un Destination DASH o CMAF. El bloque lleva:
| Campo | Notas |
|---|---|
active | Booleano. Activa la protección. |
provider_id | FK a un DRM provider validado. Consulta DRM workflow. |
contentid | ≤ 100 caracteres, único por Destination. El identificador que el proveedor upstream espera en las peticiones de claves. |
systems | Array de Widevine, PlayReady, FairPlay. |
encryption_mode | cenc o cbcs. Derivado de systems por el servidor — cualquier miembro FairPlay fuerza cbcs; en otro caso cenc. Los clientes pueden omitirlo en escritura; el servidor lo recalcula. |
Dos restricciones vienen directamente del esquema:
- HLS / TS no soporta DRM en v1. Usa CMAF para entrega protegida en el ecosistema Apple.
- Política de interoperabilidad:
FairPlayno puede combinarse conWidevineoPlayReadyen el mismo Destination. Divide en dos Destinations — un CMAF /cbcs/ FairPlay para Apple y un DASH o CMAF /cenc/ Widevine + PlayReady para el resto.
Para el flujo extremo a extremo consulta DRM workflow; para el CRUD de proveedores consulta DRM providers.
URLs de backup y stream backup name
Los tipos que empujan stream (RTMP, Enhanced RTMP, SRT, STREAM, y HLS / TS / DASH / CMAF cuando se alimentan a un origen dual-ingest) aceptan un destino secundario opcional mediante settings_common.urls.backup_server y settings_common.urls.backup.
Cuando el destino espera un nombre de stream secundario, establece backup_stream_name y use_stream_backup_name = true; el serializer almacena el par como <stream>#<backup> dentro de settings_common.stream y la API los devuelve separados.
En runtime, el Operator puede alternar independientemente el estado primary / backup por Destination mediante runtimeTogglePublishings — consulta la pestaña Destinations del panel de runtime en On air. Para destinos cuya URL de backup esté vacía (Record, SDIOUT, STREAM sin backup), primary es el toggle on/off y backup es un no-op.
URL de reproducción
Campo opcional del Destination en el que el operador puede guardar la URL de reproducción correspondiente a esa salida. No la calcula el producto — la persiste tal cual la introduce el cliente para tenerla a mano (compartirla con consumidores, pegarla en un reproductor de prueba o referenciarla desde otra integración). Persistida en settings_common.urls.player.
Opciones comunes
| Opción | Notas |
|---|---|
| Name | Nombre visible reutilizado por UI, API y logs. |
| Description | Descripción libre opcional. |
| Type | Uno de los tipos de Destination anteriores. |
| Provider | Uno de los valores de getPublishingProviders. La compatibilidad contra type la impone la matriz anterior. |
| Settings (common) | Stream name, URLs primary / backup, username / password — según el tipo. |
| Settings (extra) | Parámetros específicos del tipo agrupados por familia: hls, dash, srt, aes. |
| DRM | Bloque opcional sobre Destination DASH / CMAF. |
| TTL | IP TTL para paquetes UDP / RTP — solo aplica con type = STREAM. |
| Backup stream name | Nombre de stream secundario; persistido junto al primario como se describe arriba. |
Las credenciales (stream keys, passphrases SRT, usuarios y contraseñas RTMP, credenciales de DRM providers) se almacenan cifradas. Los Operators solo ven valores enmascarados en la UI; los valores completos no se devuelven nunca por la API.
En el editor de Destination los campos se agrupan visualmente en dos fieldsets: Basic data (Name, Type) y Destination configuration (Provider, Stream name, Primary server, Primary URL, Backup server, Username, Password). Los campos Backup server, Username y Password solo se renderizan para tipos que aceptan credenciales.
Cross-links
- Destination groups para la semántica de ramillete.
- Live streams para el binding desde un Live stream a su Destination.
- C21 Live Cloud para la entrega cloud.
- DRM workflow para la entrega protegida.
- On air para el toggle Destinations en runtime.
- Licencias para la licencia que habilita UDP-R en STREAM.
FAQ
runtimeTogglePublishings) permite al Operator apagar el miembro que falla sin detener el broadcast.runtimeTogglePublishings), aplicar logo (runtimeApplyLogo), blackout (runtimeApplyBlackout), cambiar la fuente (runtimeApplySourceSwitch), establecer un texto overlay (setLivestreamText) y enviar metadatos (runtimePushMetadata).