Visão geral da API Meet Media

A API Google Meet Media permite acessar mídia em tempo real de conferências do Google Meet. Isso possibilita vários casos de uso, como apps que documentam itens de ação, oferecem insights em tempo real sobre a reunião atual ou transmitem áudio e vídeo para uma nova superfície.

Casos de uso

Os apps registrados no console do Google Cloud podem usar a API Meet Media para se conectar a conferências do Meet, permitindo que eles:

  • Consumam streams de vídeo.
  • Consumam streams de áudio.
  • Consumam metadados de participantes.

Ciclo de vida da API Meet Media

As imagens a seguir mostram o ciclo de vida da API Meet Media:

  • O bot da API Meet Media tenta entrar no site de terceiros.
    Figura 1. O bot da API Meet Media tenta participar do site de terceiros. A conexão é rejeitada quando há contas de menores de idade.
  • Reuniões criptografadas e com marca-d'água.
    Figura 2. As reuniões podem ser marcadas como criptografadas e ter uma marca d'água. A API Meet Media não pode ser conectada quando uma reunião tem criptografia ou uma marca d'água.
  • Verifique se a configuração de administrador está correta.
    Figura 3. Verifique se a configuração do administrador está correta.
  • Configure a reunião no Google Agenda.
    Figura 4. Configure a reunião no Google Agenda. O organizador precisa conceder permissão ao app de terceiros na configuração do Agenda. Caso contrário, a conexão será rejeitada.
  • Mudança de configuração durante a chamada.
    Figura 5. Uma mudança de configuração durante a chamada. Se o organizador decidir desativar a configuração da API Meet Media durante uma chamada, a conexão será interrompida.
  • O iniciador precisa estar presente durante as reuniões com o consumidor.
    Figura 6. Se o proprietário da reunião tiver uma conta de consumidor (uma conta que termina em @gmail.com), o iniciador precisará estar presente para que a reunião conceda consentimento. Caso contrário, a conexão será rejeitada.
  • Conexão estabelecida.
    Figura 7. Depois que a conexão for estabelecida, o organizador, o coorganizador ou qualquer participante da mesma organização que o organizador verá a caixa de diálogo de inicialização.
  • Qualquer pessoa pode interromper a API Meet Media durante a chamada.
    Figura 8. Qualquer pessoa pode interromper a API Meet Media durante a chamada.

Requisitos do consentidor

Os apps da API Meet Media só são permitidos em uma reunião se houver alguém em a chamada que possa dar consentimento em nome da reunião.

Para reuniões do Google Workspace

Para dar consentimento em reuniões do Google Workspace, você precisa estar na organização proprietária da reunião. Na maioria dos casos, o proprietário da reunião é o mesmo que o organizador. Se o organizador ou o iniciador estiver na reunião e estiver na organização proprietária da reunião, a caixa de diálogo de início será mostrada preferencialmente.

Para reuniões de consumidores

Para reuniões organizadas por contas do Gmail, o iniciador precisa estar na reunião para dar consentimento.

Termos comuns

Número do projeto do Cloud
Um identificador int64 imutável gerado para um projeto do Google Cloud. Esses valores são gerados pelo console do Google Cloud para cada app registrado.
Conferência
Uma instância de uma chamada gerada pelo servidor em um espaço de reunião. Os usuários normalmente consideram esse cenário uma única reunião.
Canal de dados de recursos de conferência

Em vez de solicitar recursos por HTTP, como na API REST do Google Meet, os clientes da API Meet Media solicitam recursos do servidor por canais de dados.

Um canal de dados dedicado pode ser aberto para cada tipo de recurso. Depois de aberto, o cliente pode enviar solicitações pelo canal. As atualizações de recursos serão transmitidas pelo mesmo canal.

Fonte de contribuição (CSRC)

Com streams de mídia virtuais, não é possível presumir que um stream de mídia sempre aponta para o mesmo participante. O valor CSRC no cabeçalho de cada pacote RTP identifica a verdadeira origem do pacote.

O Meet atribui a cada participante de uma conferência um valor CSRC exclusivo quando ele participa. Esse valor permanece constante até que ele saia.

Canais de dados

Os canais de dados do WebRTC permitem a troca de dados arbitrários (texto, arquivos etc.) independentemente dos streams de áudio e vídeo. Os canais de dados usam a mesma conexão que os streams de mídia, oferecendo uma maneira eficiente de adicionar troca de dados a aplicativos WebRTC.

Estabelecimento de conectividade interativa (ICE, na sigla em inglês)

Um protocolo para estabelecer conectividade, encontrar todas as rotas possíveis para que dois computadores se comuniquem por meio de redes ponto a ponto (P2P) e garantir que você permaneça conectado.

Stream de mídia

Um stream de mídia do WebRTC representa um fluxo de dados de mídia, normalmente áudio ou vídeo, capturado de um dispositivo como uma câmera ou um microfone. Ele consiste em uma ou várias faixas de stream de mídia, cada uma representando uma única fonte de mídia, como uma faixa de vídeo ou uma faixa de áudio.

Faixa de stream de mídia

Consiste em um fluxo unidirecional de pacotes RTP. Uma faixa de stream de mídia pode ser de áudio ou vídeo, mas não ambas. Uma conexão Secure Real-time Transport Protocol (SRTP) bidirecional normalmente consiste em duas faixas de stream de mídia, saída do par local para o remoto e entrada do par remoto para o local.

Espaço para reuniões

Um lugar virtual ou um objeto persistente (como uma sala de reunião) onde uma conferência é realizada. Apenas uma conferência ativa pode ser realizada em um espaço por vez. Um espaço para reuniões também ajuda os usuários a se encontrar e encontrar recursos compartilhados.

Participante

Uma pessoa que participa de uma conferência ou que usa o modo companion, assistindo como espectador, ou um dispositivo de sala conectado a uma chamada. Quando um participante entra na conferência, um ID exclusivo é atribuído.

Streams relevantes

Há um limite para o número de streams de áudio virtuais e streams de vídeo virtuais que um cliente pode abrir.

É bem possível que o número de participantes em uma conferência exceda esse número. Nessas situações, os servidores do Meet transmitem os streams de áudio e vídeo dos participantes considerados "mais relevantes". A relevância é determinada por várias características, como o compartilhamento de tela e a frequência com que um participante falou.

Unidade de encaminhamento seletivo (SFU)

Uma unidade de encaminhamento seletivo (SFU) é um componente do lado do servidor em conferências WebRTC que gerencia a distribuição de streams de mídia. Os participantes se conectam apenas à SFU, que encaminha seletivamente streams relevantes para outros participantes. Isso reduz o processamento do cliente e as necessidades de largura de banda, permitindo conferências escalonáveis.

Protocolo de descrição de sessões (SDP, na sigla em inglês)

O mecanismo de sinalização que o WebRTC usa para negociar uma conexão P2P. RFC 8866 rege-o.

Resposta do SDP

A resposta a uma oferta de SDP. A resposta rejeita ou aceita todos os streams recebidos do par remoto. Ele também negocia quais streams planeja transmitir de volta ao par de ofertas. É importante observar que a resposta do SDP não pode adicionar streams sinalizados da oferta inicial. Por exemplo, se um par de ofertas sinalizar que aceita até três streams de áudio do par remoto, esse par remoto não poderá sinalizar quatro streams de áudio para transmissão.

Oferta de SDP

O SDP inicial no fluxo de negociação ponto a ponto de oferta e resposta. A oferta é criada pelo par de inicialização e dita os termos da sessão ponto a ponto. A oferta é sempre criada pelo cliente da API Meet Media e enviada aos servidores do Meet.

Por exemplo, uma oferta pode indicar o número de streams de áudio ou vídeo que o ofertante está enviando (ou capaz de receber) e se os canais de dados serão abertos.

Fonte de sincronização (SSRC)

Um SSRC é um identificador de 32 bits que identifica exclusivamente uma única fonte de um stream de mídia em uma sessão RTP (Real-time Transport Protocol). No WebRTC, os SSRCs são usados para distinguir entre diferentes streams de mídia originários de participantes diferentes ou até mesmo faixas diferentes do mesmo participante (como câmeras diferentes).

RtpTransceiver

Conforme detalhado em RFC 8829, um transceptor é uma abstração em torno de streams RTP em uma sessão ponto a ponto.

Um único transceptor é mapeado e descrito por uma única descrição de mídia no SDP. Um transceptor consiste em um RtpSender e um RtpReceiver.

Como o RTP é bidirecional, cada par tem a própria instância de transceptor para a mesma conexão RTP. O RtpSender de um determinado transceptor para o par local é mapeado para o RtpReceiver de um transceptor específico no par remoto. O inverso também é verdadeiro. O RtpSender do mesmo transceptor do par remoto é mapeado para o RtpReceiver do par local.

Cada descrição de mídia tem o próprio transceptor dedicado. Portanto, uma sessão ponto a ponto com vários streams RTP tem vários transceptores com vários RtpSenders e RtpReceivers para cada par.

Streams de mídia virtuais

Os streams de mídia virtuais são streams de mídia agregados gerados por uma unidade de encaminhamento seletivo (SFU) em conferências WebRTC. Em vez de cada participante enviar streams individuais para todos os outros, a SFU multiplexa streams de participantes selecionados em menos streams virtuais de saída. Isso simplifica a topologia de conexão e reduz a carga nos participantes, permitindo conferências escalonáveis. Cada stream virtual pode conter mídia de vários participantes, gerenciada dinamicamente pela SFU.