Rastreamento de reprodução

Com o Media CDN, você pode usar a infraestrutura de geração de registros extensa do Google e a entrega de registros de baixa latência para associar registros por solicitação a um único evento de reprodução. Isso ajuda a entender como o tráfego foi encaminhado (local de borda, condições de rede, seleção de origem e erros) durante a reprodução.

Isso é feito da seguinte maneira:

  • Permite fornecer um ID de reprodução gerado pelo cliente em várias solicitações.
  • Integração com o Cloud Logging para consultar entre as execuções e solicitações individuais.
  • Exportar e consultar com o BigQuery ou com a plataforma que você preferir. A análise de dados dimensionada permite analisar latências agregadas e formatos veiculados ao longo da reprodução.

Combinado com o registro quase em tempo real, o rastreamento de reprodução permite correlacionar sessões de reprodução e a qualidade geral da experiência por local, transmissão ou rede do cliente e agir rapidamente em caso de problemas.

Rastrear uma reprodução

Para associar várias solicitações a uma sessão de reprodução voltada ao usuário, gerencie um ID para essa reprodução no cliente. O rastreamento de reprodução funciona incluindo o valor de um cabeçalho ou parâmetro de consulta em todos os registros de solicitação associados.

Players como o Shaka, ExoPlayer e o AVPlayer da Apple permitem que você conecte eventos de início de reprodução e anexe parâmetros de consulta e cabeçalhos HTTP a solicitações feitas para essa fonte de mídia de streaming.

Os parâmetros de cabeçalho e de consulta são definidos da seguinte maneira:

  • Um cabeçalho de solicitação HTTP: Playback-Trace-ID
  • Um parâmetro de consulta do URL: playback-trace-id=

O cabeçalho HTTP é usado em vez do parâmetro de consulta, se ambos existirem em uma solicitação.

  • O ID de reprodução não pode ter menos de 12 bytes (96 bits), não pode ser maior que 32 bytes (256 bits) e precisa ser gerado de uma fonte aleatória.
  • Os IDs de reprodução com menos de 12 bytes não são registrados. Isso evita colisões.
  • Os IDs de reprodução com mais de 32 bytes são truncados nos primeiros 32 bytes.

Os IDs de reprodução precisam ser exclusivos durante um período de sete dias. Após o período de sete dias, quando os IDs de reprodução forem reutilizados ou colidirem, cada conjunto de solicitações será tratado como uma reprodução separada.

Exemplo: gerar um ID de reprodução no Shaka Player

Para aproveitar o rastreamento de reprodução em grande escala, cada reprodução de vídeo do usuário precisa incluir um ID de reprodução para todas as solicitações feitas para segmentos (e, opcionalmente, manifestos). Esse ID de reprodução precisa ser o mesmo para todas as solicitações em uma reprodução para acumular estatísticas agregadas.

No exemplo a seguir:

  • Gera um ID de reprodução ao carregar o vídeo.
  • Só é enviado em buscas de segmentos, não em manifestos.

Se você quiser usar um ID de reprodução atual, como um fornecido pelo seu sistema de gerenciamento de conteúdo e pela análise do lado do cliente, preencha playbackSessionId com esse valor.

let playbackSessionId;

player.addEventListener('loading', () => {
  const randomBuffer = crypto.getRandomValues(new Uint8Array(16));
  playbackSessionId = shaka.util.Uint8ArrayUtils.toBase64(randomBuffer);
});

player.getNetworkingEngine().registerRequestFilter((type, request) => {
  // Remove this "type" check if you want the header on every request.
  // Alternately, you can check the request.uris array to send the
  // header to some servers and not others.
  if (type == shaka.net.NetworkingEngine.RequestType.SEGMENT) {
    request.headers['CPN'] = playbackSessionId;
  }
});