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 de desenvolvedor dos serviços de API
  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 no YouTube usando vídeo ao vivo.
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 contentDetailsdo recursoliveBroadcast. 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 propriedadestatus.streamStatusdo stream vinculado à transmissão éactive. 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 | stringIdentifica o tipo do recurso da API. O valor será youtube#liveBroadcast. | 
| etag | etagA Etag deste recurso. | 
| id | stringO ID que o YouTube atribui para identificar exclusivamente a transmissão. | 
| snippet | objectO objeto snippetcontém detalhes básicos sobre o evento, incluindo título, descrição, horário de início e término. | 
| snippet.publishedAt | datetimeA 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 | stringO ID que o YouTube usa para identificar exclusivamente o canal que está publicando a transmissão. | 
| snippet.title | stringO 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 titledo recurso de vídeo correspondente. | 
| snippet.description | stringA descrição da transmissão. Assim como no title, é possível definir esse campo modificando o recurso de transmissão ou definindo o campodescriptiondo recurso de vídeo correspondente. | 
| snippet.thumbnails | objectUm mapa de imagens de miniatura associadas à transmissão. Para cada objeto aninhado neste objeto, a chave é o nome da imagem da miniatura, e o valor é um objeto que contém outras informações sobre a miniatura. | 
| snippet.thumbnails.(key) | objectOs valores de chave válidos são: 
 | 
| snippet.thumbnails.(key).url | stringO URL da imagem. | 
| snippet.thumbnails.(key).width | unsigned integerA largura da imagem. | 
| snippet.thumbnails.(key).height | unsigned integerA altura da imagem. | 
| snippet.scheduledStartTime | datetimeA 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 Creator Studio 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 valordatetimecorresponde à época Unix zero, e esse valor não pode ser alterado usando a API ou o Creator Studio. | 
| snippet.scheduledEndTime | datetimeA 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 recursoliveBroadcastnã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 | datetimeA data e a hora em que a transmissão começou. Essas informações só ficam disponíveis quando o estado da transmissão é live. O valor é especificado no formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). | 
| snippet.actualEndTime | datetimeA data e a hora em que a transmissão realmente terminou. Essas informações só ficam disponíveis 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.listeliveBroadcasts.listpara identificar esses recursos.Quando um canal começa a transmitir 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 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 o término da transmissão, e o tempo de espera está relacionado à duração real da transmissão. | 
| snippet.liveChatId | stringO ID do chat ao vivo do YouTube da transmissão. Com esse ID, você pode usar os métodos do recurso liveChatMessagepara recuperar, inserir ou excluir mensagens de chat. Também é possível adicionar ou remover moderadores, impedir que usuários participem de chats ao vivo ou remover banimentos. | 
| status | objectO objeto statuscontém informações sobre o status do evento. | 
| status.lifeCycleStatus | stringO status da transmissão. O status pode ser atualizado usando o método liveBroadcasts.transitionda API.Os valores válidos para essa propriedade são: 
 | 
| status.privacyStatus | stringO status de privacidade da transmissão. A transmissão representa exatamente um vídeo do YouTube, então as configurações de privacidade são idênticas às usadas para vídeos. Além disso, é possível definir esse campo modificando o recurso de transmissão ou definindo o campo privacyStatusdo recurso de vídeo correspondente.Os valores válidos para essa propriedade são: 
 | 
| status.recordingStatus | stringO status de gravação da transmissão. Os valores válidos para essa propriedade são: 
 | 
| status.madeForKids | booleanEsse valor indica se a transmissão é destinada a crianças. O valor dessa propriedade é somente leitura. | 
| status.selfDeclaredMadeForKids | booleanEm 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çãoliveBroadcasts.list, o valor da propriedade só é retornado se o proprietário do canal tiver autorizado a solicitação
        da API. | 
| contentDetails | objectO objeto contentDetailscontém informações sobre o conteúdo de vídeo do evento, como se ele pode ser mostrado em um player de vídeo incorporado ou se será arquivado e, portanto, disponível para visualização após o evento. | 
| contentDetails.boundStreamId | stringEsse valor identifica exclusivamente o live streamvinculado à transmissão. | 
| contentDetails.boundStreamLastUpdateTimeMs | datetimeA data e a hora em que a transmissão ao vivo referenciada por boundStreamIdfoi atualizada pela última vez. | 
| contentDetails.monitorStream | objectO objeto monitorStreamconté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 | booleanEsse valor determina se o stream de monitoramento está ativado para a transmissão. Se a transmissão de monitoramento estiver ativada, o YouTube vai transmitir o conteúdo do evento em uma transmissão especial destinada apenas ao usuário que está transmitindo. 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 truese você quiser ter um estágiotestingpara a transmissão ou se quiser atrasar a transmissão do evento. Além disso, se o valor dessa propriedade fortrue, você precisará fazer a transição da transmissão para o estadotestingantes de fazer a transição para o estadolive. Se o valor da propriedade forfalse, a transmissão não poderá ter uma fasetesting. Assim, você poderá fazer a transição diretamente para o estadolive.Quando você update a broadcast, essa propriedade precisa ser definida se a solicitação de API incluir a partecontentDetailsno valor do parâmetropart. No entanto, quando vocêinsert a broadcast, a propriedade é opcional e tem um valor padrão detrue.Importante:não é possível atualizar essa propriedade quando a transmissão está no estado testingoulive. | 
| contentDetails.monitorStream.broadcastStreamDelayMs | unsigned integerSe você definiu a propriedade enableMonitorStreamcomotrue, 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 partecontentDetailsno valor do parâmetropart. No entanto, quando vocêinsert a broadcast, a propriedade é opcional e tem um valor padrão de0. 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 estadotestingoulive. | 
| contentDetails.monitorStream.embedHtml | stringCódigo HTML que incorpora um player que reproduz o stream do monitor. | 
| contentDetails.enableEmbed | booleanEssa 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.Quando você update a broadcast, essa propriedade precisa ser definida se a solicitação de API incluir a partecontentDetailsno valor do parâmetropart. No entanto, quando vocêinsert a broadcast, a propriedade é opcional e tem um valor padrão detrue.Observação:não é possível atualizar essa propriedade quando a transmissão está no estado testingoulive. | 
| contentDetails.enableDvr | booleanEssa 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 dessa propriedade é true.Quando você update a broadcast, essa propriedade precisa ser definida se a solicitação de API incluir a partecontentDetailsno valor do parâmetropart. No entanto, quando vocêinsert a broadcast, a propriedade é opcional e tem um valor padrão detrue.Importante:defina o valor como truee também defina o valor da propriedadeenableArchivecomotruese 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 estadotestingoulive. | 
| contentDetails.recordFromStart | booleanEssa 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 comofalsese 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 recordFromStartdefinida comofalse, a API vai retornar um erroForbidden. Além disso, se o canal não tiver essa permissão e você tentar atualizar uma transmissão para definir a propriedaderecordFromStartcomofalse, a API vai retornar um erromodificationNotAllowed.Quando você update a broadcast, essa propriedade precisa ser definida se a solicitação de API incluir a partecontentDetailsno valor do parâmetropart. No entanto, quando vocêinsert a broadcast, a propriedade é opcional e tem um valor padrão detrue.Importante:também é necessário definir o valor da propriedade enableDvrcomotruese você quiser que a reprodução fique disponível imediatamente após o término da transmissão. Se você definir o valor dessa propriedade comotrue, mas não definir a propriedadeenableDvrcomotrue, pode haver um atraso de cerca de um dia até que o vídeo arquivado fique disponível para reprodução.Observação:não é possível atualizar essa propriedade quando a transmissão está no estado testingoulive. | 
| contentDetails.enableClosedCaptions | booleanO 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á estão usando essa propriedade: 
 | 
| contentDetails.closedCaptionsType | stringObservaçã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: 
 | 
| contentDetails.projection | stringO formato de projeção dessa transmissão. O valor padrão da propriedade é rectangular.Os valores válidos para essa propriedade são: 
 | 
| contentDetails.enableLowLatency | booleanIndica 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 | stringIndica qual configuração de latência usar para essa transmissão. Essa propriedade pode ser usada em vez de enableLowLatency, que não oferece suporte aultraLow.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 fluidez da reprodução. Um stream de latência ultrabaixa reduz ainda mais o tempo que o vídeo leva para ficar visível para os espectadores, facilitando a interação com eles, mas não oferece suporte a legendas descritivas ou resoluções superiores a 1080p. Os valores válidos para essa propriedade são: 
 | 
| contentDetails.enableAutoStart | booleanIndica se essa transmissão precisa ser iniciada automaticamente quando você começa a transmitir vídeo no live streamvinculado. | 
| contentDetails.enableAutoStop | booleanIndica 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 | objectO objeto statisticsconté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 ela está ao vivo. | 
| statistics.totalChatCount | unsigned longO 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 vai especificar um valor após o término da transmissão. Portanto, 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 | objectO objeto monetizationDetailsconté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 | objectO objeto cuepointScheduleespecifica as configurações de automação de anúncios para a
        transmissão. | 
| monetizationDetails.cuepointSchedule.enabled | booleanEsse 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 objetomonetizationDetails.cuepointSchedule. | 
| monetizationDetails.cuepointSchedule.pauseAdsUntil | datetimeEsse valor especifica que o YouTube não deve inserir anúncios intermediários 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 | stringEsse valor especifica a estratégia que o YouTube precisa seguir para programar os pontos de referência. Os valores válidos são: 
 | 
| monetizationDetails.cuepointSchedule.repeatIntervalSecs | unsigned integerEsse 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 pontos de inserção de anúncios intermediários em intervalos de cinco minutos.O valor especifica o tempo entre o início de cuepoints sucessivos. Ou seja, o intervalo não é medido do fim de um ponto de inserção até o início do próximo. |