Condividi tramite


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 = 1
  • dataPointsPerAggregation = 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 = 60
  • dataPointsPerAggregation = 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 usa 10 il secondo come impostazione predefinita.
  • updateReportIntervalInSeconds() aggiorna l'intervallo, in secondi, della generazione del report sulle statistiche multimediali. L'SDK usa 10 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 usa 10 il secondo come impostazione predefinita.
  • updateReportInterval(inSeconds) aggiorna l'intervallo, in secondi, della generazione del report sulle statistiche multimediali. L'SDK usa 10 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 usa 10 il secondo come impostazione predefinita.
  • UpdateReportIntervalInSeconds() aggiorna l'intervallo, in secondi, della generazione del report sulle statistiche multimediali. L'SDK usa 10 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.