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
= 1dataPointsPerAggregation
= 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
= 60dataPointsPerAggregation
= 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) utilise10
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) utilise10
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) utilise10
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) utilise10
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) utilise10
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) utilise10
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. |