Estatísticas sobre a qualidade dos meios de comunicação social
Para ajudá-lo a entender melhor a qualidade de 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 o sampleReported
evento ou o summaryReported
evento.
O 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.
O summaryReported
evento contém os valores agregados dos dados em intervalos, o que é útil quando você precisa apenas 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);
});
Se você não precisar usar o coletor de estatísticas de mídia, poderá chamar dispose
o método de mediaStatsCollector
.
mediaStatsCollector.dispose();
Você não precisa chamar dispose
o método de cada vez que a chamada termina, porque 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
= 1dataPointsPerAggregation
= 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
= 60dataPointsPerAggregation
= 1
O summaryReported
evento é gerado a cada 60 segundos e contém uma (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.
Recomendamos 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 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 | 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 altLayouts
campo métrico, 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 são separadas em métricas de transporte.
Introduzimos packets
campos packetsLost
métricos em áudio, vídeo, estatísticas de compartilhamento de tela. 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 é renomeado para jitterBufferDelayInMs
fornecer uma descrição mais clara, porque essa métrica indica a duração de uma estadia 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 usa10
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 usa10
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(MediaStatisticsReportEvent 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 usa10
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 usa10
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 usa10
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 usa10
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. |