Observabilité du client : React Native

Le SDK React Native expose des mesures détaillées de la qualité du flux par le biais d'une API de statistiques de haut niveau - recommandée pour la plupart des cas d'utilisation - qui fournit des statistiques audio, vidéo, réseau et côté expéditeur sous une forme unifiée et consciente de la session, qui reste stable lors des transitions de connexion entre pairs. Pour le débogage avancé, le SDK permet également d'accéder au rapport de statistiques WebRTC brut, qui reflète les données de connexion entre pairs non traitées.

API pour les statistiques audio et vidéo

Le SDK React Native envoie des statistiques réseau audio et vidéo périodiques pour les éditeurs et les abonnés. Ces statistiques comprennent le nombre de paquets, les débits binaires, les données relatives à la fréquence d'images, les mesures de pause et de gel, les informations sur les codecs et l'estimation facultative du réseau du côté de l'expéditeur.

Obtenir des statistiques pour un éditeur

Les Événement PublisherAudioNetworkStats et Événement PublisherVideoNetworkStats vous fournissent un tableau d'objets d'objets définissant les statistiques audio-vidéo actuelles de l'éditeur. Pour un éditeur dans une session acheminée (qui utilise la fonction OpenTok Routeur média), ce tableau comprend un objet, définissant les statistiques pour un seul flux audio-vidéo envoyé au routeur vidéo de Vonage. le flux audio-vidéo unique envoyé au routeur vidéo de Vonage. Dans une session relayée, le tableau comprend un objet pour chaque abonné au flux publié.

Le code suivant enregistre certaines mesures pour le flux de l'éditeur :

<OTPublisher
  eventHandlers={{
    audioNetworkStats: event => {
      console.log('publisher audioNetworkStats event', event);
    },
    videoNetworkStats: event => {
      console.log('publisher videoNetworkStats event', event);
    },
  }}
/>

Obtenir des statistiques pour un abonné

Les AudioNetworkStats et Événement VideoNetworkStats vous fournissent des informations sur le flux de l'abonné. de l'abonné.

Le code suivant enregistre plusieurs mesures pour le flux de l'abonné :

<OTSubscriber
  eventHandlers={{
    audioNetworkStats: event => {
      console.log('subscriber audioNetworkStats event', event);
    },
    videoNetworkStats: event => {
      console.log('subscriber videoNetworkStats event', event);
    },
  }}
/>

Statistiques Structures de données

Cette section présente les objets et les propriétés fournis par l'API de statistiques audio et vidéo. Bien que toutes les plates-formes SDK vidéo exposent le même ensemble de statistiques, il peut y avoir des différences mineures dans la façon dont chaque plate-forme structure ou nomme les champs individuels. Ces variations reflètent les conventions de conception des SDK spécifiques à chaque plateforme plutôt que des différences dans les mesures sous-jacentes.

Pour une explication indépendante de la plate-forme des statistiques disponibles et de ce qu'elles représentent, voir aperçu de l'observabilité du client.

Statistiques de l'éditeur

Fournit des statistiques sur un éditeur.

Statistiques audio de l'éditeur (PublisherAudioNetworkStatsEvent)

Fournit des statistiques sur la piste audio d'un éditeur.

  • connectionId - L'identifiant unique de la connexion du client, qui correspond à la propriété id de la balise connection de la propriété connectionCreated que l'objet Session a envoyé au client distant (disponible uniquement dans les sessions relayées).
  • subscriberId - L'identifiant unique de l'abonné, qui correspond à la propriété id de l'élément Subscriber dans l'application du client abonné (disponible uniquement dans les sessions relayées).
  • audioBytesSent - Nombre total d'octets audio envoyés.
  • audioPacketsLost - Total des paquets audio qui n'ont pas atteint l'abonné ou le routeur média.
  • audioPacketsSent - Total des paquets audio envoyés.
  • timeStamp - Horodatage Unix (ms) du moment où les statistiques ont été recueillies.

Statistiques vidéo de l'éditeur (PublisherVideoNetworkStatsEvent)

Ces champs représentent la performance vidéo actuelle de l'éditeur :

  • connectionId - L'identifiant unique de la connexion du client, qui correspond à la propriété id de la balise connection de la propriété connectionCreated que l'objet Session a envoyé au client distant (disponible uniquement dans les sessions relayées).
  • subscriberId - L'identifiant unique de l'abonné, qui correspond à la propriété id de l'élément Subscriber dans l'application du client abonné (disponible uniquement dans les sessions relayées).
  • videoBytesSent - Nombre total d'octets vidéo envoyés.
  • videoPacketsLost - Total des paquets vidéo qui n'ont pas atteint l'abonné ou le routeur média.
  • videoPacketsSent - Total des paquets vidéo envoyés.
  • timestamp - Horodatage Unix (ms) du moment où les statistiques ont été recueillies.

Statistiques audio des abonnés (AudioNetworkStats)

Fournit des statistiques sur la piste audio d'un abonné.

  • audioBytesReceived - Nombre total d'octets audio reçus.
  • audioPacketsLost - Total des paquets audio qui n'ont pas atteint l'abonné.
  • audioPacketsReceived - Total des paquets audio reçus avec succès.
  • timeStamp - Horodatage Unix (ms) du moment où ces statistiques ont été recueillies.

Statistiques vidéo des abonnés (VideoNetworkStatsEvent)

Ces champs décrivent les performances de réception et de décodage vidéo en temps réel de l'abonné :

  • videoBytesReceived - Nombre total d'octets vidéo reçus.
  • videoPacketsLost - Total des paquets vidéo qui n'ont pas atteint l'abonné.
  • videoPacketsReceived - Total des paquets vidéo reçus.
  • timestamp - Horodatage Unix (ms) du moment où les statistiques ont été recueillies.

Les mesures suivantes fournissent des estimations de la largeur de bande pour la connexion sortante de l'expéditeur :

  • senderStats.connectionMaxAllocatedBitrate - Débit maximum alloué estimé pour l'émetteur (bps).
  • senderStats.connectionEstimatedBandwidth - Largeur de bande estimée de la liaison montante pour l'émetteur (bps).

Statistiques côté expéditeur

Voir le aperçu des statistiques côté expéditeur.

Activation des statistiques côté expéditeur

Les statistiques côté émetteur sont reçues par les abonnés. Pour recevoir les statistiques côté expéditeur, activez-les pour l'éditeur du flux en passant l'attribut publishSenderStats est définie comme étant la propriété true dans les propriétés de l'éditeur :

class App extends Component {
  constructor(props) {
    super(props);

    this.publisherProperties = {
      publishSenderStats: true
    };

    this.publisherEventHandlers = {
      streamCreated: event => {
        console.log('Publisher stream created!', event);
      },
      streamDestroyed: event => {
        console.log('Publisher stream destroyed!', event);
      }
    };
  }

  render() {
    return (
      <OTSession apiKey="your-api-key" sessionId="your-session-id" token="your-session-token">
        <OTPublisher
          properties={this.publisherProperties}
          eventHandlers={this.publisherEventHandlers}
          style={{ height: 100, width: 100 }}
        />
      </OTSession>
    );
  }
}

Si publishSenderStats n'est pas activé, aucun canal de statistiques sur les expéditeurs ne sera publié pour cet éditeur. La valeur par défaut est false.

Abonnement aux statistiques côté expéditeur

Les abonnés ne reçoivent automatiquement les statistiques de l'expéditeur que si l'éditeur les a activées.

Aucun événement ou méthode supplémentaire n'est nécessaire ; les statistiques relatives à l'expéditeur sont incluses dans la base de données existante des Événement VideoNetworkStats objet de l'événement.

Statistiques de réception Événements

Les statistiques du côté de l'expéditeur sont incluses en tant qu'élément facultatif. senderStats à l'intérieur de l'objet passé à la fonction videoNetworkStats callback. Les senderStats contient deux propriétés :

  • connectionMaxAllocatedBitrate - Le débit maximum qui peut être estimé pour la connexion (en bits par seconde)
  • connectionEstimatedBandwidth - Largeur de bande actuelle estimée pour la connexion (en bits par seconde)
<OTSubscriber
  eventHandlers={{
    videoNetworkStats: event => {
      if (event.senderStats) {
        console.log('subscriber videoNetworkStats event', event.senderStats.connectionMaxAllocatedBitrate);
        console.log('subscriber videoNetworkStats event', event.senderStats.connectionEstimatedBandwidth);
      }
    }
  }}
/>

Rapport statistique RTC

Pour obtenir des statistiques de bas niveau sur les connexions entre pairs pour un éditeur, utilisez la commande OTPublisher.getRtcStatsReport() méthode. En réponse à l'appel de la méthode OTPublisher.getRtcStatsReport() méthode l'éditeur rtcStatsReport est invoqué. Voir l'article Événement PublisherRtcStatsReport pour plus d'informations.

<OTPublisher
  eventHandlers={{
    rtcStatsReport: event => {
      console.log('publisher rtcStatsReport event', event);
    }
  }}

Pour obtenir des statistiques de bas niveau sur les connexions entre pairs pour un abonné, utilisez la commande OTSubscriber.getRtcStatsReport() méthode. En réponse à l'appel de la méthode OTSubscriber.getRtcStatsReport() l'abonné rtcStatsReport est invoqué. Voir l'article Événement SubscriberRTCStatsReport pour plus d'informations.

<OTSubscriber
  eventHandlers={{
    rtcStatsReport: event => {
      console.log('subscriber rtcStatsReport event', event);
    }
  }}