La API ahora admite la capacidad de marcar tus transmisiones en vivo como “creadas para niños”, y el recurso
liveBroadcast ahora contiene una propiedad que identifica el estado de “creada para niños” de esa transmisión en vivo. Las Condiciones del Servicio de los Servicios de la API de YouTube y las Políticas para Desarrolladores también se actualizaron el 10 de enero de 2020. Para obtener más información, consulta los historiales de revisiones del Servicio de la API de YouTube Live Streaming y las Condiciones del Servicio de los Servicios de la API de YouTube.
Un recurso liveBroadcast representa un evento que se transmitirá mediante video en vivo en YouTube.
Métodos
La API admite los siguientes métodos para los recursos liveBroadcasts:
- list
- Devuelve una lista de transmisiones de YouTube que coinciden con los parámetros de la solicitud a la API. Pruébala ahora.
- insertar
- Crea una transmisión. Pruébala ahora.
- actualizar
- Actualiza una transmisión. Por ejemplo, podrías modificar la configuración de transmisión definida en el objeto
contentDetailsdel recursoliveBroadcast. Pruébalo ahora. - borrar
- Borra una transmisión. Pruébala ahora.
- vincular
- Vincula una emisión de YouTube a una transmisión o quita una vinculación existente entre una emisión y una transmisión. Una transmisión solo se puede vincular a una transmisión de video por Internet, aunque una transmisión de video por Internet se puede vincular a más de una transmisión. Pruébala ahora.
- transition
- Cambia el estado de una transmisión en vivo de YouTube y, luego, inicia los procesos asociados con el nuevo estado. Por ejemplo, cuando cambias el estado de una transmisión a
testing, YouTube comienza a transmitir video al flujo de supervisión de esa transmisión. Antes de llamar a este método, debes confirmar que el valor de la propiedadstatus.streamStatuspara la transmisión vinculada a tu emisión seaactive. Pruébalo ahora. - cuepoint
- Inserta un punto de referencia en una transmisión en vivo. Es posible que el punto de referencia active una pausa publicitaria.
Representación de recursos
En la siguiente estructura JSON, se muestra el formato de un recurso liveBroadcasts:
{
"kind": "youtube#liveBroadcast",
"etag": etag,
"id": string,
"snippet": {
"publishedAt": datetime,
"channelId": string,
"title": string,
"description": string,
"thumbnails": {
(key): {
"url": string,
"width": unsigned integer,
"height": unsigned integer
}
},
"scheduledStartTime": datetime,
"scheduledEndTime": datetime,
"actualStartTime": datetime,
"actualEndTime": datetime,
"isDefaultBroadcast": boolean,
"liveChatId": string
},
"status": {
"lifeCycleStatus": string,
"privacyStatus": string,
"recordingStatus": string,
"madeForKids": string,
"selfDeclaredMadeForKids": string,
},
"contentDetails": {
"boundStreamId": string,
"boundStreamLastUpdateTimeMs": datetime,
"monitorStream": {
"enableMonitorStream": boolean,
"broadcastStreamDelayMs": unsigned integer,
"embedHtml": string
},
"enableEmbed": boolean,
"enableDvr": boolean,
"recordFromStart": boolean,
"enableClosedCaptions": boolean,
"closedCaptionsType": string,
"projection": string,
"enableLowLatency": boolean,
"latencyPreference": boolean,
"enableAutoStart": boolean,
"enableAutoStop": boolean,
"availabilityConfig": {
"globalConfig": {
"excludedRegionCodes": [
string
],
"interval": {
"startTime": datetime,
"endTime": datetime
}
},
"regionsConfig": {
"regionIntervals": [
{
"regionCode": string,
"interval": {
"startTime": datetime,
"endTime": datetime
}
}
]
}
}
},
"statistics": {
"totalChatCount": unsigned long
},
"monetizationDetails": {
"adsMonetizationStatus": string,
"eligibleForAdsMonetization": boolean,
"cuepointSchedule": {
"enabled": boolean,
"pauseAdsUntil": datetime,
"ytOptimizedCuepointConfig": string,
"creatorCuepointConfig": {
"scheduleStrategy": string,
"repeatIntervalSecs": unsigned integer
}
}
}
}Propiedades
La siguiente tabla define las propiedades que aparecen en este recurso:
| Propiedades | |
|---|---|
kind |
stringIdentifica el tipo de recurso de la API. El valor será youtube#liveBroadcast. |
etag |
etagEs el ETag de este recurso. |
id |
stringEs el ID que YouTube asigna para identificar de forma única la transmisión. |
snippet |
objectEl objeto snippet contiene detalles básicos sobre el evento, como el título, la descripción, la hora de inicio y la hora de finalización. |
snippet.publishedAt |
datetimeFecha y hora en que se agregó la transmisión al programa de transmisiones en vivo de YouTube. El valor se especifica en formato ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). |
snippet.channelId |
stringEs el ID que YouTube usa para identificar de forma única el canal que publica la transmisión. |
snippet.title |
stringEs el título de la transmisión. Ten en cuenta que la transmisión representa exactamente un video de YouTube. Puedes configurar este campo modificando el recurso de transmisión o configurando el campo title del recurso de video correspondiente. |
snippet.description |
stringEs la descripción de la transmisión. Al igual que con title, puedes configurar este campo modificando el recurso de transmisión o configurando el campo description del recurso de video correspondiente. |
snippet.thumbnails |
objectEs un mapa de imágenes en miniatura asociadas con la transmisión. Para cada objeto anidado en este objeto, la clave es el nombre de la imagen en miniatura y el valor es un objeto que contiene otra información sobre la miniatura. |
snippet.thumbnails.(key) |
objectLos valores de clave válidos son los siguientes:
|
snippet.thumbnails.(key).url |
stringEs la URL de la imagen. |
snippet.thumbnails.(key).width |
unsigned integerAncho de la imagen. |
snippet.thumbnails.(key).height |
unsigned integerAltura de la imagen. |
snippet.scheduledStartTime |
datetimeFecha y hora programadas para el inicio de la transmisión. El valor se especifica en formato ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). Creator Studio permite crear transmisiones sin programar una hora de inicio. En este caso, la transmisión comienza cuando el propietario del canal comienza a transmitir. En el caso de estas transmisiones, el valor de datetime corresponde a la hora cero de la época de Unix, y este valor no se puede cambiar con la API ni en Creator Studio. |
snippet.scheduledEndTime |
datetimeFecha y hora en que está programado que finalice la transmisión. El valor se especifica en formato ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). Si un recurso liveBroadcast no especifica un valor para esta propiedad, la transmisión se programará para que continúe de forma indefinida. Del mismo modo, si no especificas un valor para esta propiedad, YouTube tratará la transmisión como si fuera a continuar de forma indefinida. |
snippet.actualStartTime |
datetimeFecha y hora en que comenzó la transmisión. Esta información solo está disponible cuando el estado de la transmisión es live. El valor se especifica en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). |
snippet.actualEndTime |
datetimeFecha y hora en que finalizó la transmisión. Esta información solo está disponible cuando el estado de la transmisión es complete. El valor se especifica en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). |
snippet.isDefaultBroadcast |
boolean
Esta propiedad dejará de estar disponible a partir del 1 de septiembre de 2020. En ese momento, YouTube dejará de crear transmisiones y emisiones predeterminadas cuando se habilite un canal para la transmisión en vivo. Consulta el anuncio de baja para obtener más detalles.
Esta propiedad indica si esta transmisión es la predeterminada.Cómo funcionan las transmisiones predeterminadas Cuando se habilita un canal de YouTube para la transmisión en vivo, YouTube crea una transmisión y una emisión predeterminadas para el canal. La transmisión define cómo el propietario del canal envía video en vivo a YouTube, y la emisión es la forma en que los usuarios pueden ver la transmisión predeterminada. El propietario de un canal puede usar los métodos liveStreams.list y liveBroadcasts.list para identificar estos recursos.Cuando un canal comienza a transmitir video en su transmisión predeterminada, el video se muestra en la transmisión predeterminada del canal. Cuando finaliza la transmisión, YouTube convierte la emisión completa en un video de YouTube y le asigna un ID de video. Una vez que se completa la conversión, el video se incluye en la lista de videos subidos del canal. El video no está disponible inmediatamente después de que finaliza la transmisión, y la duración de la demora se relaciona con la duración real de la transmisión. |
snippet.liveChatId |
stringEs el ID del chat en vivo de YouTube de la transmisión. Con este ID, puedes usar los métodos del recurso liveChatMessage para recuperar, insertar o borrar mensajes de chat. También puedes agregar o quitar moderadores del chat, prohibir que los usuarios participen en chats en vivo o quitar prohibiciones existentes. |
status |
objectEl objeto status contiene información sobre el estado del evento. |
status.lifeCycleStatus |
stringEs el estado de la transmisión. El estado se puede actualizar con el método liveBroadcasts.transition de la API.Los valores válidos para esta propiedad son los siguientes:
|
status.privacyStatus |
stringEs el estado de privacidad de la transmisión. Ten en cuenta que la transmisión representa exactamente un video de YouTube, por lo que la configuración de privacidad es idéntica a la que se admite para los videos. Además, puedes establecer este campo modificando el recurso de transmisión o configurando el campo privacyStatus del recurso de video correspondiente.Los valores válidos para esta propiedad son los siguientes:
|
status.recordingStatus |
stringEs el estado de grabación de la transmisión. Los valores válidos para esta propiedad son los siguientes:
|
status.madeForKids |
booleanEste valor indica si la transmisión se designa como contenido dirigido a niños. El valor de esta propiedad es de solo lectura. |
status.selfDeclaredMadeForKids |
booleanEn una solicitud de liveBroadcasts.insert, esta propiedad permite que el propietario del canal designe la transmisión como dirigida a niños. En una solicitud de
liveBroadcasts.list, el valor de la propiedad solo se devuelve si el propietario del canal autorizó la solicitud de la API. |
contentDetails |
objectEl objeto contentDetails contiene información sobre el contenido de video del evento, como si se puede mostrar en un reproductor de video integrado o si se archivará y, por lo tanto, estará disponible para su visualización después de que finalice el evento. |
contentDetails.boundStreamId |
stringEste valor identifica de forma única el objeto live stream vinculado a la transmisión. |
contentDetails.boundStreamLastUpdateTimeMs |
datetimeFecha y hora en que se actualizó por última vez la transmisión en vivo a la que hace referencia boundStreamId. |
contentDetails.monitorStream |
objectEl objeto monitorStream contiene información sobre la transmisión de supervisión, que el broadcaster puede usar para revisar el contenido del evento antes de que se muestre públicamente la transmisión. |
contentDetails.monitorStream.enableMonitorStream |
booleanEste valor determina si la transmisión de supervisión está habilitada para la transmisión. Si la transmisión de supervisión está habilitada, YouTube transmitirá el contenido del evento en una transmisión especial destinada solo al consumo del organizador. El emisor puede usar la transmisión para revisar el contenido del evento y también para identificar los momentos óptimos para insertar marcas. Debes establecer este valor en true si planeas tener una etapa de testing para tu transmisión o si quieres tener una demora de la transmisión para tu evento. Además, si el valor de esta propiedad es true, debes hacer la transición de tu transmisión al estado testing antes de poder hacer la transición al estado live. (Si el valor de la propiedad es false, tu transmisión no puede tener una etapa testing, por lo que puedes hacer la transición directamente al estado live).Cuando update a broadcast, esta propiedad debe establecerse si tu solicitud a la API incluye la parte contentDetails en el valor del parámetro part. Sin embargo, cuando usas insert a broadcast, la propiedad es opcional y tiene un valor predeterminado de true.Importante: Esta propiedad no se puede actualizar una vez que la transmisión esté en el estado testing o live. |
contentDetails.monitorStream.broadcastStreamDelayMs |
unsigned integerSi configuraste la propiedad enableMonitorStream como true, esta propiedad determina la duración del retraso de la transmisión en vivo.Cuando update a broadcast, esta propiedad debe establecerse si tu solicitud a la API incluye la parte contentDetails en el valor del parámetro part. Sin embargo, cuando usas insert a broadcast, la propiedad es opcional y tiene un valor predeterminado de 0. Este valor indica que la transmisión no tiene una demora de la transmisión. Nota: Esta propiedad no se puede actualizar una vez que la transmisión está en el estado testing o live. |
contentDetails.monitorStream.embedHtml |
stringCódigo HTML que incorpora un reproductor que reproduce la transmisión del monitor. |
contentDetails.enableEmbed |
booleanEste parámetro de configuración indica si el video de la transmisión se puede reproducir en un reproductor incorporado. Si decides archivar el video (con la propiedad enableArchive), este parámetro de configuración también se aplicará al video archivado.Cuando update a broadcast, esta propiedad debe establecerse si tu solicitud a la API incluye la parte contentDetails en el valor del parámetro part. Sin embargo, cuando usas insert a broadcast, la propiedad es opcional y tiene un valor predeterminado de true.Nota: Esta propiedad no se puede actualizar una vez que la transmisión está en el estado testing o live. |
contentDetails.enableDvr |
booleanEste parámetro de configuración determina si los usuarios pueden acceder a los controles de DVR mientras miran el video. Los controles de DVR permiten que el usuario controle la experiencia de reproducción de video pausando, retrocediendo o adelantando el contenido. El valor predeterminado de esta propiedad es true. Cuando update a broadcast, esta propiedad debe establecerse si tu solicitud a la API incluye la parte contentDetails en el valor del parámetro part. Sin embargo, cuando usas insert a broadcast, la propiedad es opcional y tiene un valor predeterminado de true.Importante: Debes establecer el valor en true y también establecer el valor de la propiedad enableArchive en true si deseas que la reproducción esté disponible inmediatamente después de que finalice la transmisión. Además, esta propiedad no se puede actualizar una vez que la transmisión esté en el estado testing o live. |
contentDetails.recordFromStart |
booleanEste parámetro de configuración indica si YouTube comenzará a grabar automáticamente la transmisión después de que el estado del evento cambie a En vivo. El valor predeterminado de esta propiedad es true, y solo se puede establecer en false si el canal de transmisión tiene permiso para inhabilitar las grabaciones de las transmisiones en vivo.Si tu canal no tiene permiso para inhabilitar las grabaciones y tratas de insertar una transmisión con la propiedad recordFromStart establecida en false, la API devolverá un error Forbidden. Además, si tu canal no tiene ese permiso y tratas de actualizar una transmisión para establecer la propiedad recordFromStart en false, la API devolverá un error modificationNotAllowed.Cuando update a broadcast, esta propiedad debe establecerse si tu solicitud a la API incluye la parte contentDetails en el valor del parámetro part. Sin embargo, cuando usas insert a broadcast, la propiedad es opcional y tiene un valor predeterminado de true.Importante: También debes establecer el valor de la propiedad enableDvr en true si deseas que la reproducción esté disponible inmediatamente después de que finalice la transmisión. Si estableces el valor de esta propiedad en true, pero no estableces la propiedad enableDvr en true, es posible que haya una demora de aproximadamente un día antes de que el video archivado esté disponible para su reproducción.Nota: Esta propiedad no se puede actualizar una vez que la transmisión está en el estado testing o live. |
contentDetails.enableClosedCaptions |
booleanEsta propiedad dejó de estar disponible el 17 de diciembre de 2015. En su lugar, usa la propiedad contentDetails.closedCaptionsType.Este parámetro de configuración indica si los subtítulos codificados HTTP POST están habilitados para esta transmisión. Para los clientes de API que ya usan esta propiedad, haz lo siguiente:
|
contentDetails.closedCaptionsType |
stringNota: Esta propiedad reemplaza la propiedad contentDetails.enableClosedCaptions.Esta propiedad indica si los subtítulos están habilitados para tu transmisión y, si es así, qué tipo de subtítulos proporcionas:
|
contentDetails.projection |
stringEs el formato de proyección de esta transmisión. El valor predeterminado de la propiedad es rectangular.Los valores válidos para esta propiedad son los siguientes:
|
contentDetails.enableLowLatency |
booleanIndica si esta transmisión se debe codificar para la transmisión de latencia baja. Una transmisión de baja latencia puede reducir el tiempo que tarda en aparecer el video para los usuarios que miran una transmisión, aunque también puede afectar la resolución para los usuarios que miran la transmisión. |
contentDetails.latencyPreference |
stringIndica qué parámetro de configuración de latencia se usará para esta transmisión. Esta propiedad se puede usar en lugar de enableLowLatency, que no admite ultraLow.Una transmisión de baja latencia puede reducir el tiempo que tarda el video en ser visible para los usuarios que miran una transmisión, aunque también puede afectar la fluidez de la reproducción. Una transmisión de latencia ultrabaja reduce aún más el tiempo que tarda el video en ser visible para los usuarios, lo que facilita la interacción con ellos, pero la latencia ultrabaja no admite subtítulos ni resoluciones superiores a 1080p. Los valores válidos para esta propiedad son los siguientes:
|
contentDetails.enableAutoStart |
booleanIndica si esta transmisión debe comenzar automáticamente cuando comiences a transmitir video en el live stream vinculado. |
contentDetails.enableAutoStop |
booleanIndica si esta transmisión debe detenerse automáticamente aproximadamente un minuto después de que el propietario del canal deje de transmitir video en la transmisión de video vinculada. |
contentDetails.availabilityConfig |
objectEs la configuración de disponibilidad de la transmisión. Se usa para establecer la disponibilidad de regiones específicas o bloquear regiones específicas. Es opcional. Si no se configura, no se aplica. |
contentDetails.availabilityConfig.globalConfig |
objectEs la configuración de disponibilidad global de la transmisión. El video está disponible en todas las regiones, excepto en las que se especifican en la lista excludedRegionCodes. |
contentDetails.availabilityConfig.globalConfig.excludedRegionCodes |
list (string)Es una lista de las regiones en las que se bloqueó el video. |
contentDetails.availabilityConfig.globalConfig.interval |
objectEs el período predeterminado en el que el video está disponible para todas las regiones no bloqueadas. Nota: Esta propiedad no se admite para las transmisiones en vivo próximas o activas. |
contentDetails.availabilityConfig.globalConfig.interval.startTime |
datetimeFecha y hora en que el video estará disponible. Si no se especifica, el video ya está disponible. El valor se especifica en formato ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). |
contentDetails.availabilityConfig.globalConfig.interval.endTime |
datetimeFecha y hora en que el video dejará de estar disponible. Si no se especifica, el video estará disponible para siempre. Las horas de inicio y finalización especificadas no pueden ser más de cinco años en el futuro. El valor se especifica en formato ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). |
contentDetails.availabilityConfig.regionsConfig |
objectEs la configuración de disponibilidad regional de la transmisión. El video solo está disponible en las regiones especificadas. |
contentDetails.availabilityConfig.regionsConfig.regionIntervals |
list (object)Es una lista de regiones y períodos en los que está disponible el video. Si se especifica una región varias veces, se usa la unión de todos los intervalos. |
contentDetails.availabilityConfig.regionsConfig.regionIntervals.regionCode |
stringEs la región en la que está disponible el video. |
contentDetails.availabilityConfig.regionsConfig.regionIntervals.interval |
objectEs el período durante el cual el video está disponible para la región especificada. Nota: Esta propiedad no se admite para las transmisiones en vivo próximas o activas. |
contentDetails.availabilityConfig.regionsConfig.regionIntervals.interval.startTime |
datetimeFecha y hora en que el video estará disponible en la región especificada. Si no se especifica, el video ya está disponible. El valor se especifica en formato ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). |
contentDetails.availabilityConfig.regionsConfig.regionIntervals.interval.endTime |
datetimeFecha y hora en que el video deja de estar disponible en la región especificada. Si no se especifica, el video estará disponible para siempre. Las horas de inicio y finalización especificadas no pueden ser más de cinco años en el futuro. El valor se especifica en formato ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). |
statistics |
objectEl objeto statistics contiene estadísticas relacionadas con una transmisión en vivo. Los valores de estas estadísticas pueden cambiar durante la transmisión y solo se pueden recuperar mientras la transmisión esté en vivo. |
statistics.totalChatCount |
unsigned longEs la cantidad total de mensajes de chat en vivo asociados con la transmisión. La propiedad y su valor están presentes si la transmisión es visible para el usuario, tiene habilitada la función de chat en vivo y tiene al menos un mensaje. Ten en cuenta que esta propiedad no especificará un valor después de que finalice la transmisión. Por lo tanto, esta propiedad no identificaría la cantidad de mensajes de chat de un video archivado de una transmisión en vivo completada. |
monetizationDetails |
objectEl objeto monetizationDetails contiene información sobre los detalles de monetización de la transmisión, como si el automatizador de anuncios está activado o si se retrasa la inserción de anuncios de video intercalados. |
monetizationDetails.adsMonetizationStatus |
stringEsta propiedad indica si una transmisión de video tiene habilitados los anuncios durante el video. Los valores válidos son on y off. |
monetizationDetails.eligibleForAdsMonetization |
stringEsta propiedad indica si una transmisión de video es apta para los anuncios durante el video. Una transmisión puede no ser apta por varios motivos, como un reclamo existente o un canal que no está configurado para la monetización. |
monetizationDetails.cuepointSchedule |
objectEl objeto cuepointSchedule especifica la configuración de automatización de anuncios para la
transmisión. |
monetizationDetails.cuepointSchedule.enabled |
booleanEste valor determina si los anuncios se insertan automáticamente en la transmisión. Si el valor es true, YouTube insertará automáticamente anuncios durante el video en la transmisión. La programación de publicación de anuncios se determinará según el valor de los otros campos del objeto monetizationDetails.cuepointSchedule.
|
monetizationDetails.cuepointSchedule.pauseAdsUntil |
datetimeEste valor especifica que YouTube no debe insertar anuncios durante el video en la transmisión hasta la fecha y hora especificadas. El valor se especifica en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). El valor debe establecerse en una fecha y hora futuras para pausar los anuncios. El valor del campo también se puede establecer en una fecha y hora pasadas o en un valor vacío para reactivar los anuncios. |
monetizationDetails.cuepointSchedule.ytOptimizedCuepointConfig |
stringEste campo especifica la opción seleccionada para los puntos de inserción de anuncios insertados automáticamente. El campo puede especificar uno de los siguientes tres modos:
|
monetizationDetails.cuepointSchedule.creatorCuepointConfig |
objectEl objeto creatorCuepointConfig especifica la opción del automatizador de anuncios, que permite al creador elegir cómo aparecen los anuncios durante el video. |
monetizationDetails.cuepointSchedule.creatorCuepointConfig.scheduleStrategy |
stringEste valor especifica la estrategia que debe seguir YouTube para programar los puntos de referencia. Los valores válidos son los siguientes:
|
monetizationDetails.cuepointSchedule.creatorCuepointConfig.repeatIntervalSecs |
unsigned integerEste valor especifica el intervalo, en segundos, entre las inserciones automáticas de anuncios durante una transmisión. Por ejemplo, si el valor es 360, YouTube puede insertar marcas de anuncios durante el video en intervalos de seis minutos.Nota:
|