Estatísticas sobre a qualidade dos meios de comunicação social

Para ajudá-lo a entender a qualidade da mídia em VoIP e chamadas de vídeo que usam os Serviços de Comunicação do Azure, há um recurso chamado estatísticas de qualidade de mídia. Use-o para examinar as métricas de qualidade de áudio, vídeo e compartilhamento de tela de baixo nível para métricas de chamadas de entrada e saída.

Estatísticas sobre a qualidade dos meios de comunicação social para um convite em curso

Importante

Há uma atualização de interface nas estatísticas de qualidade de mídia no SDK, começando com o SDK versão 1.20.1

As estatísticas de qualidade de mídia são um recurso estendido da API principal Call . Primeiro, você precisa obter o mediaStatsFeature objeto API:

const mediaStatsFeature = call.feature(Features.MediaStats);

Para receber os dados estatísticos dos meios de comunicação social, pode subscrever sampleReported um evento ou summaryReported evento.

sampleReported evento é acionado a cada segundo. É adequado como uma fonte de dados para exibição da interface do usuário ou seu próprio pipeline de dados.

summaryReported contém os valores agregados dos dados em intervalos, o que é útil quando você só precisa de um resumo.

Se você quiser controlar o intervalo do summaryReported evento, você precisa definir mediaStatsCollectorOptions o tipo MediaStatsCollectorOptions. Caso contrário, o SDK usará valores padrão.

const mediaStatsCollectorOptions: SDK.MediaStatsCollectorOptions = {
    aggregationInterval: 10,
    dataPointsPerAggregation: 6
};

const mediaStatsCollector = mediaStatsFeature.createCollector(mediaStatsSubscriptionOptions);

mediaStatsCollector.on('sampleReported', (sample) => {
    console.log('media stats sample', sample);
});

mediaStatsCollector.on('summaryReported', (summary) => {
    console.log('media stats summary', summary);
});

Caso não precise usar o coletor de estatísticas de mídia, você pode chamar dispose o método de mediaStatsCollector.

mediaStatsCollector.dispose();

Não é necessário chamar dispose o método de cada vez que a chamada termina, pois os coletores são recuperados mediaStatsCollector internamente quando a chamada termina.

MediaStatsCollectorOptions

O MediaStatsCollectorOptions é opcional, e há dois campos opcionais em MediaStatsCollectorOptions.

  • aggregationInterval é o intervalo, em segundos, em que as estatísticas são agregadas. O valor predefinido é 10.
  • dataPointsPerAggregation Define quantos pontos de dados cada evento de agregação tem. O valor padrão é 6.

Esses dois valores determinam a frequência com que o SDK emite o evento e o número de pontos de dados agregados summaryReported incluídos no relatório.

O summaryReported evento aumentou a cada aggregationInterval * dataPointsPerAggregation segundo.

Por exemplo, se você definir os seguintes valores:

  • aggregationInterval = 1
  • dataPointsPerAggregation = 60

O summaryReported evento é gerado a cada 60 segundos e contém 60 unidades únicas para cada estatística registrada.

Se você definir os seguintes valores:

  • aggregatinInterval = 60
  • dataPointsPerAggregation = 1

O summaryReported evento é gerado a cada 60 segundos e contém 1 unidade única para cada estatística registrada.

Melhores práticas

Se você quiser coletar os dados para inspeção offline, recomendamos que colete os dados e os envie para a ingestão do pipeline após o término da chamada. Se você transmitir os dados durante uma chamada, ele poderá usar a largura de banda da Internet necessária para continuar uma chamada dos Serviços de Comunicação do Azure (especialmente quando a largura de banda disponível for baixa).

Em qualquer sampleReported evento ou summaryReported evento, os dados de estatísticas de mídia não são apenas um simples mapeamento de chave-valor.

Aqui está a declaração de tipo dos dados de evento relatados por sampleReported evento.

export interface MediaStatsReportSample {
    audio: {
        send: OutgoingAudioMediaStats<number, string>[];
        receive: IncomingAudioMediaStats<number, string>[];
    };
    video: {
        send: OutgoingVideoMediaStats<number, string>[];
        receive: IncomingVideoMediaStats<number, string>[];
    };
    screenShare: {
        send: OutgoingScreenShareMediaStats<number, string>[];
        receive: IncomingScreenShareMediaStats<number, string>[];
    };
    transports: TransportMediaStats<number>[];
}

Os dados do evento fornecem os dados estatísticos para cada fluxo de mídia na chamada, incluindo as direções de envio e recebimento.

É recomendável que você imprima o evento usando o console.log para observar seu layout e alterações de valor, para que você possa encontrar uma maneira adequada de exibir ou processar os dados de acordo com seu cenário de uso.

Métricas de envio de áudio

Nome da métrica Description Comentários
id ID de estatísticas Usado para identificar estatísticas em todos os eventos, especialmente quando há várias estatísticas com o mesmo tipo de mídia e direção em um evento.
codecName Nome do codec OPUS, G722.
bitrate Taxa de bits de envio de áudio (bits por segundo) Os valores gerais estão na faixa de 24 Kbps (36-128 Kbps é típico).
jitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
packets O número total de pacotes enviados.
packetsPerSecond Taxa de pacotes (pacotes por segundo)
packetsLost O número total de pacotes perdidos relatados a partir da extremidade remota.
packetsLostPerSecond Taxa de perda de pacotes (pacotes por segundo) Mais baixo é melhor.
rttInMs Tempo de ida e volta (milissegundos) Mais baixo é melhor. Calculado a partir do relatório do recetor RTCP. Recomendamos um tempo de ida e volta de 200 ms ou menos.
audioInputLevel Nível de volume de áudio do microfone O valor varia de 0 a 65536. Um valor de 0 representa o silêncio.
transportId ID do transporte Usado para associar as estatísticas em transportes.

Métricas de recebimento de áudio

Nas versões do SDK ealier que 1.20.1, jitterBufferDelayInMs existia como jitterBufferInMs.

Nome da métrica Description Comentários
id ID de estatísticas Usado para identificar estatísticas em todos os eventos, especialmente quando há várias estatísticas com o mesmo tipo de mídia e direção em um evento.
codecName Nome do codec OPUS, G722.
bitrate Taxa de bits de receção de áudio (bits por segundo) Os valores gerais estão na faixa de 24 Kbps (36-128 Kbps é típico).
jitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
packets O número total de pacotes recebidos.
packetsPerSecond Taxa de pacotes (pacotes por segundo)
packetsLost O número total de pacotes perdidos.
packetsLostPerSecond Taxa de perda de pacotes (pacotes por segundo) Mais baixo é melhor.
jitterBufferDelayInMs Memória intermédia de desvios (milissegundos) Mais baixo é melhor. O buffer de desvio é usado para layout suave. Esse valor é por quanto tempo os pacotes das amostras permanecem no buffer de desvio.
audioOutputLevel Nível de volume de áudio do fluxo de receção O valor varia de 0 a 65536. Um valor de 0 representa o silêncio.
healedRatio Rácio entre as amostras ocultadas (exceto silentConcealedSamples) e o total de amostras recebidas Apenas informação.
transportId ID do transporte Usado para associar as estatísticas em transportes.

Métricas de envio de vídeo

A partir da versão 1.20.1 do SDK, as métricas de envio de vídeo incluíram o campo métrico, o altLayouts que permite uma melhor representação das estatísticas de fluxo simulcast.

Nome da métrica Description Comentários
id ID de estatísticas Usado para identificar estatísticas em todos os eventos, especialmente quando há várias estatísticas com o mesmo tipo de mídia e direção em um evento.
codecName Nome do codec H264, VP8, VP9.
bitrate Taxa de bits de envio de vídeo (bits por segundo)
jitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
packets O número total de pacotes enviados.
packetsPerSecond Taxa de pacotes (pacotes por segundo)
packetsLost O número total de pacotes perdidos relatados a partir da extremidade remota.
packetsLostPerSecond Taxa de perda de pacotes (pacotes por segundo) Mais baixo é melhor.
rttInMs Tempo de ida e volta (milissegundos) Mais baixo é melhor. Calculado a partir do relatório do recetor RTCP. Recomendamos um tempo de ida e volta de 200 ms ou menos.
frameRateInput Taxa de quadros originada da fonte de vídeo (quadros por segundo)
frameWidthInput Largura do quadro do último quadro que se origina da fonte de vídeo (pixels)
frameHeightInput Altura do quadro do último quadro que se origina da fonte de vídeo (pixels)
framesEncoded O número de quadros codificados com êxito para o fluxo RTP.
frameRateEncoded Taxa de quadros codificada com êxito para o fluxo RTP (quadros por segundo)
framesSent O número de quadros enviados no fluxo RTP
frameRateSent Taxa de quadros enviada no fluxo RTP (quadros por segundo)
frameWidthSent Largura do quadro do quadro codificado (pixel)
frameHeightSent Altura do quadro codificado (pixel)
keyFramesEncoded Quadros-chave codificados com êxito para o fluxo RTP
transportId ID do transporte Usado para associar as estatísticas em transportes.
altLayouts Transmissões simultâneas altLayouts contém as mesmas métricas para o envio de vídeo

Métricas de recebimento de vídeo

Nas versões do SDK anteriores à 1.20.1, jitterBufferDelayInMs existia como jitterBufferInMs.

Nome da métrica Description Comentários
id ID de estatísticas Usado para identificar estatísticas em todos os eventos, especialmente quando há várias estatísticas com o mesmo tipo de mídia e direção em um evento.
codecName Nome do codec H264, VP8, VP9.
bitrate Taxa de bits de receção de vídeo (bits por segundo)
jitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
packets O número total de pacotes recebidos.
packetsPerSecond Taxa de pacotes (pacotes por segundo)
packetsLost O número total de pacotes perdidos.
packetsLostPerSecond Taxa de perda de pacotes (pacotes por segundo) Mais baixo é melhor.
rttInMs Tempo de ida e volta (milissegundos) Mais baixo é melhor. Calculado a partir do relatório do remetente RTCP. Recomendamos um tempo de ida e volta de 200 ms ou menos.
streamId ID do fluxo O streamId valor corresponde a id em VideoStreamCommon. Ele pode ser usado para corresponder ao remetente.
jitterBufferDelayInMs Memória intermédia de desvios (milissegundos) Mais baixo é melhor. O buffer de desvio é usado para layout suave. Esse valor é quanto tempo os pacotes dos quadros permanecem no buffer de jitter.
frameRateDecoded Taxa de quadros corretamente decodificada para o fluxo RTP (quadros por segundo)
frameRateReceived Taxa de quadros recebida no fluxo RTP (quadros por segundo)
frameWidthReceived Largura do quadro do quadro decodificado (pixel)
frameHeightReceived Altura do quadro decodificado (pixel)
longestFreezeDurationInMs Maior duração de congelamento (milissegundos)
totalFreezeDurationInMs Duração total do congelamento (milissegundos)
framesReceived Número total de frames recebidos no fluxo RTP
framesDecoded Número total de quadros corretamente decodificados para o fluxo RTP
framesDropped Número total de quadros descartados
keyFramesDecoded Número total de quadros-chave corretamente decodificados para o fluxo RTP
transportId ID do transporte Usado para associar as estatísticas em transportes.

Métricas de envio de compartilhamento de tela

Atualmente, os campos de estatísticas são os mesmos que as métricas de envio de vídeo.

Métricas de recebimento de compartilhamento de tela

Atualmente, os campos de estatísticas são os mesmos que as métricas de receção de vídeo.

Métricas de transporte

As métricas relacionadas ao transporte foram separadas após o ACS Web SDK 1.20.1.

Em versões anteriores, rttInMs existia como pairRttInMs nas estatísticas de áudio, vídeo e screenShare.

availableIncomingBitrate estava availableBitrate nas estatísticas de recebimento de áudio, vídeo e screenShare.

availableOutgoingBitrate estava availableBitrate nas estatísticas de envio para áudio, vídeo e screenShare.

Nome da métrica Description Comentários
id ID do transporte Usado para associar com o transportId em outras estatísticas
rttInMs Tempo de ida e volta (milissegundos) O valor é calculado a partir da verificação de conectividade STUN. Recomendamos um tempo de ida e volta de 200 ms ou menos.
availableIncomingBitrate Estimativa da largura de banda (bits por segundo) O valor pode não estar disponível dependendo do algoritmo de estimativa de largura de banda usado na sessão WebRTC
availableOutgoingBitrate Estimativa da largura de banda (bits por segundo) O valor pode não estar disponível dependendo do algoritmo de estimativa de largura de banda usado na sessão WebRTC

O que mudou no SDK versão 1.20.1 (GA)

Agora suportamos a API de recursos MediaStats em 1.20.1 (GA). Em comparação com as versões beta anteriores, também fizemos algumas pequenas alterações na interface da API nesta versão GA.

Nas versões beta anteriores, pairRttInMs, availableBitrate foram incluídas nas estatísticas de áudio, vídeo e screenShare. Agora, essas métricas foram separadas em métricas de transporte.

Nós introduzimos packets, packetsLost campos métricos em áudio, vídeo, screenShare estatísticas. Essas métricas são úteis para calcular o número total de pacotes enviados ou recebidos entre dois pontos de tempo diferentes.

As frameRateOutput estatísticas in video e screenShare são removidas. Você pode usar frameRateDecoded em vez disso.

O campo jitterBufferInMs métrico foi renomeado para jitterBufferDelayInMs fornecer uma descrição mais clara, pois essa métrica indica a duração de uma permanência de pacote no buffer de jitter.

Estatísticas sobre a qualidade dos meios de comunicação social para um convite em curso

As estatísticas de qualidade de mídia são um recurso estendido da API principal Call . Primeiro, você precisa obter o MediaStatisticsCallFeature objeto API:

MediaStatisticsCallFeature mediaStatisticsCallFeature = call.feature(Features.MEDIA_STATISTICS);

O MediaStatisticsCallFeature objeto tem a seguinte estrutura de API:

  • O OnReportReceivedListener evento ouve relatórios periódicos das estatísticas da mídia.
  • getReportIntervalInSeconds obtém o intervalo, em segundos, da geração do relatório de estatísticas de mídia. O SDK usa 10 o segundo como padrão.
  • updateReportIntervalInSeconds() Atualiza o intervalo, em segundos, da geração do relatório de estatísticas de mídia. O SDK usa 10 o segundo como padrão.
  • A MediaStatisticsReport contém a definição das estatísticas de mídia de entrada e saída, categorizadas por áudio, vídeo e compartilhamento de tela.
    • getOutgoingStatistics(): A lista de estatísticas de mídia para mídia de saída.
      • getAudioStatistics(): A lista de estatísticas de mídia para áudio de saída.
      • getVideoStatistics(): A lista de estatísticas de mídia para vídeo enviado.
      • getScreenShareStatistics(): A lista de estatísticas de mídia para compartilhamento de tela de saída.
      • getDataChannelStatistics(): A lista de estatísticas de mídia para o canal de dados.
    • getIncomingStatistics(): A lista de estatísticas de mídia para a mídia de entrada.
      • getAudioStatistics(): A lista de estatísticas de mídia para áudio recebido.
      • getVideoStatistics(): A lista de estatísticas de mídia para o vídeo recebido.
      • getScreenShareStatistics(): A lista de estatísticas de mídia para compartilhamento de tela de entrada.
      • getDataChannelStatistics(): A lista de estatísticas de mídia para o canal de dados.
    • getLastUpdatedAt(): A data em que o relatório foi gerado.

Em seguida, inscreva-se no addOnReportReceivedListener evento para receber atualizações regulares sobre as estatísticas atuais de qualidade de mídia:

mediaStatisticsCallFeature.addOnReportReceivedListener(handleReportReceivedListener);
// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.updateReportIntervalInSeconds(15);

private void handleReportReceivedListener(MediaStatisticssReportEvent args) {
    // Obtain the media statistics report instance
    MediaStatisticsReport report = args.getReport();

    // Obtain the outgoing media statistics for audio
    List<OutgoingAudioStatistics> outgoingAudioStatistics = report.getOutgoingStatistics().getAudioStatistics();

    // Obtain the outgoing media statistics for video
    List<OutgoingVideoStatistics> outgoingVideoStatistics = report.getOutgoingStatistics().getVideoStatistics();

    // Obtain the outgoing media statistics for screen share
    List<OutgoingScreenShareStatistics> outgoingScreenShareStatistics = report.getOutgoingStatistics().getScreenShareStatistics();

    // Obtain the outgoing media statistics for data channel
    List<OutgoingDataChannelStatistics> outgoingDataChannelStatistics = report.getOutgoingStatistics().getDataChannelStatistics();

    // Obtain the incoming media statistics for audio
    List<IncomingAudioStatistics> incomingAudioStatistics = report.getIncomingStatistics().getAudioStatistics();

    // Obtain the incoming media statistics for video
    List<IncomingVideoStatistics> incomingVideoStatistics = report.getIncomingStatistics().getVideoStatistics();

    // Obtain the incoming media statistics for screen share
    List<IncomingScreenShareStatistics> incomingScreenShareStatistics = report.getIncomingStatistics().getScreenShareStatistics();

    // Obtain the incoming media statistics for data channel
    List<IncomingDataChannelStatistics> incomingDataChannelStatistics = report.getIncomingStatistics().getDataChannelStatistics();
}

Melhores práticas

Se você quiser coletar os dados para inspeção offline, recomendamos que colete os dados e os envie para a ingestão do pipeline após o término da chamada. Se você transmitir os dados durante uma chamada, ele poderá usar a largura de banda da Internet necessária para continuar uma chamada dos Serviços de Comunicação do Azure (especialmente quando a largura de banda disponível for baixa).

Métricas de áudio de saída

Nome da métrica Description Comentários
CodecName Nome do codec
BitrateInBps Taxa de bits de envio de áudio (bits por segundo) Os valores gerais estão na faixa de 24 Kbps (36-128 Kbps é típico).
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.

Métricas de áudio de entrada

Nome da métrica Description Comentários
CodecName Nome do codec
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.
PacketsLostPerSecond Taxa de perda de pacotes (pacotes por segundo) Mais baixo é melhor.

Métricas de vídeo de saída

Nome da métrica Description Comentários
CodecName Nome do codec
BitrateInBps Taxa de bits de envio de vídeo (bits por segundo)
PacketCount O número total de pacotes enviados.
FrameRate Taxa de quadros enviada no fluxo RTP (quadros por segundo)
FrameWidth Largura do quadro do quadro codificado (pixels)
FrameHeight Altura do quadro codificado (pixels)

Métricas de vídeo de entrada

Nome da métrica Description Comentários
CodecName Nome do codec
BitrateInBps Taxa de bits de receção de vídeo (bits por segundo)
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.
PacketsLostPerSecond Taxa de perda de pacotes (pacotes por segundo) Mais baixo é melhor.
StreamId ID do fluxo O streamId valor corresponde ao ID do vídeo do participante remoto. Ele pode ser usado para corresponder ao remetente.
FrameRate Taxa de quadros recebida no fluxo RTP (quadros por segundo)
FrameWidth Largura do quadro do quadro decodificado (pixels)
FrameHeight Altura do quadro decodificado (pixels)
TotalFreezeDurationInMs Duração total do congelamento (milissegundos)

Métricas de compartilhamento de tela de saída

Atualmente, os campos de estatísticas são os mesmos que as métricas de vídeo de saída.

Métricas de compartilhamento de tela de entrada

Atualmente, os campos de estatísticas são os mesmos que as métricas de vídeo de entrada.

Métricas do canal de dados de saída

Nome da métrica Description Comentários
PacketCount O número total de pacotes enviados.

Métricas do canal de dados de entrada

Nome da métrica Description Comentários
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.

Estatísticas sobre a qualidade dos meios de comunicação social para um convite em curso

As estatísticas de qualidade de mídia são um recurso estendido da API principal Call . Primeiro, você precisa obter o mediaStatisticsCallFeature objeto API:

var mediaStatisticsCallFeature = self.call.feature(Features.mediaStatistics)

O mediaStatisticsCallFeature objeto tem a seguinte estrutura de API:

  • O didReceiveReport método delegado escuta relatórios periódicos das estatísticas da mídia.
  • reportIntervalInSeconds obtém o intervalo, em segundos, da geração do relatório de estatísticas de mídia. O SDK usa 10 o segundo como padrão.
  • updateReportInterval(inSeconds) Atualiza o intervalo, em segundos, da geração do relatório de estatísticas de mídia. O SDK usa 10 o segundo como padrão.
  • Um MediaStatisticsReport objeto contém a definição das estatísticas de mídia de entrada e saída, categorizadas por áudio, vídeo e compartilhamento de tela.
    • outgoingMediaStatistics: A lista de estatísticas de mídia para mídia de saída.
      • audio: A lista de estatísticas de mídia para o áudio enviado.
      • video: A lista de estatísticas de mídia para o vídeo enviado.
      • screenShare: A lista de estatísticas de mídia para o compartilhamento de tela de saída.
      • dataChannel: A lista de estatísticas de mídia para o canal de dados de saída.
    • incomingMediaStatistics: A lista de estatísticas de mídia para a mídia de entrada.
      • audio: A lista de estatísticas de mídia para o áudio recebido.
      • video: A lista de estatísticas de mídia para o vídeo recebido.
      • screenShare: A lista de estatísticas de mídia para o compartilhamento de tela de entrada.
      • dataChannel: A lista de estatísticas de mídia para o canal de dados de entrada.
    • lastUpdated: A data em que o relatório foi gerado.

Em seguida, implemente o didReceiveReport delegado para obter atualizações regulares sobre as estatísticas atuais de qualidade de mídia:

// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.updateReportInterval(inSeconds: 15)
mediaStatisticsCallFeature.delegate = MediaStatisticsDelegate()


public class MediaStatisticsDelegate : MediaStatisticsCallFeatureDelegate
{
    public func mediaStatisticsCallFeature(_ mediaStatisticsCallFeature: MediaStatisticsCallFeature,
                                      didReceiveReport args: MediaStatisticsReportReceivedEventArgs) {
        let report = args.report

        // Obtain the outgoing media statistics for audio
        let outgoingAudioStatistics = report.outgoingStatistics.audio
    
        // Obtain the outgoing media statistics for video
        let outgoingVideoStatistics = report.outgoingStatistics.video
    
        // Obtain the outgoing media statistics for screen share
        let outgoingScreenShareStatistics = report.outgoingStatistics.screenShare

        // Obtain the outgoing media statistics for data channel
        let outgoingDataChannelStatistics = report.outgoingStatistics.dataChannel
    
        // Obtain the incoming media statistics for audio
        let incomingAudioStatistics = report.incomingStatistics.audio
    
        // Obtain the incoming media statistics for video
        let incomingVideoStatistics = report.incomingStatistics.video
    
        // Obtain the incoming media statistics for screen share
        let incomingScreenShareStatistics = report.incomingStatistics.screenShare

        // Obtain the incoming media statistics for data channel
        let incomingDataChannelStatistics = report.incomingStatistics.dataChannel
    }
}

Melhores práticas

Se você quiser coletar os dados para inspeção offline, recomendamos que colete os dados e os envie para a ingestão do pipeline após o término da chamada. Se você transmitir os dados durante uma chamada, ele poderá usar a largura de banda da Internet necessária para continuar uma chamada dos Serviços de Comunicação do Azure (especialmente quando a largura de banda disponível for baixa).

Métricas de áudio de saída

Nome da métrica Description Comentários
CodecName Nome do codec
BitrateInBps Taxa de bits de envio de áudio (bits por segundo) Os valores gerais estão na faixa de 24 Kbps (36-128 Kbps é típico).
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.

Métricas de áudio de entrada

Nome da métrica Description Comentários
CodecName Nome do codec
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.
PacketsLostPerSecond Taxa de perda de pacotes (pacotes por segundo) Mais baixo é melhor.

Métricas de vídeo de saída

Nome da métrica Description Comentários
CodecName Nome do codec
BitrateInBps Taxa de bits de envio de vídeo (bits por segundo)
PacketCount O número total de pacotes enviados.
FrameRate Taxa de quadros enviada no fluxo RTP (quadros por segundo)
FrameWidth Largura do quadro do quadro codificado (pixels)
FrameHeight Altura do quadro codificado (pixels)

Métricas de vídeo de entrada

Nome da métrica Description Comentários
CodecName Nome do codec
BitrateInBps Taxa de bits de receção de vídeo (bits por segundo)
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.
PacketsLostPerSecond Taxa de perda de pacotes (pacotes por segundo) Mais baixo é melhor.
StreamId ID do fluxo O streamId valor corresponde ao ID do vídeo do participante remoto. Ele pode ser usado para corresponder ao remetente.
FrameRate Taxa de quadros recebida no fluxo RTP (quadros por segundo)
FrameWidth Largura do quadro do quadro decodificado (pixels)
FrameHeight Altura do quadro decodificado (pixels)
TotalFreezeDurationInMs Duração total do congelamento (milissegundos)

Métricas de compartilhamento de tela de saída

Atualmente, os campos de estatísticas são os mesmos que as métricas de vídeo de saída.

Métricas de compartilhamento de tela de entrada

Atualmente, os campos de estatísticas são os mesmos que as métricas de vídeo de entrada.

Métricas do canal de dados de saída

Nome da métrica Description Comentários
PacketCount O número total de pacotes enviados.

Métricas do canal de dados de entrada

Nome da métrica Description Comentários
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.

Estatísticas sobre a qualidade dos meios de comunicação social para um convite em curso

As estatísticas de qualidade de mídia são um recurso estendido da API principal CommunicationCall . Primeiro, você precisa obter o MediaStatisticsCallFeature objeto API:

MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;

O MediaStatisticsCallFeature objeto feature tem a seguinte estrutura de API:

  • O ReportReceived evento ouve relatórios periódicos das estatísticas da mídia.
  • ReportIntervalInSeconds obtém o intervalo, em segundos, da geração do relatório de estatísticas de mídia. O SDK usa 10 o segundo como padrão.
  • UpdateReportIntervalInSeconds() Atualiza o intervalo, em segundos, da geração do relatório de estatísticas de mídia. O SDK usa 10 o segundo como padrão.
  • Um MediaStatisticsReport objeto contém a definição das estatísticas de mídia de entrada e saída, categorizadas por áudio, vídeo e compartilhamento de tela.
    • OutgoingMediaStatistics: A lista de estatísticas de mídia para mídia de saída.
      • Audio: A lista de estatísticas de mídia para o áudio enviado.
      • Video: A lista de estatísticas de mídia para o vídeo enviado.
      • ScreenShare: A lista de estatísticas de mídia para o compartilhamento de tela de saída.
      • DataChannel: A lista de estatísticas de mídia para o canal de dados de saída.
    • IncomingMediaStatistics: A lista de estatísticas de mídia para a mídia de entrada.
      • Audio: A lista de estatísticas de mídia para o áudio recebido.
      • Video: A lista de estatísticas de mídia para o vídeo recebido.
      • ScreenShare: A lista de estatísticas de mídia para o compartilhamento de tela de entrada.
      • DataChannel: A lista de estatísticas de mídia para o canal de dados de entrada.
    • LastUpdateAt: A data em que o relatório foi gerado.

Em seguida, inscreva-se no SampleReported evento para receber atualizações regulares sobre as estatísticas atuais de qualidade de mídia:

mediaStatisticsCallFeature.ReportReceived += MediaStatisticsCallFeature_ReportReceived;
// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.UpdateReportIntervalInSeconds(15);

private void MediaStatisticsCallFeature_ReportReceived(object sender, MediaStatisticsReportReceivedEventArgs args)
    // Obtain the media statistics report instance
    MediaStatisticsReport report = args.Report;

    // Obtain the outgoing media statistics for audio
    IReadOnlyList<OutgoingAudioStatistics> outgoingAudioStatistics = report.OutgoingStatistics.Audio;

    // Obtain the outgoing media statistics for video
    IReadOnlyList<OutgoingVideoStatistics> outgoingVideoStatistics = report.OutgoingStatistics.Video;

    // Obtain the outgoing media statistics for screen share
    IReadOnlyList<OutgoingScreenShareStatistics> outgoingScreenShareStatistics = report.OutgoingStatistics.ScreenShare;

    // Obtain the outgoing media statistics for data channel
    IReadOnlyList<OutgoingDataChannelStatistics> outgoingDataChannelStatistics = report.OutgoingStatistics.DataChannel;

    // Obtain the incoming media statistics for audio
    IReadOnlyList<IncomingAudioStatistics> incomingAudioStatistics = report.IncomingStatistics.Audio;

    // Obtain the incoming media statistics for video
    IReadOnlyList<IncomingVideoStatistics> incomingVideoStatistics = report.IncomingStatistics.Video;

    // Obtain the incoming media statistics for screen share
    IReadOnlyList<IncomingScreenShareStatistics> incomingScreenShareStatistics = report.IncomingStatistics.ScreenShare;

    // Obtain the incoming media statistics for data channel
    IReadOnlyList<IncomingDataChannelStatistics> incomingDataChannelStatistics = report.IncomingStatistics.DataChannel;
}

Melhores práticas

Se você quiser coletar os dados para inspeção offline, recomendamos que colete os dados e os envie para a ingestão do pipeline após o término da chamada. Se você transmitir os dados durante uma chamada, ele poderá usar a largura de banda da Internet necessária para continuar uma chamada dos Serviços de Comunicação do Azure (especialmente quando a largura de banda disponível for baixa).

Métricas de áudio de saída

Nome da métrica Description Comentários
CodecName Nome do codec
BitrateInBps Taxa de bits de envio de áudio (bits por segundo) Os valores gerais estão na faixa de 24 Kbps (36-128 Kbps é típico).
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.

Métricas de áudio de entrada

Nome da métrica Description Comentários
CodecName Nome do codec
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.
PacketsLostPerSecond Taxa de perda de pacotes (pacotes por segundo) Mais baixo é melhor.

Métricas de vídeo de saída

Nome da métrica Description Comentários
CodecName Nome do codec
BitrateInBps Taxa de bits de envio de vídeo (bits por segundo)
PacketCount O número total de pacotes enviados.
FrameRate Taxa de quadros enviada no fluxo RTP (quadros por segundo)
FrameWidth Largura do quadro do quadro codificado (pixels)
FrameHeight Altura do quadro codificado (pixels)

Métricas de vídeo de entrada

Nome da métrica Description Comentários
CodecName Nome do codec
BitrateInBps Taxa de bits de receção de vídeo (bits por segundo)
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.
PacketsLostPerSecond Taxa de perda de pacotes (pacotes por segundo) Mais baixo é melhor.
StreamId ID do fluxo O streamId valor corresponde ao ID do vídeo do participante remoto. Ele pode ser usado para corresponder ao remetente.
FrameRate Taxa de quadros recebida no fluxo RTP (quadros por segundo)
FrameWidth Largura do quadro do quadro decodificado (pixels)
FrameHeight Altura do quadro decodificado (pixels)
TotalFreezeDurationInMs Duração total do congelamento (milissegundos)

Métricas de compartilhamento de tela de saída

Atualmente, os campos de estatísticas são os mesmos que as métricas de vídeo de saída.

Métricas de compartilhamento de tela de entrada

Atualmente, os campos de estatísticas são os mesmos que as métricas de vídeo de entrada.

Métricas do canal de dados de saída

Nome da métrica Description Comentários
PacketCount O número total de pacotes enviados.

Métricas do canal de dados de entrada

Nome da métrica Description Comentários
JitterInMs Desvio de pacote (milissegundos) Mais baixo é melhor.
PacketCount O número total de pacotes enviados.