Ingestar una emisión de YouTube Live
Available in: UI · API
Usa este how-to para ingestar una emisión pública de YouTube Live como fuente de un Live stream. El encoder ejecuta un ingest auxiliar dedicado que descarga la emisión y la republica en el bus interno del encoder; a partir de ahí la cadena de transcodificación y publicación lo trata como cualquier otra entrada.
Cuándo usar esto
Cuando la fuente del Live stream es una emisión pública de YouTube Live (escenario de redistribución, una contribución remota que se está espejando primero a YouTube, un canal de referencia 24/7, etc.). Para originar una emisión hacia YouTube desde tu propio encoder, este no es el flujo correcto — usa un Channel estándar (SDI, SRT, Stream) más un Destination RTMP apuntando al ingest de YouTube.
Prerrequisitos
- La licencia C21LiveYouTube en la instancia de C21 Live Control. Sin ella, la API rechaza la creación con
APIf807y la UI oculta el tipo del selector. - La emisión objetivo está actualmente en directo y pública — no oculta, no privada, no solo para miembros. El Video ID de 11 caracteres es el valor tras
?v=enyoutube.com/watch?v=<id>o tras/enyoutu.be/<id>. - El deploy puede alcanzar YouTube desde su IP saliente. Si el deploy vive en una red de datacenter / cloud / VPS y la emisión falla el challenge anti-bot, debe haber un fichero de cookies exportado desde una cuenta de YouTube con sesión iniciada en el host encoder (detalle de despliegue — consúltalo con tu representante Cires21).
- Un usuario con rol Operator o System Administrator.
Restricciones
- El Video ID es el identificador público del lado consumidor — no es una stream key RTMP de YouTube Studio. Los dos valores son independientes.
- Solo se aceptan
name,description,aliasysettings.youtube_video_iden este tipo de Channel. La configuración multi-audio, subtítulos y pistas de audio no es configurable — la API la descarta al guardar. - El regex del Video ID es
^[A-Za-z0-9_-]{11}$. Las violaciones de formato se rechazan conAPIf001.
Via UI
Navegación: Sources → Add source.
Elige el tipo
Abre Add source y pon Type en Youtube Live. (La opción es visible solo si está presente la licencia C21LiveYouTube.)
Rellena el editor
| Etiqueta UI | Valor |
|---|---|
| Name | Identificador estable reutilizado por UI, API y logs. |
| Description | Descripción libre opcional. |
| Alias | Alias opcional. |
| YouTube Video ID | El Video ID de 11 caracteres. El hint inline muestra "This is the public Video ID of a YouTube Live broadcast — not a stream key from YouTube Studio." |
Las secciones de multi-audio, subtítulos y pistas de audio quedan ocultas para este tipo de Channel. Guarda.
Enlaza a un Live stream
Abre el Live stream destino en el editor de Live streams y elige este Channel como Source. Guarda.
Arranca
Arranca el Live stream desde On air o desde el detalle del Live stream. El contenedor de ingest auxiliar arranca, descarga la emisión y la republica en el bus interno; el entrypoint Channel del broadcast se pone verde en la fila de On air cuando empiezan a fluir frames.
Via API
| Acción | Método + ruta | operationId |
|---|---|---|
| Crear el Channel | POST /c21apiv2/channels | addChannel |
curl -X POST "https://<tu-host>/c21apiv2/channels" \
-H "Authorization: Bearer <YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"name": "YT Lofi 24/7",
"alias": "yt-lofi",
"description": "Feed musical de referencia",
"type": "Youtube Live",
"settings": {
"youtube_video_id": "jfKfPfyJRdk"
}
}'
El servidor descarta cualquier otra clave de settings. El blob persistido es exactamente {youtube_video_id: <id>}. Una vez guardado, enlaza el Channel a un Live stream con PUT /c21apiv2/livestreams/{id} y arráncalo con POST /c21apiv2/livestreams/{id}/start (operationId startLivestream). Consulta Arrancar y detener un Live stream.
Verificar
- El Channel aparece en Sources con su Video ID y la Watch URL derivada (
https://www.youtube.com/watch?v=<id>) en el panel de detalle. - Tras enlazar a un Live stream y arrancarlo, la fila del Live stream en On air muestra el entrypoint Channel sano y empieza a producir salida a los Destinations enlazados.
- El log de events del broadcast muestra una línea confirmando que se añadió la entrada YouTube Live (el encoder loguea
Adding Youtube Live input with Video ID '<id>'al levantar la entrada).
Resolución de problemas
APIf807al guardar — la licencia C21LiveYouTube falta o está expirada. El tipo de Channel sigue en el contrato API pero las mutaciones se rechazan. Verifica la licencia en Licencias.APIf001al guardar — el Video ID no cumple^[A-Za-z0-9_-]{11}$. Comprueba la longitud y el charset; recorta espacios al principio o al final.- El Channel arranca pero la emisión nunca produce frames — la emisión ya no está en directo, se cambió a oculta o privada, o YouTube devolvió el challenge anti-bot en la IP del deploy. Si la emisión está confirmada en directo y accesible desde un navegador normal, el ingest está probablemente bloqueado a nivel de red — coordina con tu representante Cires21 el despliegue de un fichero de cookies en el encoder.
- El Live stream se reinicia tras ~30 s sin producir salida — la versión del encoder es anterior al fix de watchdog para el contenedor YouTube Live. Actualiza el encoder a la release actual.
Cross-links
- Sources → Youtube Live — referencia del tipo de Channel.
- Licencias — modelo de licencia C21LiveYouTube.
- Arrancar y detener un Live stream — ciclo de arranque / parada una vez enlazado el Channel.
FAQ
Arrancar y detener un Live stream
Pon en el aire un Live stream configurado y detenlo de nuevo — desde la UI, desde la API o ambas.
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.