Recordings

Editor

Edita en tiempo real sobre una grabación, crea clips para descargarlos o enviarlos a destinos como SFTP, S3 o MediaCopilot.

Qué hace el editor

El Editor de grabaciones es la vista en navegador enlazada a una grabación existente en la plataforma orquestada por C21 Live Control. Es el camino desde un broadcast capturado a un clip que puede descargarse, entregarse a MediaCopilot o enviarse a un destino de almacenamiento externo. El editor nunca modifica la grabación fuente; cada exportación es un artefacto derivado nuevo.

El editor puede abrirse sobre una grabación en cualquier estado, incluido mientras la grabación sigue escribiéndose (la API expone ended_at: null en ese caso).

La pestaña Editor y el endpoint de ejecución subyacente requieren la licencia C21LiveEditor en la instancia de Live Control. Sin ella, la pestaña queda oculta en la sección Recordings y las llamadas directas al endpoint se rechazan.

UI Interface

La vista Editor expone:

ControlPropósito
Vídeo previewPreview basada en HLS de la grabación seleccionada.
TimelineBarra temporal navegable con la posición del playhead.
IN / OUT / CUTMarca el punto de entrada, el de salida y crea el clip; con un clip ya seleccionado, IN u OUT actualizan directamente sus límites.
Panel de clipsLista de cada clip definido sobre la grabación. Por clip: nombre, start, end y acciones Send to / Download / Delete.
Selector de pasoGranularidad del playhead — fotograma a fotograma o un segundo.
Add tagMarcadores puntuales sobre el timeline.
Diálogo Send toSelector de formato, selector de destino (FTP / SFTP / S3 / MediaCopilot), selección de pistas de audio, bloque DRM y formulario opcional de metadatos XML (Title / Description / Destination / Category).

Los clips sobreviven recargas — el Editor los persiste en una clave por-grabación del session storage del navegador y los restaura al volver a montar.

Cómo se define un corte

Un corte es el cuerpo de una única petición executeEditor. Los campos obligatorios son:

CampoNotas
qualityUna de las renditions capturadas (devuelta en qualities sobre la grabación).
allbitratesCuando es true, el corte abarca todos los bitrates capturados; el resultado se entrega como TAR.
intervals[]Uno o más rangos { start, end, name? }. start y end son timestamps.
kfstartCuando es true, el corte se ajusta al keyframe más cercano para no recodificar el primer segmento.
concatCuando es true, los intervalos del mismo bitrate se concatenan en una sola salida; en otro caso cada intervalo produce su artefacto.
encodingContenedor de salida — ver tabla abajo.
commandDestino de entrega — ver tabla abajo.
filenameNombre de fichero de salida opcional.

Formatos de salida

El diálogo Send-to expone los siguientes formatos de salida:

encodingContenedorNotas
tsMPEG-TSEntrega de rendition única.
mp4MP4Entrega de rendition única.
fmp4MP4 fragmentadoEntrega de rendition única; útil para packagers aguas abajo.
audioSolo audioElimina el vídeo; selecciona las pistas de audio según el bloque audio.

Destinos de entrega

El diálogo Send-to expone un destino a la vez. El valor de command elegido activa el sub-objeto correspondiente en el cuerpo de la petición.

commandDestinoActiva
downloadNavegador del operadorDescarga HTTP directa — un fichero inline, varios como TAR.
ftpServidor FTP remotoSub-objeto ftp.
sftpServidor SFTP remotoSub-objeto sftp.
s3Bucket compatible con S3Sub-objeto s3.
exportMediaCopilotTenant de MediaCopilotCampos específicos de MediaCopilot (sync, mc_model, mc_collection, mc_template).

Cada sub-objeto FTP, SFTP y S3 acepta los campos de conexión inline o — preferido — una referencia id única a un Target Folder guardado (cross-link abajo).

Sub-objetos FTP y SFTP

{
  "ftp": {
    "id": <target folder id>,
    "host": "<host>",
    "username": "<usuario>",
    "password": "<contraseña>",
    "path": "<dir remoto>",
    "filename": "<override de filename>"
  }
}

sftp acepta el mismo shape más un identificador account opcional. Cuando id referencia un Target Folder guardado, host, credenciales y path se toman del registro y los valores inline pueden omitirse.

Sub-objeto S3

{
  "s3": {
    "id": <target folder id>,
    "aki": "<AWS access key id>",
    "sak": "<AWS secret access key>",
    "bucket": "<nombre del bucket>"
  }
}

Cuando id referencia un Target Folder guardado, las credenciales y el bucket se toman del registro. Consulta Target Folders para el catálogo y el modelo de credenciales.

Selección de audio

El bloque audio opcional selecciona qué pistas de audio lleva el corte — útil para grabaciones multilingües:

{
  "audio": {
    "pids": [<pid>,],
    "languages": ["<idioma>",],
    "codecs": ["<codec>",]
  }
}

Cada miembro es independiente; el editor empareja pistas por cualquier combinación de pid, idioma o codec.

DRM en exportación

Cuando el deploy sirve clips protegidos en reposo, el bloque drm opcional asocia un DRM provider registrado al corte:

{
  "drm": {
    "provider": <id del proveedor>,
    "content_id": "<content id en hex>"
  }
}

content_id debe ser un valor hexadecimal. Consulta DRM workflow para el registro del proveedor y el alcance multi-sistema (Widevine, PlayReady, FairPlay).

Sidecar XML de metadatos

Cuando xml_enabled = true, el editor genera un sidecar XML desde el template configurado y lo entrega junto al fichero de vídeo. Los campos de metadatos viven en el sub-objeto FTP / SFTP / S3 elegido (o se envían desde el formulario de metadatos del diálogo Send-to):

CampoPropósito
titleTítulo del clip — por defecto el filename cuando se deja vacío.
descriptionDescripción libre.
publishingIdentificador del Destination.
categoryCategoría de contenido.

El template XML lo personaliza el System Administrator al instalar — los operators solo rellenan los campos de arriba.

Exportación a MediaCopilot

command: "exportMediaCopilot" activa los campos específicos de MediaCopilot. Los dos prerrequisitos heredados de la página de integración MediaCopilot aplican: cuenta MediaCopilot contratada vía Cires21 más la licencia C21LiveEditor.

CampoNotas
synctrue devuelve el assetId asignado de forma síncrona; false devuelve un jobId y procesa de forma asíncrona.
mc_modelUno de turbo (default) o normal.
mc_collectionId opcional de colección MediaCopilot a la que asignar el activo.
mc_templateId opcional de template MediaCopilot a aplicar.

Cuando sync = false, sondea el job mediante GET /c21apiv2/system/mediacopilot/jobs/{jobId} hasta que termine. El destino MediaCopilot aparece en el diálogo Send-to solo cuando la integración está configurada en Integrations → MediaCopilot.

Superficie API

AcciónMétodo + rutaoperationId
Ejecutar el editorPOST /c21apiv2/editor/{broadcastName}/{broadcastDetailName}/executeexecuteEditor

El cuerpo completo de la petición está documentado arriba. El handler aplica Idempotency-Key; repetir la misma clave devuelve la respuesta original sin volver a cortar.

Ejemplo mínimo — descarga un clip MP4:

curl -X POST "https://<tu-host>/c21apiv2/editor/<broadcastName>/<broadcastDetailName>/execute" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "quality": 4000,
    "allbitrates": false,
    "kfstart": true,
    "concat": false,
    "encoding": "mp4",
    "command": "download",
    "filename": "highlight",
    "intervals": [{ "start": 1747585200, "end": 1747588800, "name": "Goal 1" }]
  }'

FAQ

Copyright © 2026