Statistiques de qualité des médias

Pour vous permettre de comprendre la qualité des médias dans les appels vidéo et VoIP qui utilisent Azure Communication Services, il existe une fonctionnalité nommée statistiques de qualité multimédia. Utilisez-la pour examiner les métriques de qualité audio, vidéo et de partage d’écran de bas niveau pour les métriques des appels entrants et sortants.

Statistiques de qualité des médias pour un appel entrant

Important

Il existe une mise à jour d’interface sur les statistiques de qualité des médias dans le Kit de développement logiciel (SDK), en commençant par la version 1.20.1 du Kit de développement logiciel (SDK)

Les statistiques de qualité des médias sont une fonctionnalité étendue de l’API Call de base. Vous devez d’abord obtenir l’objet d’API mediaStatsFeature :

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

Pour recevoir les données sur les statistiques des médias, vous pouvez vous abonner à l’événement sampleReported ou summaryReported.

L’événement sampleReported se déclenche toutes les secondes. Ils sont appropriés comme sources de données pour l’affichage de l’interface utilisateur ou de votre propre pipeline de données.

L’événement summaryReported contient les valeurs agrégées des données sur des intervalles, ce qui peut être utile lorsque vous n’avez besoin que d’un résumé.

Si vous souhaitez contrôler l’intervalle de l’événement summaryReported, vous devez définir mediaStatsCollectorOptions du type MediaStatsCollectorOptions. Sinon, le kit de développement logiciel (SDK) utilise des valeurs par défaut.

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);
});

Si vous n’avez pas besoin d’utiliser le collecteur de statistiques de médias, vous pouvez appeler la méthode dispose de mediaStatsCollector.

mediaStatsCollector.dispose();

Il n’est pas nécessaire d’appeler la méthode dispose de mediaStatsCollector chaque fois qu’un appel se termine, car les collecteurs sont récupérés en interne une fois l’appel terminé.

MediaStatsCollectorOptions

Les options MediaStatsCollectorOptions sont facultatives, mais il existe deux champs facultatifs dans MediaStatsCollectorOptions.

  • aggregationInterval est l’intervalle en secondes pendant lequel les statistiques sont agrégées. La valeur par défaut est 10.
  • dataPointsPerAggregation définit le nombre de points de données contenu dans chaque événement d’agrégation. La valeur par défaut est 6.

Ces deux valeurs déterminent la fréquence à laquelle le Kit de développement logiciel (SDK) émet un événement summaryReported et le nombre de points de données agrégés inclus dans le rapport.

L’événement summaryReported déclenché toutes les aggregationInterval * dataPointsPerAggregation secondes.

Par exemple, si vous définissez les valeurs suivantes :

  • aggregationInterval = 1
  • dataPointsPerAggregation = 60

L’événement summaryReported est déclenché toutes les 60 secondes et contient 60 unités uniques pour chaque statistique enregistrée.

Si vous définissez les valeurs suivantes :

  • aggregatinInterval = 60
  • dataPointsPerAggregation = 1

L’événement summaryReported est déclenché toutes les 60 secondes et contient 1 unité unique pour chaque statistique enregistrée.

Bonnes pratiques

Si vous souhaitez collecter les données pour une inspection hors ligne, nous vous recommandons de collecter les données et de les envoyer à votre ingestion de pipeline une fois votre appel terminé. Si vous transmettez les données pendant un appel, elles peuvent utiliser la bande passante Internet nécessaire à la poursuite d’un appel Azure Communication Services (en particulier lorsque la bande passante disponible est faible).

Dans un événement sampleReported ou un événement summaryReported, les données de statistiques des médias ne sont pas seulement une mise en correspondance des valeurs-clé.

Voici ici la déclaration de type des données de l’événement signalées par un événement 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>[];
}

Les données d’événement fournissent les données de statistiques pour chaque flux multimédia dans l’appel, notamment les directions d’envoi et de réception.

Nous vous recommandons d’imprimer l’événement en utilisant la console.log pour observer sa disposition et ses changements de valeur afin de trouver votre propre façon d’afficher ou de traiter les données en fonction de votre scénario d’usage.

Métriques d’envoi audio

Nom de métrique Description Commentaires
id Identificateur de statistiques Utilisées pour identifier des statistiques entre les événements, en particulier lorsqu’il existe plusieurs statistiques avec le même type de média et la même direction dans un événement.
codecName Nom du codec OPUS, G722.
bitrate Débit d’envoi audio (bits par seconde) Les valeurs générales sont comprises dans la plage de 24 kbit/s (36-128 kbit/s par défaut).
jitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
packets Nombre total de paquets envoyés.
packetsPerSecond Débit de paquets (paquets par seconde)
packetsLost Nombre total de paquets perdus signalés à partir de l’extrémité distante.
packetsLostPerSecond Taux de perte de paquets (paquets par seconde) Plus la valeur est faible, mieux c'est.
rttInMs Temps d’aller-retour (millisecondes) Plus la valeur est faible, mieux c'est. Calculé à partir du rapport du récepteur RTCP. Nous recommandons un temps d’aller-retour de 200 ms ou moins.
audioInputLevel Niveau de volume audio à partir du microphone La valeur est comprise entre 0 et 65536. Une valeur de 0 représente le silence.
transportId ID de transport Utilisé pour associer les statistiques dans les transports.

Métriques de réception audio

Dans les versions de Kit de développement logiciel (SDK) antérieures à 1.20.1, jitterBufferDelayInMs existait comme jitterBufferInMs.

Nom de métrique Description Commentaires
id Identificateur de statistiques Utilisées pour identifier des statistiques entre les événements, en particulier lorsqu’il existe plusieurs statistiques avec le même type de média et la même direction dans un événement.
codecName Nom du codec OPUS, G722.
bitrate Débit de réception audio (bps par seconde) Les valeurs générales sont comprises dans la plage de 24 kbit/s (36-128 kbit/s par défaut).
jitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
packets Nombre total de paquets reçus.
packetsPerSecond Débit de paquets (paquets par seconde)
packetsLost Nombre total de paquets perdus.
packetsLostPerSecond Taux de perte de paquets (paquets par seconde) Plus la valeur est faible, mieux c'est.
jitterBufferDelayInMs Mémoire tampon de gigue (millisecondes) Plus la valeur est faible, mieux c'est. La mémoire tampon de gigue est utilisée pour une lecture fluide. Cette valeur correspond à la durée pendant laquelle les paquets des exemples restent dans la mémoire tampon de gigue.
audioOutputLevel Niveau de volume audio à partir du flux reçu La valeur est comprise entre 0 et 65536. Une valeur de 0 représente le silence.
healedRatio Ratio d’exemples masqués (à l’exception de silentConcealedSamples) par rapport aux exemples reçus Informations uniquement.
transportId ID de transport Utilisé pour associer les statistiques dans les transports.

Métriques d’envoi vidéo

À partir du Kit de développement logiciel (SDK) version 1.20.1, les métriques d’envoi vidéo comprenaient le champ de métrique altLayouts qui permet une meilleure représentation des statistiques de flux simulcast (simultané).

Nom de métrique Description Commentaires
id Identificateur de statistiques Utilisées pour identifier des statistiques entre les événements, en particulier lorsqu’il existe plusieurs statistiques avec le même type de média et la même direction dans un événement.
codecName Nom du codec H264, VP8, VP9.
bitrate Débit d’envoi vidéo (bits par seconde)
jitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
packets Nombre total de paquets envoyés.
packetsPerSecond Débit de paquets (paquets par seconde)
packetsLost Nombre total de paquets perdus signalés à partir de l’extrémité distante.
packetsLostPerSecond Taux de perte de paquets (paquets par seconde) Plus la valeur est faible, mieux c'est.
rttInMs Temps d’aller-retour (millisecondes) Plus la valeur est faible, mieux c'est. Calculé à partir du rapport du récepteur RTCP. Nous recommandons un temps d’aller-retour de 200 ms ou moins.
frameRateInput Fréquence d’images qui provient de la source vidéo (images par seconde)
frameWidthInput Largeur de la dernière image provenant de la source vidéo (pixels)
frameHeightInput Hauteur de la dernière image provenant de la source vidéo (pixels)
framesEncoded Nombre d’images correctement encodées pour le flux RTP.
frameRateEncoded Fréquence d’images correctement encodées pour le flux RTP (images par seconde)
framesSent Nombre d’images envoyées sur le flux RTP
frameRateSent Fréquence d’images envoyées sur le flux RTP (images par seconde)
frameWidthSent Largeur l’image encodée (pixel)
frameHeightSent Hauteur de l’image encodée (pixel)
keyFramesEncoded Images clés correctement encodées pour le flux RTP
transportId ID de transport Utilisé pour associer les statistiques dans les transports.
altLayouts Flux simulcast altLayouts contient les mêmes métriques à la vidéo envoyée

Métriques de réception vidéo

Dans les versions de Kit de développement logiciel (SDK) antérieures à 1.20.1, jitterBufferDelayInMs existait en tant que jitterBufferInMs.

Nom de métrique Description Commentaires
id Identificateur de statistiques Utilisées pour identifier des statistiques entre les événements, en particulier lorsqu’il existe plusieurs statistiques avec le même type de média et la même direction dans un événement.
codecName Nom du codec H264, VP8, VP9.
bitrate Débit de réception vidéo (bits par seconde)
jitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
packets Nombre total de paquets reçus.
packetsPerSecond Débit de paquets (paquets par seconde)
packetsLost Nombre total de paquets perdus.
packetsLostPerSecond Taux de perte de paquets (paquets par seconde) Plus la valeur est faible, mieux c'est.
rttInMs Temps d’aller-retour (millisecondes) Plus la valeur est faible, mieux c'est. Calculé à partir du rapport de l’expéditeur RTCP. Nous recommandons un temps d’aller-retour de 200 ms ou moins.
streamId ID de flux La valeur streamId correspond à id dans VideoStreamCommon. Il peut être utilisé pour correspondre à l’expéditeur.
jitterBufferDelayInMs Mémoire tampon de gigue (millisecondes) Plus la valeur est faible, mieux c'est. La mémoire tampon de gigue est utilisée pour une lecture fluide. Cette valeur correspond à la durée pendant laquelle les paquets d’images restent dans la mémoire tampon de gigue.
frameRateDecoded Fréquence d’images correctement décodées pour le flux RTP (images par seconde)
frameRateReceived Fréquence d’images reçues sur le flux RTP (images par seconde)
frameWidthReceived Largeur de l’image décodée (pixel)
frameHeightReceived Hauteur de l’image décodée (pixel)
longestFreezeDurationInMs Durée de gel la plus longue (millisecondes)
totalFreezeDurationInMs Durée totale de gel (millisecondes)
framesReceived Nombre total d’images reçues sur le flux RTP
framesDecoded Nombre total d’images correctement décodées pour le flux RTP
framesDropped Nombre total d’images supprimées
keyFramesDecoded Nombre total d’images clés correctement décodées pour le flux RTP
transportId ID de transport Utilisé pour associer les statistiques dans les transports.

Métriques de partage d’écran envoyées

Actuellement, les champs de statistiques sont identiques aux métriques d’envoi vidéo.

Métriques de réception de partage d’écran

Actuellement, les champs statistiques sont identiques aux métriques de réception vidéo.

Métriques de transport

Les métriques liées au transport ont été séparées après le Kit de développement logiciel (SDK) Web ACS 1.20.1.

Dans les versions antérieures, rttInMs existait en tant que pairRttInMs dans les statistiques pour l’audio, la vidéo et le partage d’écran.

availableIncomingBitrate était availableBitrate dans les statistiques de réception pour l’audio, la vidéo et le partage d’écran.

availableOutgoingBitrate était availableBitrate dans les statistiques d’envoi pour l’audio, la vidéo et le partage d’écran.

Nom de métrique Description Commentaires
id ID de transport Utilisé pour l’association à transportId dans d’autres statistiques
rttInMs Temps d’aller-retour (millisecondes) La valeur est calculée à partir de la vérification de connectivité STUN. Nous recommandons un temps d’aller-retour de 200 ms ou moins.
availableIncomingBitrate Estimation de bande passante (bits par seconde) Il est possible que la valeur ne soit pas disponible en fonction de l’algorithme d’estimation de bande passante utilisé dans la session Web
availableOutgoingBitrate Estimation de bande passante (bits par seconde) Il est possible que la valeur ne soit pas disponible en fonction de l’algorithme d’estimation de bande passante utilisé dans la session Web

Modifications apportées au Kit de développement logiciel (SDK) version 1.20.1 (GA)

Nous prenons désormais en charge l’API de fonctionnalité MediaStats dans 1.20.1 (GA). Comparativement aux versions bêta antérieures, nous avons également apporté des modifications mineures à l’interface API dans cette version de GA.

Dans les versions bêta antérieures, pairRttInMs, availableBitrate étaient inclus dans les statistiques audio, vidéo et de partage d’écran. Ces métriques ont désormais été séparées dans des métriques de transport.

Nous avons introduit les champs de métriques packets, packetsLost dans les statistiques audio, vidéo et de partage d’écran. Ces métriques sont utiles pour calculer le nombre total de paquets envoyés ou reçus entre deux points dans le temps différents.

La frameRateOutput dans les statistiques de vidéo et de partage d’écran sont supprimées. Vous pouvez utiliser frameRateDecoded à la place.

Le nom du champ de métrique jitterBufferInMs a été remplacé par jitterBufferDelayInMs pour fournir une description plus claire, car cette métrique indique la durée pendant laquelle un paquet reste dans la mémoire tampon de gigue.

Statistiques de qualité des médias pour un appel entrant

Les statistiques de qualité des médias sont une fonctionnalité étendue de l’API Call de base. Vous devez d’abord obtenir l’objet d’API MediaStatisticsCallFeature :

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

L’objet MediaStatisticsCallFeature a la structure d’API suivante :

  • L’événement OnReportReceivedListener écoute les rapports périodiques des statistiques de médias.
  • getReportIntervalInSeconds obtient l’intervalle en secondes de la génération de rapports de statistiques de médias. Le Kit de développement logiciel (SDK) utilise 10 seconde(s) par défaut.
  • updateReportIntervalInSeconds() met à jour l’intervalle en secondes de la génération de rapports de statistiques de médias. Le Kit de développement logiciel (SDK) utilise 10 seconde(s) par défaut.
  • Un MediaStatisticsReport contient la définition des statistiques de médias entrants et sortants classées par catégorie audio, vidéo et partage d’écran.
    • getOutgoingStatistics() : liste des statistiques de médias pour les médias sortants.
      • getAudioStatistics() : liste des statistiques de médias pour l’audio sortant.
      • getVideoStatistics() : liste des statistiques de médias pour une vidéo sortante.
      • getScreenShareStatistics() : liste des statistiques de médias pour un partage d’écran sortant.
      • getDataChannelStatistics() : liste des statistiques de médias pour un canal sortant.
    • getIncomingStatistics() : liste des statistiques de médias pour un média entrant.
      • getAudioStatistics() : liste des statistiques de médias pour l’audio entrant.
      • getVideoStatistics() : liste des statistiques de médias pour la vidéo entrante.
      • getScreenShareStatistics() : liste des statistiques de médias pour un partage d’écran entrant.
      • getDataChannelStatistics() : liste des statistiques de médias pour un canal sortant.
    • getLastUpdatedAt() : date de génération du rapport.

Abonnez-vous ensuite à l’événement addOnReportReceivedListener pour obtenir des mises à jour régulières sur les statistiques de qualité des médias actuelles :

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();
}

Bonnes pratiques

Si vous souhaitez collecter les données pour une inspection hors ligne, nous vous recommandons de collecter les données et de les envoyer à votre ingestion de pipeline une fois votre appel terminé. Si vous transmettez les données pendant un appel, elles peuvent utiliser la bande passante Internet nécessaire à la poursuite d’un appel Azure Communication Services (en particulier lorsque la bande passante disponible est faible).

Métriques d’audio sortant

Nom de métrique Description Commentaires
CodecName Nom du codec
BitrateInBps Débit d’envoi audio (bits par seconde) Les valeurs générales sont comprises dans la plage de 24 kbit/s (36-128 kbit/s par défaut).
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.

Métrique d’audio entrant

Nom de métrique Description Commentaires
CodecName Nom du codec
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.
PacketsLostPerSecond Taux de perte de paquets (paquets par seconde) Plus la valeur est faible, mieux c'est.

Métriques de vidéo sortante

Nom de métrique Description Commentaires
CodecName Nom du codec
BitrateInBps Débit d’envoi vidéo (bits par seconde)
PacketCount Nombre total de paquets envoyés.
FrameRate Fréquence d’images envoyées sur le flux RTP (images par seconde)
FrameWidth Largeur de l’image encodée (pixels)
FrameHeight Hauteur de l’image encodée (pixels)

Métriques de vidéo entrante

Nom de métrique Description Commentaires
CodecName Nom du codec
BitrateInBps Débit de réception vidéo (bits par seconde)
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.
PacketsLostPerSecond Taux de perte de paquets (paquets par seconde) Plus la valeur est faible, mieux c'est.
StreamId ID de flux La valeur streamId correspond à l’ID de la vidéo du participant distant. Il peut être utilisé pour correspondre à l’expéditeur.
FrameRate Fréquence d’images reçues sur le flux RTP (images par seconde)
FrameWidth Largeur de l’image décodée (pixels)
FrameHeight Hauteur de l’image décodée (pixels)
TotalFreezeDurationInMs Durée totale de gel (millisecondes)

Métriques de partage d’écran sortant

Actuellement, les champs de statistiques sont identiques aux Métriques de vidéo sortante.

Métriques de partage d’écran entrant

Actuellement, les champs statistiques sont identiques aux Métriques de vidéo entrante.

Métriques de canal de données sortant

Nom de métrique Description Commentaires
PacketCount Nombre total de paquets envoyés.

Métriques de canal de données entrant

Nom de métrique Description Commentaires
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.

Statistiques de qualité des médias pour un appel entrant

Les statistiques de qualité des médias sont une fonctionnalité étendue de l’API Call de base. Vous devez d’abord obtenir l’objet d’API mediaStatisticsCallFeature :

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

L’objet mediaStatisticsCallFeature a la structure d’API suivante :

  • La méthode déléguée didReceiveReport écoute les rapports périodiques des statistiques de médias.
  • reportIntervalInSeconds obtient l’intervalle en secondes de la génération de rapports de statistiques de médias. Le Kit de développement logiciel (SDK) utilise 10 seconde(s) par défaut.
  • updateReportInterval(inSeconds) met à jour l’intervalle en secondes de la génération de rapports de statistiques de médias. Le Kit de développement logiciel (SDK) utilise 10 seconde(s) par défaut.
  • Un objet MediaStatisticsReport contient la définition des statistiques de médias entrants et sortants classées par catégorie audio, vidéo et partage d’écran.
    • outgoingMediaStatistics : liste des statistiques de médias pour les médias sortants.
      • audio : liste des statistiques de médias pour l’audio sortant.
      • video : liste des statistiques de médias pour la vidéo sortante.
      • screenShare : liste des statistiques de médias pour le partage d’écran sortant.
      • dataChannel : liste des statistiques de médias pour le canal de données sortant.
    • incomingMediaStatistics : liste des statistiques de médias pour un média entrant.
      • audio : liste des statistiques de médias pour l’audio entrant.
      • video : liste des statistiques de médias pour la vidéo entrante.
      • screenShare : liste des statistiques de médias pour le partage d’écran entrant.
      • dataChannel : liste des statistiques de médias pour le canal de données entrant.
    • lastUpdated : date à laquelle le rapport a été généré.

Implémentez ensuite le délégué didReceiveReport pour obtenir des mises à jour régulières sur les statistiques de qualité des médias actuelles :

// 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
    }
}

Bonnes pratiques

Si vous souhaitez collecter les données pour une inspection hors ligne, nous vous recommandons de collecter les données et de les envoyer à votre ingestion de pipeline une fois votre appel terminé. Si vous transmettez les données pendant un appel, elles peuvent utiliser la bande passante Internet nécessaire à la poursuite d’un appel Azure Communication Services (en particulier lorsque la bande passante disponible est faible).

Métriques d’audio sortant

Nom de métrique Description Commentaires
CodecName Nom du codec
BitrateInBps Débit d’envoi audio (bits par seconde) Les valeurs générales sont comprises dans la plage de 24 kbit/s (36-128 kbit/s par défaut).
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.

Métrique d’audio entrant

Nom de métrique Description Commentaires
CodecName Nom du codec
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.
PacketsLostPerSecond Taux de perte de paquets (paquets par seconde) Plus la valeur est faible, mieux c'est.

Métriques de vidéo sortante

Nom de métrique Description Commentaires
CodecName Nom du codec
BitrateInBps Débit d’envoi vidéo (bits par seconde)
PacketCount Nombre total de paquets envoyés.
FrameRate Fréquence d’images envoyées sur le flux RTP (images par seconde)
FrameWidth Largeur de l’image encodée (pixels)
FrameHeight Hauteur de l’image encodée (pixels)

Métriques de vidéo entrante

Nom de métrique Description Commentaires
CodecName Nom du codec
BitrateInBps Débit de réception vidéo (bits par seconde)
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.
PacketsLostPerSecond Taux de perte de paquets (paquets par seconde) Plus la valeur est faible, mieux c'est.
StreamId ID de flux La valeur streamId correspond à l’ID de la vidéo du participant distant. Il peut être utilisé pour correspondre à l’expéditeur.
FrameRate Fréquence d’images reçues sur le flux RTP (images par seconde)
FrameWidth Largeur de l’image décodée (pixels)
FrameHeight Hauteur de l’image décodée (pixels)
TotalFreezeDurationInMs Durée totale de gel (millisecondes)

Métriques de partage d’écran sortant

Actuellement, les champs de statistiques sont identiques aux Métriques de vidéo sortante.

Métriques de partage d’écran entrant

Actuellement, les champs statistiques sont identiques aux Métriques de vidéo entrante.

Métriques de canal de données sortant

Nom de métrique Description Commentaires
PacketCount Nombre total de paquets envoyés.

Métriques de canal de données entrant

Nom de métrique Description Commentaires
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.

Statistiques de qualité des médias pour un appel entrant

Les statistiques de qualité des médias sont une fonctionnalité étendue de l’API CommunicationCall de base. Vous devez d’abord obtenir l’objet d’API MediaStatisticsCallFeature :

MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;

L’objet de fonctionnalité MediaStatisticsCallFeature a la structure d’API suivante :

  • L’événement ReportReceived écoute les rapports périodiques des statistiques de médias.
  • ReportIntervalInSeconds obtient l’intervalle en secondes de la génération de rapports de statistiques de médias. Le Kit de développement logiciel (SDK) utilise 10 seconde(s) par défaut.
  • UpdateReportIntervalInSeconds() met à jour l’intervalle en secondes de la génération de rapports de statistiques de médias. Le Kit de développement logiciel (SDK) utilise 10 seconde(s) par défaut.
  • Un objet MediaStatisticsReport contient la définition des statistiques de médias entrants et sortants classées par catégorie audio, vidéo et partage d’écran.
    • OutgoingMediaStatistics : liste des statistiques de médias pour les médias sortants.
      • Audio : liste des statistiques de médias pour l’audio sortant.
      • Video : liste des statistiques de médias pour la vidéo sortante.
      • ScreenShare : liste des statistiques de médias pour le partage d’écran sortant.
      • DataChannel : liste des statistiques de médias pour le canal de données sortant.
    • IncomingMediaStatistics : liste des statistiques de médias pour un média entrant.
      • Audio : liste des statistiques de médias pour l’audio entrant.
      • Video : liste des statistiques de médias pour la vidéo entrante.
      • ScreenShare : liste des statistiques de médias pour le partage d’écran entrant.
      • DataChannel : liste des statistiques de médias pour le canal de données entrant.
    • LastUpdateAt : date de génération du rapport.

Abonnez-vous ensuite à l’événement SampleReported pour obtenir des mises à jour régulières sur les statistiques de qualité des médias actuelles :

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;
}

Bonnes pratiques

Si vous souhaitez collecter les données pour une inspection hors ligne, nous vous recommandons de collecter les données et de les envoyer à votre ingestion de pipeline une fois votre appel terminé. Si vous transmettez les données pendant un appel, elles peuvent utiliser la bande passante Internet nécessaire à la poursuite d’un appel Azure Communication Services (en particulier lorsque la bande passante disponible est faible).

Métriques d’audio sortant

Nom de métrique Description Commentaires
CodecName Nom du codec
BitrateInBps Débit d’envoi audio (bits par seconde) Les valeurs générales sont comprises dans la plage de 24 kbit/s (36-128 kbit/s par défaut).
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.

Métrique d’audio entrant

Nom de métrique Description Commentaires
CodecName Nom du codec
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.
PacketsLostPerSecond Taux de perte de paquets (paquets par seconde) Plus la valeur est faible, mieux c'est.

Métriques de vidéo sortante

Nom de métrique Description Commentaires
CodecName Nom du codec
BitrateInBps Débit d’envoi vidéo (bits par seconde)
PacketCount Nombre total de paquets envoyés.
FrameRate Fréquence d’images envoyées sur le flux RTP (images par seconde)
FrameWidth Largeur de l’image encodée (pixels)
FrameHeight Hauteur de l’image encodée (pixels)

Métriques de vidéo entrante

Nom de métrique Description Commentaires
CodecName Nom du codec
BitrateInBps Débit de réception vidéo (bits par seconde)
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.
PacketsLostPerSecond Taux de perte de paquets (paquets par seconde) Plus la valeur est faible, mieux c'est.
StreamId ID de flux La valeur streamId correspond à l’ID de la vidéo du participant distant. Il peut être utilisé pour correspondre à l’expéditeur.
FrameRate Fréquence d’images reçues sur le flux RTP (images par seconde)
FrameWidth Largeur de l’image décodée (pixels)
FrameHeight Hauteur de l’image décodée (pixels)
TotalFreezeDurationInMs Durée totale de gel (millisecondes)

Métriques de partage d’écran sortant

Actuellement, les champs de statistiques sont identiques aux Métriques de vidéo sortante.

Métriques de partage d’écran entrant

Actuellement, les champs statistiques sont identiques aux Métriques de vidéo entrante.

Métriques de canal de données sortant

Nom de métrique Description Commentaires
PacketCount Nombre total de paquets envoyés.

Métriques de canal de données entrant

Nom de métrique Description Commentaires
JitterInMs Gigue de paquets (millisecondes) Plus la valeur est faible, mieux c'est.
PacketCount Nombre total de paquets envoyés.