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. El 10 de enero de 2020, también se actualizaron las Condiciones del Servicio y las Políticas para Desarrolladores de los Servicios de la API de YouTube. Para obtener más información, consulta los historiales de revisión 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 un video en vivo en YouTube.

Métodos

La API admite los siguientes métodos para los recursos liveBroadcasts:

list
Muestra 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.
actualizar
Actualiza una transmisión. Por ejemplo, puedes modificar la configuración de emisió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 por Internet, aunque una transmisión de video por Internet puede estar vinculada a más de una transmisión. Pruébala ahora.
transition
Cambia el estado de una transmisión en vivo de YouTube e inicia cualquier proceso asociado con el estado nuevo. Por ejemplo, cuando cambias el estado de una transmisión a testing, YouTube comienza a transmitir video a la transmisión continua de monitor de esa transmisión. Antes de llamar a este método, debes confirmar que el valor de la propiedad status.streamStatus de 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. El punto de inserción puede activar 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
La Etag de este recurso.
id string
Es el ID que YouTube asigna para identificar de forma única la transmisión.
snippet object
El 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 datetime
Es la fecha y la 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 string
Es el ID que YouTube usa para identificar de forma exclusiva el canal que publica la transmisión.
snippet.title string
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 string
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
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) object
Los valores de 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
La URL de la imagen.
snippet.thumbnails.(key).width unsigned integer
El ancho de la imagen.
snippet.thumbnails.(key).height unsigned integer
La altura de la imagen.
snippet.scheduledStartTime datetime
Es la fecha y la hora en que está programada el inicio de la transmisión. El valor se especifica en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). Creator Studio 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 empieza a transmitir. Para estas transmisiones, el valor de datetime corresponde al tiempo cero de UNIX y este valor no se puede cambiar a través de la API ni en Creator Studio.
snippet.scheduledEndTime datetime
Fecha y hora en que está programada 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 programa para continuar indefinidamente. Del mismo modo, si no especificas un valor para esta propiedad, YouTube tratará la transmisión como si continuara indefinidamente.
snippet.actualStartTime datetime
Fecha y hora en que comenzó realmente 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. A partir de 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 se habilita para la transmisión en vivo, YouTube crea una transmisión predeterminada y una transmisión predeterminada para el canal. La transmisión define la forma en que 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 video a la transmisión predeterminada, el video aparece en la transmisión predeterminada del canal. Cuando finaliza la transmisión, YouTube convierte la transmisión completa en un video de YouTube y le asigna al video un ID de video de YouTube.

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 del retraso se relaciona con la duración real de la transmisión.
snippet.liveChatId string
Es el ID del chat en vivo de la transmisión en YouTube. 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, bloquear a usuarios para que no participen en los chats en vivo o quitar los bloqueos existentes.
status object
El objeto status contiene información sobre el estado del evento.
status.lifeCycleStatus string
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: finaliza la transmisión.
  • created: la transmisión tiene una configuración incompleta, por lo que no está lista para pasar 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: se completa la configuración de la transmisión y la transmisión puede pasar a un estado live o testing.
  • revoked: una acción del administrador quitó esta transmisión.
  • 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
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 admitida 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
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á designada como dirigida a niños. Este valor de propiedad es de solo lectura.
status.selfDeclaredMadeForKids boolean
En una solicitud liveBroadcasts.insert, esta propiedad permite que el propietario del canal designe 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, por ejemplo, si el contenido se puede mostrar en un reproductor de video incorporado o si se archivará y, por lo tanto, estará disponible para su visualización una vez que finalice el evento.
contentDetails.boundStreamId string
Este valor identifica de forma única el live stream vinculado a la transmisión.
contentDetails.boundStreamLastUpdateTimeMs datetime
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 continua de monitor, que la emisora puede usar para revisar el contenido del evento antes de que la transmisión se muestre públicamente.
contentDetails.monitorStream.enableMonitorStream boolean
Este valor determina si la transmisión continua de monitor está habilitada para la transmisión. Si la transmisión continua de monitor está habilitada, YouTube transmitirá el contenido del evento en una transmisión especial destinada únicamente al consumo de la emisora. Quien transmite puede usar la transmisión para revisar el contenido del evento e identificar los momentos óptimos en los que se deben insertar puntos de inserción.

Debes establecer este valor en true si quieres tener un escenario testing para tu transmisión o si quieres tener una demora en la transmisión del evento. Además, si el valor de esta propiedad es true, debes cambiar tu transmisión al estado testing antes de poder pasarla al estado live. (Si el valor de la propiedad es false, la transmisión no puede tener una etapa testing, por lo que puedes hacer la transición directamente al estado live).

Cuando usas update a broadcast, se debe configurar esta propiedad 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 tiene el estado testing o live.
contentDetails.monitorStream.broadcastStreamDelayMs unsigned integer
Si estableciste la propiedad enableMonitorStream en true, esta propiedad determina la duración de la demora de la transmisión en vivo.

Cuando usas update a broadcast, se debe configurar esta propiedad 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 un retraso de 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 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), esta configuración también se aplicará al video archivado.

Cuando usas update a broadcast, se debe configurar esta propiedad 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 tiene 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 que el usuario controle la experiencia de reproducción de video al pausar, retroceder o adelantar el contenido. El valor predeterminado de esta propiedad es true.

Cuando usas update a broadcast, se debe configurar esta propiedad 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 el valor de la propiedad enableArchive en true si quieres 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 tiene 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 emisión tiene permiso para inhabilitar las grabaciones de 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 y tratas de actualizar una transmisión para establecer la propiedad recordFromStart en false, la API mostrará un error modificationNotAllowed.

Cuando usas update a broadcast, se debe configurar esta propiedad 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 quieres que la reproducción esté disponible inmediatamente después de que finalice la transmisión. Si configuras el valor de esta propiedad en true, pero no también estableces la propiedad enableDvr en true, es posible que haya una demora de alrededor de un día hasta que el video archivado esté disponible para reproducirse.

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

Esta configuración indica si los subtítulos HTTP POST están habilitados para esta transmisión. Para los clientes de la 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 a la propiedad contentDetails.enableClosedCaptions.

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 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 por Internet 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 debe codificarse para una transmisión de latencia baja. Una transmisión con baja latencia puede reducir el tiempo que tarda un video en estar 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 se usará en esta transmisión. Se puede usar esta propiedad en lugar de enableLowLatency, que no admite ultraLow.

Una transmisión de latencia baja puede reducir el tiempo que tarda un video en estar 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 estar visible para los usuarios, lo que facilita la interacción con los usuarios, pero los valores de latencia ultrabaja no son compatibles con
    80p.

  • normal
  • low
  • ultraLow
contentDetails.enableAutoStart boolean
Indica si esta transmisión debe comenzar automáticamente cuando empiezas 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 deje 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 la transmisión está en vivo.
statistics.totalChatCount unsigned long
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 una vez 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 se activó el automatizador de anuncios o si se retrasó 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. La programación 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 el video en la transmisión hasta la fecha y hora especificadas. El valor se especifica en formato ISO 8601 (AAAA-MM-DDThh:mm:ss.sZ). El valor se debe establecer en una fecha y hora futura para detener los anuncios; el valor del campo también se puede establecer en una fecha y hora futura cercana para reanudar los anuncios cuando pase el tiempo.
monetizationDetails.cuepointSchedule.scheduleStrategy string
Este valor especifica la estrategia que YouTube debe seguir para programar los puntos de inserción. Los valores válidos son los siguientes:
  • CONCURRENT: Los puntos de inserción se programan a la misma hora para todos los usuarios.
  • NON_CONCURRENT: Los puntos de inserción se programan en momentos diferentes para distintos usuarios. Con este enfoque, los anuncios se muestran a una frecuencia mayor, lo que permite que los usuarios reciban puntos de inserción cuando sean 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 los 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.