Statistiche sulla qualità dei supporti
Per comprendere meglio la qualità dei contenuti multimediali nelle chiamate VoIP e video che usano Servizi di comunicazione di Azure, è disponibile una funzionalità denominata statistiche sulla qualità dei supporti. Usarlo per esaminare le metriche di qualità di audio, video e condivisione dello schermo di basso livello per le metriche delle chiamate in ingresso e in uscita.
Statistiche sulla qualità dei supporti per una chiamata in corso
Importante
È disponibile un aggiornamento dell'interfaccia sulle statistiche sulla qualità dei supporti nell'SDK, a partire dall'SDK versione 1.20.1
Le statistiche sulla qualità dei supporti sono una funzionalità estesa dell'API principale Call
. È prima necessario ottenere l'oggetto mediaStatsFeature
API:
const mediaStatsFeature = call.feature(Features.MediaStats);
Per ricevere i dati delle statistiche multimediali, è possibile sottoscrivere l'evento sampleReported
o l'evento summaryReported
.
L'evento sampleReported
viene attivato ogni secondo. È adatto come origine dati per la visualizzazione dell'interfaccia utente o la propria pipeline di dati.
L'evento summaryReported
contiene i valori aggregati dei dati a intervalli, utile quando è sufficiente un riepilogo.
Se si desidera controllare l'intervallo dell'evento summaryReported
, è necessario definire mediaStatsCollectorOptions
di tipo MediaStatsCollectorOptions
. In caso contrario, l'SDK usa i valori predefiniti.
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 non è necessario usare l'agente di raccolta statistiche multimediali, è possibile chiamare dispose
il metodo di mediaStatsCollector
.
mediaStatsCollector.dispose();
Non è necessario chiamare dispose
il metodo di mediaStatsCollector
ogni volta che termina la chiamata, perché gli agenti di raccolta vengono recuperati internamente al termine della chiamata.
MediaStatsCollectorOptions
MediaStatsCollectorOptions
è facoltativo e sono disponibili due campi facoltativi in MediaStatsCollectorOptions
.
aggregationInterval
è l'intervallo, espresso in secondi, che le statistiche vengono aggregate. Il valore predefinito è 10.dataPointsPerAggregation
definisce il numero di punti dati di ogni evento di aggregazione. Il valore predefinito è 6.
Questi due valori determinano la frequenza con cui l'SDK genera summaryReported
l'evento e il numero di punti dati aggregati inclusi nel report.
Evento summaryReported
generato ogni aggregationInterval * dataPointsPerAggregation
secondo.
Ad esempio, se si impostano i valori seguenti:
aggregationInterval
= 1dataPointsPerAggregation
= 60
L'evento summaryReported
viene generato ogni 60 secondi e contiene 60 unità univoche per ogni statistica registrata.
Se si impostano i valori seguenti:
aggregatinInterval
= 60dataPointsPerAggregation
= 1
L'evento summaryReported
viene generato ogni 60 secondi e contiene un'unità univoca (1) per ogni statistica registrata.
Procedure consigliate
Se si vogliono raccogliere i dati per l'ispezione offline, è consigliabile raccogliere i dati e inviarli all'inserimento della pipeline al termine della chiamata. Se si trasmettono i dati durante una chiamata, potrebbe usare la larghezza di banda Internet necessaria per continuare una chiamata Servizi di comunicazione di Azure (soprattutto quando la larghezza di banda disponibile è bassa).
In entrambi sampleReported
gli eventi o summaryReported
eventi, i dati delle statistiche multimediali non sono solo un semplice mapping chiave-valore.
Ecco la dichiarazione di tipo dei dati dell'evento segnalati dall'evento sampleReported
.
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>[];
}
I dati dell'evento forniscono i dati delle statistiche per ogni flusso multimediale nella chiamata, incluse le istruzioni di invio e ricezione.
È consigliabile stampare l'evento usando console.log
per osservare le modifiche di layout e valore, in modo da poter visualizzare o elaborare i dati in base allo scenario di utilizzo.
Metriche di invio audio
Nome metrica | Descrizione | Commenti |
---|---|---|
id |
ID delle statistiche | Usato per identificare le statistiche tra gli eventi, in particolare quando sono presenti più statistiche con lo stesso tipo di supporto e direzione in un evento. |
codecName |
Nome codec | OPUS, G722. |
bitrate |
Velocità in bit di trasmissione audio (bit al secondo) | I valori generali sono compresi nell'intervallo da 24 Kbps (36-128 Kbps è tipico). |
jitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
packets |
Numero totale di pacchetti inviati. | |
packetsPerSecond |
Frequenza pacchetti (pacchetti al secondo) | |
packetsLost |
Numero totale di pacchetti persi dall'estremità remota. | |
packetsLostPerSecond |
Frequenza di perdita dei pacchetti (pacchetti al secondo) | È preferibile un valore basso. |
rttInMs |
Tempo di round trip (millisecondi) | È preferibile un valore basso. Calcolato dal report del ricevitore RTCP. È consigliabile un tempo di andata e ritorno di 200 ms o inferiore. |
audioInputLevel |
Livello di volume audio dal microfono | Il valore è compreso tra 0 e 65536. Il valore 0 rappresenta il silenzio. |
transportId |
ID trasporto | Utilizzato per associare le statistiche nei trasporti. |
Metriche di ricezione audio
Nelle versioni dell'SDK precedenti alla 1.20.1 esisteva jitterBufferDelayInMs
come jitterBufferInMs
.
Nome metrica | Descrizione | Commenti |
---|---|---|
id |
ID delle statistiche | Usato per identificare le statistiche tra gli eventi, in particolare quando sono presenti più statistiche con lo stesso tipo di supporto e direzione in un evento. |
codecName |
Nome codec | OPUS, G722. |
bitrate |
Velocità in bit di ricezione audio (bit al secondo) | I valori generali sono compresi nell'intervallo da 24 Kbps (36-128 Kbps è tipico). |
jitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
packets |
Numero totale di pacchetti ricevuti. | |
packetsPerSecond |
Frequenza pacchetti (pacchetti al secondo) | |
packetsLost |
Numero totale di pacchetti persi. | |
packetsLostPerSecond |
Frequenza di perdita dei pacchetti (pacchetti al secondo) | È preferibile un valore basso. |
jitterBufferDelayInMs |
Buffer jitter (millisecondi) | È preferibile un valore basso. Il buffer di instabilità viene usato per il playout uniforme. Questo valore indica per quanto tempo i pacchetti degli esempi rimangono nel buffer di instabilità. |
audioOutputLevel |
Livello di volume audio dal flusso di ricezione | Il valore è compreso tra 0 e 65536. Il valore 0 rappresenta il silenzio. |
healedRatio |
Rapporto tra campioni nascosti (tranne silentConcealedSamples ) e campioni ricevuti totali |
Solo informazioni. |
transportId |
ID trasporto | Utilizzato per associare le statistiche nei trasporti. |
Metriche di invio video
A partire dall'SDK versione 1.20.1, le metriche di invio video includono il altLayouts
campo metrica, che consente una migliore rappresentazione delle statistiche del flusso simulcast.
Nome metrica | Descrizione | Commenti |
---|---|---|
id |
ID delle statistiche | Usato per identificare le statistiche tra gli eventi, in particolare quando sono presenti più statistiche con lo stesso tipo di supporto e direzione in un evento. |
codecName |
Nome codec | H264, VP8, VP9. |
bitrate |
Velocità in bit di trasmissione video (bit al secondo) | |
jitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
packets |
Numero totale di pacchetti inviati. | |
packetsPerSecond |
Frequenza pacchetti (pacchetti al secondo) | |
packetsLost |
Numero totale di pacchetti persi dall'estremità remota. | |
packetsLostPerSecond |
Frequenza di perdita dei pacchetti (pacchetti al secondo) | È preferibile un valore basso. |
rttInMs |
Tempo di round trip (millisecondi) | È preferibile un valore basso. Calcolato dal report del ricevitore RTCP. È consigliabile un tempo di andata e ritorno di 200 ms o inferiore. |
frameRateInput |
Frequenza dei fotogrammi originato dall'origine video (fotogrammi al secondo) | |
frameWidthInput |
Larghezza del fotogramma dell'ultimo fotogramma originato dall'origine video (pixel) | |
frameHeightInput |
Altezza del fotogramma dell'ultimo fotogramma originato dall'origine video (pixel) | |
framesEncoded |
Numero di fotogrammi codificati correttamente per il flusso RTP. | |
frameRateEncoded |
Frequenza dei fotogrammi codificata correttamente per il flusso RTP (fotogrammi al secondo) | |
framesSent |
Numero di frame inviati nel flusso RTP | |
frameRateSent |
Frequenza dei fotogrammi inviata nel flusso RTP (fotogrammi al secondo) | |
frameWidthSent |
Larghezza del frame codificato (pixel) | |
frameHeightSent |
Altezza del fotogramma codificato (pixel) | |
keyFramesEncoded |
Fotogrammi chiave codificati correttamente per il flusso RTP | |
transportId |
ID trasporto | Utilizzato per associare le statistiche nei trasporti. |
altLayouts |
Flussi simulcast | altLayouts contiene le stesse metriche per l'invio video |
Metriche di ricezione video
Nelle versioni dell'SDK precedenti alla 1.20.1 esisteva jitterBufferDelayInMs
come jitterBufferInMs
.
Nome metrica | Descrizione | Commenti |
---|---|---|
id |
ID delle statistiche | Usato per identificare le statistiche tra gli eventi, in particolare quando sono presenti più statistiche con lo stesso tipo di supporto e direzione in un evento. |
codecName |
Nome codec | H264, VP8, VP9. |
bitrate |
Velocità in bit di ricezione video (bit al secondo) | |
jitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
packets |
Numero totale di pacchetti ricevuti. | |
packetsPerSecond |
Frequenza pacchetti (pacchetti al secondo) | |
packetsLost |
Numero totale di pacchetti persi. | |
packetsLostPerSecond |
Frequenza di perdita dei pacchetti (pacchetti al secondo) | È preferibile un valore basso. |
rttInMs |
Tempo di round trip (millisecondi) | È preferibile un valore basso. Calcolato dal report del mittente RTCP. È consigliabile un tempo di andata e ritorno di 200 ms o inferiore. |
streamId |
ID flusso | Il streamId valore corrisponde a id in VideoStreamCommon . Può essere usato per trovare la corrispondenza con il mittente. |
jitterBufferDelayInMs |
Buffer jitter (millisecondi) | È preferibile un valore basso. Il buffer di instabilità viene usato per il playout uniforme. Questo valore indica per quanto tempo i pacchetti dei fotogrammi rimangono nel buffer di instabilità. |
frameRateDecoded |
Frequenza dei fotogrammi decodificata correttamente per il flusso RTP (fotogrammi al secondo) | |
frameRateReceived |
Frequenza dei fotogrammi ricevuta nel flusso RTP (fotogrammi al secondo) | |
frameWidthReceived |
Larghezza del frame decodificato (pixel) | |
frameHeightReceived |
Altezza del fotogramma decodificato (pixel) | |
longestFreezeDurationInMs |
Durata del blocco più lunga (millisecondi) | |
totalFreezeDurationInMs |
Durata totale del blocco (millisecondi) | |
framesReceived |
Numero totale di fotogrammi ricevuti nel flusso RTP | |
framesDecoded |
Numero totale di fotogrammi decodificati correttamente per il flusso RTP | |
framesDropped |
Numero totale di fotogrammi eliminati | |
keyFramesDecoded |
Numero totale di fotogrammi chiave decodificati correttamente per il flusso RTP | |
transportId |
ID trasporto | Utilizzato per associare le statistiche nei trasporti. |
Metriche di invio della condivisione dello schermo
Attualmente, i campi delle statistiche corrispondono alle metriche di invio video.
Metriche di ricezione della condivisione dello schermo
Attualmente, i campi delle statistiche sono uguali a quello delle metriche di ricezione video.
Metriche di trasporto
Le metriche correlate al trasporto sono state separate dopo ACS Web SDK 1.20.1.
Nelle versioni precedenti esisteva rttInMs
come pairRttInMs
nelle statistiche per audio, video e screenShare.
availableIncomingBitrate
era availableBitrate
nelle statistiche di ricezione per audio, video e screenShare.
availableOutgoingBitrate
era availableBitrate
nelle statistiche di invio per audio, video e screenShare.
Nome metrica | Descrizione | Commenti |
---|---|---|
id |
ID trasporto | Utilizzato per l'associazione con transportId in altre statistiche |
rttInMs |
Tempo di round trip (millisecondi) | Il valore viene calcolato dal controllo della connettività STUN. È consigliabile un tempo di andata e ritorno di 200 ms o inferiore. |
availableIncomingBitrate |
Stima della larghezza di banda (bit al secondo) | Il valore potrebbe non essere disponibile a seconda dell'algoritmo di stima della larghezza di banda usato nella sessione WebRTC |
availableOutgoingBitrate |
Stima della larghezza di banda (bit al secondo) | Il valore potrebbe non essere disponibile a seconda dell'algoritmo di stima della larghezza di banda usato nella sessione WebRTC |
Modifiche apportate all'SDK versione 1.20.1 (GA)
Ora è supportata l'API delle funzionalità MediaStats nella versione 1.20.1 (GA).
Rispetto alle versioni beta precedenti, sono state apportate anche alcune modifiche secondarie all'interfaccia API in questa versione disponibile a livello generale.
Nelle versioni beta precedenti, pairRttInMs
, availableBitrate
sono stati inclusi nelle statistiche audio, video e screenShare. Ora queste metriche sono separate in metriche di trasporto.
Sono stati introdotti packets
i packetsLost
campi delle metriche e audio, video, screenShare statistics. Queste metriche sono utili per calcolare il numero totale di pacchetti inviati o ricevuti tra due diversi punti di tempo.
Le frameRateOutput
statistiche in video e screenShare vengono rimosse. È invece possibile usare frameRateDecoded
.
Il campo jitterBufferInMs
della metrica viene rinominato in jitterBufferDelayInMs
per fornire una descrizione più chiara, perché questa metrica indica la durata di un periodo di memorizzazione di un pacchetto nel buffer di instabilità.
Statistiche sulla qualità dei supporti per una chiamata in corso
Le statistiche sulla qualità dei supporti sono una funzionalità estesa dell'API principale Call
. È prima necessario ottenere l'oggetto MediaStatisticsCallFeature
API:
MediaStatisticsCallFeature mediaStatisticsCallFeature = call.feature(Features.MEDIA_STATISTICS);
L'oggetto MediaStatisticsCallFeature
ha la struttura API seguente:
- L'evento
OnReportReceivedListener
è in ascolto dei report periodici delle statistiche dei media. getReportIntervalInSeconds
ottiene l'intervallo, espresso in secondi, della generazione del report delle statistiche multimediali. L'SDK usa10
il secondo come impostazione predefinita.updateReportIntervalInSeconds()
aggiorna l'intervallo, in secondi, della generazione del report sulle statistiche multimediali. L'SDK usa10
il secondo come impostazione predefinita.- Contiene
MediaStatisticsReport
la definizione delle statistiche multimediali in uscita e in ingresso, classificate in base a audio, video e condivisione dello schermo.getOutgoingStatistics()
: elenco di statistiche multimediali per i supporti in uscita.getAudioStatistics()
: elenco di statistiche multimediali per l'audio in uscita.getVideoStatistics()
: elenco delle statistiche multimediali per i video in uscita.getScreenShareStatistics()
: elenco di statistiche multimediali per la condivisione schermo in uscita.getDataChannelStatistics()
: elenco di statistiche multimediali per il canale dati.
getIncomingStatistics()
: elenco di statistiche multimediali per i supporti in ingresso.getAudioStatistics()
: elenco di statistiche multimediali per l'audio in ingresso.getVideoStatistics()
: elenco di statistiche multimediali per il video in ingresso.getScreenShareStatistics()
: elenco di statistiche multimediali per la condivisione dello schermo in ingresso.getDataChannelStatistics()
: elenco di statistiche multimediali per il canale dati.
getLastUpdatedAt()
: data di generazione del report.
Quindi, sottoscrivere l'evento addOnReportReceivedListener
per ottenere aggiornamenti regolari sulle statistiche sulla qualità dei supporti correnti:
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();
}
Procedure consigliate
Se si vogliono raccogliere i dati per l'ispezione offline, è consigliabile raccogliere i dati e inviarli all'inserimento della pipeline al termine della chiamata. Se si trasmettono i dati durante una chiamata, potrebbe usare la larghezza di banda Internet necessaria per continuare una chiamata Servizi di comunicazione di Azure (soprattutto quando la larghezza di banda disponibile è bassa).
Metriche audio in uscita
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
BitrateInBps |
Velocità in bit di trasmissione audio (bit al secondo) | I valori generali sono compresi nell'intervallo da 24 Kbps (36-128 Kbps è tipico). |
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. |
Metriche audio in ingresso
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. | |
PacketsLostPerSecond |
Frequenza di perdita dei pacchetti (pacchetti al secondo) | È preferibile un valore basso. |
Metriche video in uscita
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
BitrateInBps |
Velocità in bit di trasmissione video (bit al secondo) | |
PacketCount |
Numero totale di pacchetti inviati. | |
FrameRate |
Frequenza dei fotogrammi inviata nel flusso RTP (fotogrammi al secondo) | |
FrameWidth |
Larghezza del frame codificato (pixel) | |
FrameHeight |
Altezza del frame codificato (pixel) |
Metriche video in ingresso
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
BitrateInBps |
Velocità in bit di ricezione video (bit al secondo) | |
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. | |
PacketsLostPerSecond |
Frequenza di perdita dei pacchetti (pacchetti al secondo) | È preferibile un valore basso. |
StreamId |
ID flusso | Il streamId valore corrisponde all'ID del video del partecipante remoto. Può essere usato per trovare la corrispondenza con il mittente. |
FrameRate |
Frequenza dei fotogrammi ricevuta nel flusso RTP (fotogrammi al secondo) | |
FrameWidth |
Larghezza del frame decodificato (pixel) | |
FrameHeight |
Altezza del frame decodificato (pixel) | |
TotalFreezeDurationInMs |
Durata totale del blocco (millisecondi) |
Metriche di condivisione dello schermo in uscita
Attualmente, i campi delle statistiche corrispondono alle metriche video in uscita.
Metriche di condivisione schermata in ingresso
Attualmente, i campi delle statistiche corrispondono alle metriche video in ingresso.
Metriche del canale dati in uscita
Nome metrica | Descrizione | Commenti |
---|---|---|
PacketCount |
Numero totale di pacchetti inviati. |
Metriche del canale dati in ingresso
Nome metrica | Descrizione | Commenti |
---|---|---|
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. |
Statistiche sulla qualità dei supporti per una chiamata in corso
Le statistiche sulla qualità dei supporti sono una funzionalità estesa dell'API principale Call
. È prima necessario ottenere l'oggetto mediaStatisticsCallFeature
API:
var mediaStatisticsCallFeature = self.call.feature(Features.mediaStatistics)
L'oggetto mediaStatisticsCallFeature
ha la struttura API seguente:
- Il
didReceiveReport
metodo delegato è in ascolto dei report periodici delle statistiche dei media. reportIntervalInSeconds
ottiene l'intervallo, espresso in secondi, della generazione del report delle statistiche multimediali. L'SDK usa10
il secondo come impostazione predefinita.updateReportInterval(inSeconds)
aggiorna l'intervallo, in secondi, della generazione del report sulle statistiche multimediali. L'SDK usa10
il secondo come impostazione predefinita.- Un
MediaStatisticsReport
oggetto contiene la definizione delle statistiche multimediali in uscita e in ingresso, classificate per audio, video e condivisione dello schermo.outgoingMediaStatistics
: elenco di statistiche multimediali per i supporti in uscita.audio
: elenco di statistiche multimediali per l'audio in uscita.video
: elenco di statistiche multimediali per il video in uscita.screenShare
: elenco di statistiche multimediali per la condivisione schermo in uscita.dataChannel
: elenco di statistiche multimediali per il canale dati in uscita.
incomingMediaStatistics
: elenco di statistiche multimediali per i supporti in ingresso.audio
: elenco di statistiche multimediali per l'audio in ingresso.video
: elenco di statistiche multimediali per il video in ingresso.screenShare
: elenco di statistiche multimediali per la condivisione di schermata in ingresso.dataChannel
: elenco di statistiche multimediali per il canale dati in ingresso.
lastUpdated
: data di generazione del report.
Implementare quindi il didReceiveReport
delegato per ottenere aggiornamenti regolari sulle statistiche di qualità dei supporti correnti:
// 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
}
}
Procedure consigliate
Se si vogliono raccogliere i dati per l'ispezione offline, è consigliabile raccogliere i dati e inviarli all'inserimento della pipeline al termine della chiamata. Se si trasmettono i dati durante una chiamata, potrebbe usare la larghezza di banda Internet necessaria per continuare una chiamata Servizi di comunicazione di Azure (soprattutto quando la larghezza di banda disponibile è bassa).
Metriche audio in uscita
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
BitrateInBps |
Velocità in bit di trasmissione audio (bit al secondo) | I valori generali sono compresi nell'intervallo da 24 Kbps (36-128 Kbps è tipico). |
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. |
Metriche audio in ingresso
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. | |
PacketsLostPerSecond |
Frequenza di perdita dei pacchetti (pacchetti al secondo) | È preferibile un valore basso. |
Metriche video in uscita
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
BitrateInBps |
Velocità in bit di trasmissione video (bit al secondo) | |
PacketCount |
Numero totale di pacchetti inviati. | |
FrameRate |
Frequenza dei fotogrammi inviata nel flusso RTP (fotogrammi al secondo) | |
FrameWidth |
Larghezza del frame codificato (pixel) | |
FrameHeight |
Altezza del frame codificato (pixel) |
Metriche video in ingresso
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
BitrateInBps |
Velocità in bit di ricezione video (bit al secondo) | |
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. | |
PacketsLostPerSecond |
Frequenza di perdita dei pacchetti (pacchetti al secondo) | È preferibile un valore basso. |
StreamId |
ID flusso | Il streamId valore corrisponde all'ID del video del partecipante remoto. Può essere usato per trovare la corrispondenza con il mittente. |
FrameRate |
Frequenza dei fotogrammi ricevuta nel flusso RTP (fotogrammi al secondo) | |
FrameWidth |
Larghezza del frame decodificato (pixel) | |
FrameHeight |
Altezza del frame decodificato (pixel) | |
TotalFreezeDurationInMs |
Durata totale del blocco (millisecondi) |
Metriche di condivisione dello schermo in uscita
Attualmente, i campi delle statistiche corrispondono alle metriche video in uscita.
Metriche di condivisione schermata in ingresso
Attualmente, i campi delle statistiche corrispondono alle metriche video in ingresso.
Metriche del canale dati in uscita
Nome metrica | Descrizione | Commenti |
---|---|---|
PacketCount |
Numero totale di pacchetti inviati. |
Metriche del canale dati in ingresso
Nome metrica | Descrizione | Commenti |
---|---|---|
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. |
Statistiche sulla qualità dei supporti per una chiamata in corso
Le statistiche sulla qualità dei supporti sono una funzionalità estesa dell'API principale CommunicationCall
. È prima necessario ottenere l'oggetto MediaStatisticsCallFeature
API:
MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;
L'oggetto MediaStatisticsCallFeature
feature ha la struttura API seguente:
- L'evento
ReportReceived
è in ascolto dei report periodici delle statistiche dei media. ReportIntervalInSeconds
ottiene l'intervallo, espresso in secondi, della generazione del report delle statistiche multimediali. L'SDK usa10
il secondo come impostazione predefinita.UpdateReportIntervalInSeconds()
aggiorna l'intervallo, in secondi, della generazione del report sulle statistiche multimediali. L'SDK usa10
il secondo come impostazione predefinita.- Un
MediaStatisticsReport
oggetto contiene la definizione delle statistiche multimediali in uscita e in ingresso, classificate per audio, video e condivisione dello schermo.OutgoingMediaStatistics
: elenco di statistiche multimediali per i supporti in uscita.Audio
: elenco di statistiche multimediali per l'audio in uscita.Video
: elenco di statistiche multimediali per il video in uscita.ScreenShare
: elenco di statistiche multimediali per la condivisione schermo in uscita.DataChannel
: elenco di statistiche multimediali per il canale dati in uscita.
IncomingMediaStatistics
: elenco di statistiche multimediali per i supporti in ingresso.Audio
: elenco di statistiche multimediali per l'audio in ingresso.Video
: elenco di statistiche multimediali per il video in ingresso.ScreenShare
: elenco di statistiche multimediali per la condivisione di schermata in ingresso.DataChannel
: elenco di statistiche multimediali per il canale dati in ingresso.
LastUpdateAt
: data di generazione del report.
Quindi, sottoscrivere l'evento SampleReported
per ottenere aggiornamenti regolari sulle statistiche sulla qualità dei supporti correnti:
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;
}
Procedure consigliate
Se si vogliono raccogliere i dati per l'ispezione offline, è consigliabile raccogliere i dati e inviarli all'inserimento della pipeline al termine della chiamata. Se si trasmettono i dati durante una chiamata, potrebbe usare la larghezza di banda Internet necessaria per continuare una chiamata Servizi di comunicazione di Azure (soprattutto quando la larghezza di banda disponibile è bassa).
Metriche audio in uscita
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
BitrateInBps |
Velocità in bit di trasmissione audio (bit al secondo) | I valori generali sono compresi nell'intervallo da 24 Kbps (36-128 Kbps è tipico). |
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. |
Metriche audio in ingresso
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. | |
PacketsLostPerSecond |
Frequenza di perdita dei pacchetti (pacchetti al secondo) | È preferibile un valore basso. |
Metriche video in uscita
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
BitrateInBps |
Velocità in bit di trasmissione video (bit al secondo) | |
PacketCount |
Numero totale di pacchetti inviati. | |
FrameRate |
Frequenza dei fotogrammi inviata nel flusso RTP (fotogrammi al secondo) | |
FrameWidth |
Larghezza del frame codificato (pixel) | |
FrameHeight |
Altezza del frame codificato (pixel) |
Metriche video in ingresso
Nome metrica | Descrizione | Commenti |
---|---|---|
CodecName |
Nome codec | |
BitrateInBps |
Velocità in bit di ricezione video (bit al secondo) | |
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. | |
PacketsLostPerSecond |
Frequenza di perdita dei pacchetti (pacchetti al secondo) | È preferibile un valore basso. |
StreamId |
ID flusso | Il streamId valore corrisponde all'ID del video del partecipante remoto. Può essere usato per trovare la corrispondenza con il mittente. |
FrameRate |
Frequenza dei fotogrammi ricevuta nel flusso RTP (fotogrammi al secondo) | |
FrameWidth |
Larghezza del frame decodificato (pixel) | |
FrameHeight |
Altezza del frame decodificato (pixel) | |
TotalFreezeDurationInMs |
Durata totale del blocco (millisecondi) |
Metriche di condivisione dello schermo in uscita
Attualmente, i campi delle statistiche corrispondono alle metriche video in uscita.
Metriche di condivisione schermata in ingresso
Attualmente, i campi delle statistiche corrispondono alle metriche video in ingresso.
Metriche del canale dati in uscita
Nome metrica | Descrizione | Commenti |
---|---|---|
PacketCount |
Numero totale di pacchetti inviati. |
Metriche del canale dati in ingresso
Nome metrica | Descrizione | Commenti |
---|---|---|
JitterInMs |
Jitter dei pacchetti (millisecondi) | È preferibile un valore basso. |
PacketCount |
Numero totale di pacchetti inviati. |