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 recursoliveBroadcast
. 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 propiedadstatus.streamStatus
de la transmisión vinculada a tu transmisión seaactive
. 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:
|
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:
|
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:
|
status.recordingStatus |
string El estado de grabación de la transmisión. Los valores válidos para esta propiedad son los siguientes:
|
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:
|
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:
|
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:
|
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
|
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:
|
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. |