LiveBroadcasts

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 “creado para niños” de esa transmisión en vivo. Las Condiciones del Servicio y las Políticas para Desarrolladores de los Servicios de la API de YouTube también se actualizaron el 10 de enero de 2020. Para obtener más información, consulta los historiales de revisión del servicio de la API de transmisión en vivo de YouTube 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 solicitud de la API. Pruébala ahora.
insertar
Crea una transmisión. Pruébala ahora.
actualización
Actualiza una transmisión. Por ejemplo, puedes modificar la configuración de transmisión definida en el objeto contentDetails del recurso liveBroadcast. Pruébalo ahora.
borrar
Borra una transmisión. Pruébala ahora.
vincular
Vincula una transmisión de YouTube a una transmisión o quita una vinculación existente entre una transmisión y una transmisión. Una transmisión solo se puede vincular a una transmisión de video, aunque una transmisión de video 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 a la transmisión del monitor de esa transmisión. Antes de llamar a este método, debes confirmar que el valor de la propiedad status.streamStatus para la transmisión vinculada a tu transmisión sea active. Pruébalo ahora.
punto de inserción
Inserta un punto de inserción en una transmisión en vivo. Es posible que el punto de inserción 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
  },
  "statistics": {
    "totalChatCount": unsigned long
  },
  "monetizationDetails": {
      "cuepointSchedule": {
        "enabled": boolean,
        "pauseAdsUntil": datetime,
        "scheduleStrategy": string,
        "repeatIntervalSecs": unsigned integer,
      }
    }
  }
}

Propiedades

La siguiente tabla define las propiedades que aparecen en este recurso:

Propiedades
kind string
Identifica el tipo de recurso de la API. El valor será youtube#liveBroadcast.
etag etag
Es la etiqueta de Etag de este recurso.
id string
Es el ID que YouTube asigna para identificar de forma exclusiva la transmisión.
snippet object
El objeto snippet contiene detalles básicos sobre el evento, como su título, descripción, hora de inicio y hora de finalización.
snippet.publishedAt datetime
Fecha y hora en que la transmisión se agregó a la programación de transmisiones en vivo de YouTube. El valor se especifica en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ).
snippet.channelId string
Es el ID que YouTube usa para identificar de forma exclusiva el canal que publica la transmisión.
snippet.title string
Es el título de la transmisión. Ten en cuenta que la transmisión representa exactamente un video de YouTube. Para configurar este campo, modifica el recurso de transmisión o establece el campo title del recurso de video correspondiente.
snippet.description string
Es 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 object
Es 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 de miniatura y el valor es un objeto que contiene otra información sobre la miniatura.
snippet.thumbnails.(key) object
Los valores clave válidos son los siguientes:
  • default: Es la imagen en miniatura predeterminada. La viñeta predeterminada de un video, o de un recurso que se refiere a un video, como un elemento de una lista de reproducción o el resultado de una búsqueda, es de 120 píxeles de ancho y 90 píxeles de alto. La viñeta predeterminada para un canal es de 88 píxeles de ancho y 88 píxeles de alto.
  • medium: Es una versión de mayor resolución de la imagen en miniatura. Para un video (o un recurso que hace referencia a un video), esta imagen es de 320 píxeles de ancho y 180 píxeles de alto. Para un canal, esta imagen es de 240 píxeles de ancho y 240 píxeles de alto.
  • high: Es una versión de alta resolución de la imagen en miniatura. Para un video (o un recurso que hace referencia a un video), esta imagen es de 480 píxeles de ancho y 360 píxeles de alto. Para un canal, esta imagen es de 800 píxeles de ancho y 800 píxeles de alto.
snippet.thumbnails.(key).url string
Es la URL de la imagen.
snippet.thumbnails.(key).width unsigned integer
Es el ancho de la imagen.
snippet.thumbnails.(key).height unsigned integer
Es la altura de la imagen.
snippet.scheduledStartTime datetime
Es la fecha y hora en que está programada la transmisión. El valor se especifica en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). Creator Studio te permite crear una transmisión sin programar una hora de inicio. En este caso, la transmisión comienza cada vez que el propietario del canal comienza a transmitir. Para estas transmisiones, el valor de datetime corresponde a la hora cero de UNIX y este valor no se puede cambiar mediante la API ni en Creator Studio.
snippet.scheduledEndTime datetime
Es la fecha y hora en la que está programada la finalización de 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 programa para continuar de forma indefinida. Del mismo modo, si no especificas un valor para esta propiedad, YouTube tratará la transmisión como si continuara indefinidamente.
snippet.actualStartTime datetime
Es la fecha y hora en que comenzó la transmisión. Esta información solo está disponible una vez que el estado de la transmisión es live. El valor se especifica en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ).
snippet.actualEndTime datetime
Fecha y hora en que finalizó la transmisión. Esta información solo está disponible una vez que 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 transmisiones predeterminadas cuando un canal esté habilitado para transmitir 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 un canal de YouTube está habilitado para transmitir en vivo, YouTube crea una transmisión predeterminada y una transmisión predeterminada para el canal. La transmisión define cómo el propietario del canal envía videos en vivo a YouTube, y la transmisió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 videos en su transmisión predeterminada, el video se puede ver en la transmisión predeterminada del canal. Cuando termina la transmisión, YouTube convierte la transmisión completa en un video de YouTube y le asigna un ID de video de YouTube.

Después de 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 está relacionada con la duración real de la transmisión.
snippet.liveChatId string
Es 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 de chat, prohibir que los usuarios participen en chats en vivo o quitar prohibiciones existentes.
status object
El objeto status contiene información sobre el estado del evento.
status.lifeCycleStatus string
Es 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:
  • complete: La transmisión finalizó.
  • created: La transmisión tiene una configuración incompleta, por lo que no está lista para migrar a un estado live o testing, pero se creó y es válida.
  • live: la transmisión está activa.
  • liveStarting: La transmisión está en proceso de transición al estado live.
  • ready: La configuración de la transmisión está completa y la transmisión puede pasar a un estado live o testing.
  • revoked: Esta transmisión se quitó por una acción de un administrador.
  • testStarting: la transmisión está en proceso de transición al estado testing.
  • testing: solo el socio puede ver la transmisión.
status.privacyStatus string
Es 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 configurar 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:
  • private
  • public
  • unlisted
status.recordingStatus string
Es el estado de grabación de la transmisión.

Los valores válidos para esta propiedad son los siguientes:
  • notRecording
  • recorded
  • recording
status.madeForKids boolean
Este valor indica si la transmisión está destinada a niños. Este valor de propiedad es de solo lectura.
status.selfDeclaredMadeForKids boolean
En una solicitud liveBroadcasts.insert, esta propiedad permite al propietario del canal designar la transmisión como dirigida a niños. En una solicitud liveBroadcasts.list, el valor de la propiedad solo se muestra si el propietario del canal autorizó la solicitud a la API.
contentDetails object
El objeto contentDetails contiene información sobre el contenido de video del evento, como si se puede mostrar en un reproductor de video incorporado o si se archivará y, por lo tanto, estará disponible para su visualización después de que finalice el evento.
contentDetails.boundStreamId string
Este valor identifica de forma única el live stream vinculado a la transmisión.
contentDetails.boundStreamLastUpdateTimeMs datetime
Es la fecha y hora en que se actualizó por última vez la transmisión en vivo a la que hace referencia boundStreamId.
contentDetails.monitorStream object
El objeto monitorStream contiene información sobre la transmisión del monitor, que el publicador puede usar para revisar el contenido del evento antes de que se muestre públicamente.
contentDetails.monitorStream.enableMonitorStream boolean
Este valor determina si la transmisión continua de supervisión está habilitada para la transmisión. Si la transmisión del monitor está habilitada, YouTube transmitirá el contenido del evento en una transmisión especial destinada solo para el consumo del publicador. La emisora puede usar la transmisión para revisar el contenido del evento y también para identificar los momentos óptimos en los cuales insertar puntos de inserción.

Debes establecer este valor en true si deseas tener un escenario testing para tu transmisión o si quieres tener una demora de transmisión para tu evento. Además, si el valor de esta propiedad es true, debes realizar la transición de tu transmisión al estado testing antes de poder realizar 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 de la transmisión directamente al estado live).

Cuando update a broadcast, esta propiedad se debe establecer si tu solicitud a la API incluye la parte contentDetails en el valor del parámetro part. Sin embargo, cuando 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 estado testing o live.
contentDetails.monitorStream.broadcastStreamDelayMs unsigned integer
Si configuraste la propiedad enableMonitorStream en true, esta propiedad determina la duración de la demora de la transmisión en vivo.

Cuando update a broadcast, esta propiedad se debe establecer si tu solicitud a la API incluye la parte contentDetails en el valor del parámetro part. Sin embargo, cuando 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. Nota: Esta propiedad no se puede actualizar una vez que la transmisión está en estado testing o live.
contentDetails.monitorStream.embedHtml string
Código HTML que incorpora un reproductor que reproduce la transmisión de monitor.
contentDetails.enableEmbed boolean
Este 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 usas update a broadcast, esta propiedad se debe establecer si tu solicitud a la API incluye la parte contentDetails en el valor del parámetro part. Sin embargo, cuando 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 boolean
Este parámetro de configuración determina si los usuarios pueden acceder a los controles del DVR mientras miran el video. Los controles de DVR permiten al usuario controlar la experiencia de reproducción de video, ya que pueden pausar, retroceder o adelantar el contenido. El valor predeterminado de esta propiedad es true.

Cuando update a broadcast, esta propiedad se debe establecer si tu solicitud a la API incluye la parte contentDetails en el valor del parámetro part. Sin embargo, cuando 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 boolean
Este 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 puede inhabilitar las grabaciones de las transmisiones en vivo.

Si tu canal no tiene permiso para inhabilitar grabaciones y tratas de insertar una transmisión con la propiedad recordFromStart establecida en false, la API mostrará un error Forbidden. Además, si tu canal no tiene ese permiso e intentas actualizar una transmisión para establecer la propiedad recordFromStart en false, la API mostrará un error modificationNotAllowed.

Cuando update a broadcast, esta propiedad se debe establecer si tu solicitud a la API incluye la parte contentDetails en el valor del parámetro part. Sin embargo, cuando 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 alrededor de un día antes de que el video archivado esté disponible para la reproducción.

Nota: Esta propiedad no se puede actualizar una vez que la transmisión está en estado testing o live.
contentDetails.enableClosedCaptions boolean
Esta propiedad dejó de estar disponible a partir del 17 de diciembre de 2015. En su lugar, usa la propiedad contentDetails.closedCaptionsType.

Este parámetro de configuración indica si los subtítulos HTTP POST están habilitados para esta transmisión. Para los clientes de API que ya usan esta propiedad:
  • Establecer el valor de la propiedad en true equivale a establecer la propiedad contentDetails.closedCaptionsType en closedCaptionsHttpPost.
  • Establecer el valor de la propiedad en false equivale a establecer la propiedad contentDetails.closedCaptionsType en closedCaptionsDisabled.
contentDetails.closedCaptionsType string
Nota: Esta propiedad reemplaza la propiedad contentDetails.enableClosedCaptions.

Esta propiedad indica si los subtítulos están habilitados para tu transmisión y, de ser así, qué tipo de subtítulos proporcionas:
  • closedCaptionsDisabled: Los subtítulos están inhabilitados para la transmisión en vivo.
  • closedCaptionsHttpPost: Enviarás los subtítulos a través de HTTP POST a una URL de transferencia asociada con tu transmisión en vivo.
  • closedCaptionsEmbedded: Los subtítulos se codificarán en la transmisión de video con los formatos EIA-608 o CEA-708.
contentDetails.projection string
Es 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:
  • 360
  • rectangular
contentDetails.enableLowLatency boolean
Indica si esta transmisión se debe codificar para la transmisión de baja latencia. Una transmisión de baja latencia puede reducir el tiempo que tarda un video en ser visible para los usuarios que miran una transmisión, aunque también puede afectar la resolución para los usuarios de la transmisión.
contentDetails.latencyPreference string
Indica qué configuración de latencia 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 la cantidad de 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 ultrabaja latencia 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:
  • normal
  • low
  • ultraLow
contentDetails.enableAutoStart boolean
Indica si esta transmisión debe comenzar automáticamente cuando comienzas a transmitir video en el live stream vinculado.
contentDetails.enableAutoStop boolean
Indica si esta transmisión debe detenerse automáticamente alrededor de un minuto después de que el propietario del canal deja de transmitir video en la transmisión de video vinculada.
statistics object
El 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 esta está en vivo.
statistics.totalChatCount unsigned long
Es la cantidad total de mensajes de chat en vivo asociados con la transmisión. La propiedad y su valor están presentes si el usuario puede ver la transmisión, 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 object
El 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 durante el video.

monetizationDetails.cuepointSchedule object
El objeto cuepointSchedule especifica la configuración de automatización de anuncios para la transmisión.
monetizationDetails.cuepointSchedule.enabled boolean
Este 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. El programa para publicar anuncios se determinará según el valor de los otros campos del objeto monetizationDetails.cuepointSchedule.
monetizationDetails.cuepointSchedule.pauseAdsUntil datetime
Este valor especifica que YouTube no debe insertar anuncios durante 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 se debe establecer en una fecha y hora futuras para pausar los anuncios. El valor del campo también se puede establecer en una fecha y hora futuras cercanas para reanudar los anuncios a medida que pasa el tiempo.
monetizationDetails.cuepointSchedule.scheduleStrategy string
Este valor especifica la estrategia que YouTube debe seguir para programar puntos de inserción. Estos son los valores válidos:
  • CONCURRENT: Los puntos de inserción se programan al mismo tiempo para todos los usuarios.
  • NON_CONCURRENT: Los puntos de inserción se programan en diferentes momentos para diferentes usuarios. Este enfoque permite que los anuncios se muestren a una velocidad mayor, lo que permite a los usuarios recibir puntos de inserción cuando son aptos.
monetizationDetails.cuepointSchedule.repeatIntervalSecs unsigned integer
Este valor especifica el intervalo, en segundos, entre la inserción automática de anuncios durante una transmisión. Por ejemplo, si el valor es 300, YouTube puede insertar puntos de inserción de anuncios durante el video en intervalos de cinco minutos.

Ten en cuenta que el valor especifica el tiempo entre el inicio de puntos de inserción sucesivos. Es decir, el intervalo no se mide desde el final de un punto de inserción hasta el inicio del siguiente.