LiveBroadcasts

Agora a API oferece suporte para marcar suas transmissões ao vivo como "Conteúdo para crianças", e o recurso liveBroadcast agora contém uma propriedade que identifica o status "Conteúdo para crianças" dessa transmissão ao vivo. Os Termos de Serviço e as políticas para desenvolvedores das APIs do YouTube também foram atualizados em 10 de janeiro de 2020. Para mais informações, consulte os históricos de revisão do serviço da API YouTube Live Streaming e os Termos de Serviço dos serviços de API do YouTube.

Um recurso liveBroadcast representa um evento que será transmitido por vídeo ao vivo no YouTube.

Métodos

A API oferece suporte aos seguintes métodos para recursos liveBroadcasts:

list
Retorna uma lista de transmissões do YouTube que correspondem aos parâmetros de solicitação da API. Faça um teste agora.
inserir
Cria uma transmissão. Faça um teste agora.
update
Atualiza uma transmissão. Por exemplo, você pode modificar as configurações de transmissão definidas no objeto contentDetails do recurso liveBroadcast. Teste agora.
delete
Exclui uma transmissão. Faça um teste agora.
vincular
Vincula uma transmissão do YouTube a um stream ou remove uma vinculação existente entre uma transmissão e um stream. Uma transmissão só pode ser vinculada a um stream de vídeo, mas um stream de vídeo pode ser vinculado a mais de uma transmissão. Faça um teste agora.
transition
Altera o status de uma transmissão ao vivo do YouTube e inicia todos os processos associados ao novo status. Por exemplo, quando você muda o status de uma transmissão para testing, o YouTube começa a transmitir o vídeo para o stream de monitoramento dessa transmissão. Antes de chamar esse método, confirme se o valor da propriedade status.streamStatus para o stream vinculado à sua transmissão é active. Faça um teste agora.
cuepoint (link em inglês)
Insere um ponto de referência em uma transmissão ao vivo. O ponto de referência pode acionar um intervalo de anúncio.

Representação de recurso

A estrutura JSON a seguir mostra o formato de um 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,
      }
    }
  }
}

Propriedades

A tabela a seguir define as propriedades que aparecem neste recurso:

Propriedades
kind string
Identifica o tipo de recurso da API. O valor será youtube#liveBroadcast.
etag etag
A Etag deste recurso.
id string
O ID que o YouTube atribui para identificar exclusivamente a transmissão.
snippet object
O objeto snippet contém detalhes básicos sobre o evento, incluindo título, descrição, hora de início e de término.
snippet.publishedAt datetime
A data e a hora em que a transmissão foi adicionada à programação de transmissões ao vivo do YouTube. O valor é especificado no formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ).
snippet.channelId string
O ID que o YouTube usa para identificar exclusivamente o canal que está publicando a transmissão.
snippet.title string
O título da transmissão. A transmissão representa exatamente um vídeo do YouTube. Para definir esse campo, modifique o recurso de transmissão ou defina o campo title do recurso de vídeo correspondente.
snippet.description string
A descrição da transmissão. Assim como no title, é possível definir esse campo modificando o recurso de transmissão ou definindo o campo description do recurso de vídeo correspondente.
snippet.thumbnails object
Um mapa das imagens em miniatura associadas à transmissão. Para cada objeto aninhado nesse objeto, a chave é o nome da imagem em miniatura, e o valor é um objeto que contém outras informações sobre a miniatura.
snippet.thumbnails.(key) object
Os valores de chave válidos são:
  • default: a imagem de miniatura padrão. A miniatura padrão para um vídeo ou um recurso que se refere a um vídeo, como um item da playlist ou o resultado da pesquisa, tem 120 px de largura e 90px de altura. A miniatura padrão de um canal tem 88 px de largura e 88 px de altura.
  • medium: uma versão da imagem em miniatura com resolução mais alta. Para um vídeo (ou um recurso que se refira a um vídeo), esta imagem tem 320 px de largura e 180 px de altura. Para um canal, esta imagem tem 240 px de largura e 240 px de altura.
  • high: uma versão em alta resolução da imagem da miniatura. Para um vídeo (ou um recurso que se refira a um vídeo), esta imagem tem 480 px de largura e 360 px de altura. Para um canal, esta imagem tem 800 px de largura e 800 px de altura.
snippet.thumbnails.(key).url string
O URL da imagem.
snippet.thumbnails.(key).width unsigned integer
A largura da imagem.
snippet.thumbnails.(key).height unsigned integer
A altura da imagem.
snippet.scheduledStartTime datetime
A data e a hora em que a transmissão está programada para começar. O valor é especificado no formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). O Estúdio de Criação permite criar uma transmissão sem programar um horário de início. Nesse caso, a transmissão começa quando o proprietário do canal começa a transmitir. Para essas transmissões, o valor datetime corresponde ao horário UNIX zero e não pode ser alterado pela API ou no Creator Studio.
snippet.scheduledEndTime datetime
A data e a hora em que a transmissão está programada para terminar. O valor é especificado no formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). Se um recurso liveBroadcast não especificar um valor para essa propriedade, a transmissão será programada para continuar indefinidamente. Da mesma forma, se você não especificar um valor para essa propriedade, o YouTube vai tratar a transmissão como se ela fosse durar indefinidamente.
snippet.actualStartTime datetime
A data e a hora em que a transmissão começou. Essa informação só fica disponível quando o estado da transmissão é live. O valor é especificado no formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ).
snippet.actualEndTime datetime
A data e a hora em que a transmissão realmente terminou. Essa informação só fica disponível quando o estado da transmissão é complete. O valor é especificado no formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ).
snippet.isDefaultBroadcast boolean
O uso dessa propriedade será suspenso em 1º de setembro de 2020 ou em uma data posterior. Nesse momento, o YouTube vai parar de criar uma transmissão e uma transmissão por padrão quando um canal for ativado para transmissões ao vivo. Consulte o aviso de descontinuação para mais detalhes.
Essa propriedade indica se a transmissão é padrão.

Como funcionam as transmissões padrão

Quando um canal do YouTube é ativado para transmissões ao vivo, o YouTube cria uma transmissão e uma transmissão padrão para o canal. O stream define como o proprietário do canal envia vídeos ao vivo para o YouTube, e a transmissão é como os espectadores podem assistir o stream padrão. O proprietário de um canal pode usar os métodos liveStreams.list e liveBroadcasts.list para identificar esses recursos.

Quando um canal começa a fazer streaming de vídeo para o stream padrão, o vídeo fica visível na transmissão padrão do canal. Quando a transmissão termina, o YouTube converte a transmissão concluída em um vídeo e atribui um ID a ele.

Depois que a conversão é concluída, o vídeo é incluído na lista de vídeos enviados do canal. O vídeo não fica disponível imediatamente após a transmissão, e o tempo de espera está relacionado à duração real da transmissão.
snippet.liveChatId string
O ID do chat ao vivo do YouTube da transmissão. Com esse ID, você pode usar os métodos do recurso liveChatMessage para recuperar, inserir ou excluir mensagens de chat. Também é possível adicionar ou remover moderadores, proibir usuários de participar de chats ao vivo ou remover banimentos existentes.
status object
O objeto status contém informações sobre o status do evento.
status.lifeCycleStatus string
O status da transmissão. O status pode ser atualizado usando o método liveBroadcasts.transition da API.

Os valores válidos para essa propriedade são:
  • complete: a transmissão foi concluída.
  • created: a transmissão tem configurações incompletas, portanto, não está pronta para a transição para um status live ou testing, mas foi criada e é válida.
  • live: a transmissão está ativa.
  • liveStarting: a transmissão está em processo de transição para o status live.
  • ready: as configurações da transmissão foram concluídas e ela pode fazer a transição para o status live ou testing.
  • revoked – Esta transmissão foi removida por uma ação do administrador.
  • testStarting: a transmissão está em transição para o status testing.
  • testing: a transmissão só fica visível para o parceiro.
status.privacyStatus string
O status de privacidade da transmissão. Observe que a transmissão representa exatamente um vídeo do YouTube, portanto as configurações de privacidade são idênticas às disponíveis para vídeos. Além disso, é possível definir esse campo modificando o recurso de transmissão ou definindo o campo privacyStatus do recurso de vídeo correspondente.

Os valores válidos para essa propriedade são:
  • private
  • public
  • unlisted
status.recordingStatus string
O status de gravação da transmissão.

Os valores válidos para essa propriedade são:
  • notRecording
  • recorded
  • recording
status.madeForKids boolean
Esse valor indica se a transmissão é destinada a crianças. O valor dessa propriedade é somente leitura.
status.selfDeclaredMadeForKids boolean
Em uma solicitação liveBroadcasts.insert, essa propriedade permite que o proprietário do canal designe a transmissão como feita para crianças. Em uma solicitação liveBroadcasts.list, o valor da propriedade só é retornado se o proprietário do canal tiver autorizado a solicitação da API.
contentDetails object
O objeto contentDetails contém informações sobre o conteúdo de vídeo do evento, por exemplo, se o conteúdo pode ser exibido em um player de vídeo incorporado ou se será arquivado e, portanto, estará disponível para visualização após o término do evento.
contentDetails.boundStreamId string
Esse valor identifica exclusivamente o live stream vinculado à transmissão.
contentDetails.boundStreamLastUpdateTimeMs datetime
A data e a hora em que a transmissão ao vivo referenciada por boundStreamId foi atualizada pela última vez.
contentDetails.monitorStream object
O objeto monitorStream contém informações sobre o fluxo de monitoramento, que o transmissor pode usar para analisar o conteúdo do evento antes que o fluxo de transmissão seja mostrado publicamente.
contentDetails.monitorStream.enableMonitorStream boolean
Esse valor determina se o stream de monitoramento está ativado para a transmissão. Se o stream de monitoramento estiver ativado, o YouTube vai transmitir o conteúdo do evento em um stream especial destinado apenas ao consumo do transmissor. O transmissor pode usar o stream para analisar o conteúdo do evento e identificar os momentos ideais para inserir pontos de referência.

Defina esse valor como true se você quiser ter um estágio testing para a transmissão ou se quiser um delay na transmissão do evento. Além disso, se o valor dessa propriedade for true, você precisará fazer a transição da transmissão para o estado testing antes de fazer a transição para o estado live. Se o valor da propriedade for false, a transmissão não poderá ter uma fase testing. Assim, você poderá fazer a transição da transmissão diretamente para o estado live.

Quando você update a broadcast, essa propriedade precisa ser definida se a solicitação de API incluir a parte contentDetails no valor do parâmetro part. No entanto, quando você insert a broadcast, a propriedade é opcional e tem um valor padrão de true.

Importante:essa propriedade não pode ser atualizada quando a transmissão está no estado testing ou live.
contentDetails.monitorStream.broadcastStreamDelayMs unsigned integer
Se você definiu a propriedade enableMonitorStream como true, ela determina a duração do atraso da transmissão ao vivo.

Quando você update a broadcast, essa propriedade precisa ser definida se a solicitação de API incluir a parte contentDetails no valor do parâmetro part. No entanto, quando você insert a broadcast, a propriedade é opcional e tem um valor padrão de 0. Esse valor indica que a transmissão não tem atraso. Observação:essa propriedade não pode ser atualizada quando a transmissão está no estado testing ou live.
contentDetails.monitorStream.embedHtml string
Código HTML que incorpora um player que reproduz o stream do monitor.
contentDetails.enableEmbed boolean
Essa configuração indica se o vídeo da transmissão pode ser reproduzido em um player incorporado. Se você optar por arquivar o vídeo (usando a propriedade enableArchive), essa configuração também será aplicada ao vídeo arquivado.

Ao definir update a broadcast, essa propriedade precisa ser definida se a solicitação de API incluir a parte contentDetails no valor do parâmetro part. No entanto, ao insert a broadcast, a propriedade é opcional e tem um valor padrão de true.

Observação:essa propriedade não pode ser atualizada quando a transmissão está no estado testing ou live.
contentDetails.enableDvr boolean
Essa configuração determina se os espectadores podem acessar os controles do DVR enquanto assistem o vídeo. Os controles de DVR permitem que o espectador controle a experiência de reprodução do vídeo pausando, rebobinando ou avançando o conteúdo. O valor padrão para essa propriedade é true.

Ao definir update a broadcast, essa propriedade precisa ser definida se a solicitação de API incluir a parte contentDetails no valor do parâmetro part. No entanto, quando você insert a broadcast, a propriedade é opcional e tem um valor padrão de true.

Importante:defina o valor como true e também defina o valor da propriedade enableArchive como true se quiser disponibilizar a reprodução imediatamente após o término da transmissão. Além disso, essa propriedade não pode ser atualizada quando a transmissão está no estado testing ou live.
contentDetails.recordFromStart boolean
Essa configuração indica se o YouTube vai começar a gravar a transmissão automaticamente quando o status do evento mudar para "Ao vivo".

O valor padrão dessa propriedade é true, e ela só pode ser definida como false se o canal de transmissão tiver permissão para desativar as gravações de transmissões ao vivo.

Se o canal não tiver permissão para desativar as gravações e você tentar inserir uma transmissão com a propriedade recordFromStart definida como false, a API vai retornar um erro Forbidden. Além disso, se o canal não tiver essa permissão e você tentar atualizar uma transmissão para definir a propriedade recordFromStart como false, a API vai retornar um erro modificationNotAllowed.

Quando você update a broadcast, essa propriedade precisa ser definida se a solicitação de API incluir a parte contentDetails no valor do parâmetro part. No entanto, quando você insert a broadcast, a propriedade é opcional e tem um valor padrão de true.

Importante:também é necessário definir o valor da propriedade enableDvr como true se você quiser que a reprodução fique disponível imediatamente após o término da transmissão. Se você definir o valor desta propriedade como true, mas não definir a propriedade enableDvr como true, poderá haver um atraso de cerca de um dia até que o vídeo arquivado seja disponibilizado para reprodução.

Observação:essa propriedade não pode ser atualizada quando a transmissão está no estado testing ou live.
contentDetails.enableClosedCaptions boolean
O uso dessa propriedade foi suspenso em 17 de dezembro de 2015. Use a propriedade contentDetails.closedCaptionsType.

Essa configuração indica se a legenda descritiva HTTP POST está ativada para essa transmissão. Para clientes de API que já usam essa propriedade:
  • Definir o valor da propriedade como true equivale a configurar a propriedade contentDetails.closedCaptionsType como closedCaptionsHttpPost.
  • Definir o valor da propriedade como false equivale a configurar a propriedade contentDetails.closedCaptionsType como closedCaptionsDisabled.
contentDetails.closedCaptionsType string
Observação: essa propriedade substitui a propriedade contentDetails.enableClosedCaptions.

Essa propriedade indica se as legendas descritivas estão ativadas na sua transmissão e, em caso afirmativo, que tipo de legendas descritivas você está fornecendo:
  • closedCaptionsDisabled: as legendas estão desativadas para a transmissão ao vivo.
  • closedCaptionsHttpPost: você vai enviar legendas, por POST HTTP, para um URL de transferência associado à sua transmissão ao vivo.
  • closedCaptionsEmbedded: as legendas serão codificadas no stream de vídeo usando os formatos EIA-608 e/ou CEA-708.
contentDetails.projection string
O formato de projeção dessa transmissão. O valor padrão da propriedade é rectangular.

Os valores válidos para essa propriedade são:
  • 360
  • rectangular
contentDetails.enableLowLatency boolean
Indica se a transmissão precisa ser codificada para streaming de baixa latência. Um stream de baixa latência pode reduzir o tempo que o vídeo leva para ficar visível para os usuários que assistem uma transmissão, mas também pode afetar a resolução dos espectadores do stream.
contentDetails.latencyPreference string
Indica qual configuração de latência usar para essa transmissão. Esta propriedade pode ser usada em vez de enableLowLatency, que não é compatível com ultraLow.

Um stream de baixa latência pode reduzir o tempo necessário para que um vídeo fique visível para os usuários que assistem uma transmissão. No entanto, isso também pode afetar a suavidade da reprodução.

Um stream de latência ultrabaixa reduz ainda mais o tempo necessário para que o vídeo fique visível para os espectadores, facilitando a interação com os espectadores, mas os valores de latência ultrabaixa não são compatíveis com legendas 0
    ou latência ultrabaixa.

  • normal
  • low
  • ultraLow
contentDetails.enableAutoStart boolean
Indica se essa transmissão precisa ser iniciada automaticamente quando você começa a transmitir vídeo no live stream vinculado.
contentDetails.enableAutoStop boolean
Indica se essa transmissão precisa ser interrompida automaticamente cerca de um minuto depois que o proprietário do canal interromper a transmissão de vídeo na transmissão de vídeo vinculada.
statistics object
O objeto statistics contém estatísticas relacionadas a uma transmissão ao vivo. Os valores dessas estatísticas podem mudar durante a transmissão e só podem ser recuperados enquanto a transmissão estiver ao vivo.
statistics.totalChatCount unsigned long
O número total de mensagens do chat ao vivo associadas à transmissão. A propriedade e o valor dela estão presentes se a transmissão estiver visível para o usuário, tiver o recurso de chat ao vivo ativado e tiver pelo menos uma mensagem. Essa propriedade não especificará um valor após o término da transmissão. Por isso, essa propriedade não identificaria o número de mensagens de chat em um vídeo arquivado de uma transmissão ao vivo concluída.
monetizationDetails object
O objeto monetizationDetails contém informações sobre os detalhes de monetização do stream, como se o automator de anúncios está ativado ou se a inserção de anúncios intermediários está atrasada.

monetizationDetails.cuepointSchedule object
O objeto cuepointSchedule especifica as configurações de automação de anúncios para a transmissão.
monetizationDetails.cuepointSchedule.enabled boolean
Esse valor determina se os anúncios são inseridos automaticamente na transmissão. Se o valor for true, o YouTube vai inserir automaticamente anúncios intermediários na transmissão. A programação para veiculação de anúncios será determinada pelo valor dos outros campos no objeto monetizationDetails.cuepointSchedule.
monetizationDetails.cuepointSchedule.pauseAdsUntil datetime
Esse valor especifica que o YouTube não deve inserir anúncios midroll na transmissão até a data e hora especificadas. O valor é especificado no formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). O valor precisa ser definido como uma data e hora futuras para pausar os anúncios. O valor do campo também pode ser definido como uma data e hora próximas para retomar os anúncios quando o tempo passar.
monetizationDetails.cuepointSchedule.scheduleStrategy string
Esse valor especifica a estratégia que o YouTube precisa seguir para programar os pontos de referência. Os valores válidos são:
  • CONCURRENT: os pontos de gatilho são programados ao mesmo tempo para todos os espectadores
  • NON_CONCURRENT: os pontos de gatilho são programados em horários diferentes para espectadores diferentes. Essa abordagem permite que os anúncios sejam mostrados em uma taxa maior, permitindo que os espectadores recebam pontos de partida quando qualificados.
monetizationDetails.cuepointSchedule.repeatIntervalSecs unsigned integer
Esse valor especifica o intervalo, em segundos, entre a inserção automática de anúncios durante uma transmissão. Por exemplo, se o valor for 300, o YouTube poderá inserir marcadores de anúncios intermediários em intervalos de cinco minutos.

O valor especifica o tempo entre o início de marcadores sucessivos. Ou seja, o intervalo não é medido do final de um marcador até o início do próximo.