Client-Beobachtbarkeit: React Native

Das React Native SDK stellt detaillierte Metriken zur Stream-Qualität über eine High-Level-Statistik-API zur Verfügung, die für die meisten Anwendungsfälle empfohlen wird und die Audio-, Video-, Netzwerk- und Absenderstatistiken in einer einheitlichen, sitzungsspezifischen Form bereitstellt, die über Peer-Verbindungsübergänge hinweg stabil bleibt. Für fortgeschrittenes Debugging bietet das SDK auch Zugriff auf den rohen WebRTC-Statistikbericht, der unverarbeitete Peer-Verbindungsdaten wiedergibt.

Audio- und Video-API für Statistiken

Das React Native SDK sendet regelmäßig Audio- und Videonetzwerkstatistiken sowohl für Publisher als auch für Subscriber. Dazu gehören die Anzahl der Pakete, Bitraten, Frame-Rate-Daten, Pausen-/Freeze-Metriken, Codec-Informationen und optionale senderseitige Netzwerkschätzungen.

Statistiken für einen Verlag erhalten

Die PublisherAudioNetworkStatsEvent und PublisherVideoNetworkStatsEvent Ereignisse liefern Ihnen ein Array von Objekten, die die aktuellen Audio-Video-Statistiken für den Herausgeber definieren. Für einen Publisher in einer gerouteten Sitzung (einer, die die OpenTok Medien-Router), enthält dieses Array ein Objekt, das die Statistiken für den einzelnen Audio-Video-Stream, der an den Vonage Video Media Router gesendet wird. In einer weitergeleiteten Sitzung, enthält das Array ein Objekt für jeden Teilnehmer des veröffentlichten Streams.

Der folgende Code protokolliert einige Metriken für den Stream des Herausgebers:

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

Abrufen von Statistiken für einen Abonnenten

Die AudioNetworkStats und VideoNetworkStatsEvent Ereignisse liefern Ihnen Informationen über den den Stream des Abonnenten.

Der folgende Code protokolliert mehrere Metriken für den Stream des Abonnenten:

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

Statistik-Datenstrukturen

In diesem Abschnitt werden die Objekte und Eigenschaften beschrieben, die von der Audio- und Videostatistik-API bereitgestellt werden. Während alle Video SDK-Plattformen die gleichen Statistiken bereitstellen, kann es geringfügige Unterschiede bei der Strukturierung oder Benennung einzelner Felder geben. Diese Unterschiede spiegeln eher plattformspezifische SDK-Designkonventionen als Unterschiede in den zugrunde liegenden Metriken wider.

Eine plattformunabhängige Erläuterung der verfügbaren Statistiken und ihrer Bedeutung finden Sie unter Übersicht über die Beobachtbarkeit der Kunden.

Verlagsstatistik

Liefert Statistiken über einen Verlag.

Herausgeber Audio-Statistik (PublisherAudioNetworkStatsEvent)

Liefert Statistiken über die Audiospur eines Verlags.

  • connectionId - Die eindeutige ID der Client-Verbindung, die mit der id-Eigenschaft der Datei connection Eigenschaft der connectionCreated Ereignis, das das Sitzungsobjekt für den entfernten Client ausgelöst hat (nur bei weitergeleiteten Sitzungen verfügbar).
  • subscriberId - Die eindeutige ID des Abonnenten, die mit der id-Eigenschaft der Datei Subscriber Objekt in der Anwendung des abonnierenden Clients (nur in weitergeleiteten Sitzungen verfügbar).
  • audioBytesSent - Insgesamt gesendete Audio-Bytes.
  • audioPacketsLost - Summe der Audiopakete, die den Teilnehmer oder Media Router nicht erreicht haben.
  • audioPacketsSent - Insgesamt gesendete Audiopakete.
  • timeStamp - Unix-Zeitstempel (ms), als die Statistiken erfasst wurden.

Publisher Video Statistik (PublisherVideoNetworkStatsEvent)

Diese Felder stellen die aktuelle Videoleistung des Herausgebers dar:

  • connectionId - Die eindeutige ID der Client-Verbindung, die mit der id-Eigenschaft der Datei connection Eigenschaft der connectionCreated Ereignis, das das Sitzungsobjekt für den entfernten Client ausgelöst hat (nur bei weitergeleiteten Sitzungen verfügbar).
  • subscriberId - Die eindeutige ID des Abonnenten, die mit der id-Eigenschaft der Datei Subscriber Objekt in der Anwendung des abonnierenden Clients (nur in weitergeleiteten Sitzungen verfügbar).
  • videoBytesSent - Insgesamt gesendete Video-Bytes.
  • videoPacketsLost - Gesamtzahl der Videopakete, die den Teilnehmer oder Media Router nicht erreicht haben.
  • videoPacketsSent - Gesamtzahl der gesendeten Videopakete.
  • timestamp - Unix-Zeitstempel (ms), als die Statistiken erfasst wurden.

Teilnehmer-Audiostatistik (AudioNetworkStats)

Liefert Statistiken über die Audiospur eines Abonnenten.

  • audioBytesReceived - Insgesamt empfangene Audio-Bytes.
  • audioPacketsLost - Summe der Audiopakete, die den Teilnehmer nicht erreicht haben.
  • audioPacketsReceived - Insgesamt erfolgreich empfangene Audiopakete.
  • timeStamp - Unix-Zeitstempel (ms), als diese Statistiken erfasst wurden.

Abonnenten-Videostatistik (VideoNetworkStatsEvent)

Diese Felder beschreiben die Echtzeit-Videoempfangs- und Dekodierleistung des Teilnehmers:

  • videoBytesReceived - Insgesamt empfangene Video-Bytes.
  • videoPacketsLost - Gesamtzahl der Videopakete, die den Teilnehmer nicht erreicht haben.
  • videoPacketsReceived - Insgesamt empfangene Videopakete.
  • timestamp - Unix-Zeitstempel (ms), als die Statistiken erfasst wurden.

Die folgenden Metriken liefern Bandbreitenschätzungen, die für die abgehende Verbindung des Absenders gemeldet werden:

  • senderStats.connectionMaxAllocatedBitrate - Geschätzte maximale zugewiesene Bitrate für den Absender (bps).
  • senderStats.connectionEstimatedBandwidth - Aktuelle geschätzte Uplink-Bandbreite für den Absender (bps).

Statistik auf der Absenderseite

Siehe die Übersicht der Absenderstatistiken.

Aktivieren der absenderseitigen Statistik

Senderstatistiken werden von den Abonnenten empfangen. Um absenderseitige Statistiken zu erhalten, aktivieren Sie sie für den Herausgeber des Streams, indem Sie die publishSenderStats Eigenschaft eingestellt auf true in den Verlagseigenschaften:

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

Wenn publishSenderStats nicht aktiviert ist, wird kein Absenderstatistikkanal für diesen Verlag veröffentlicht. Der Standardwert ist false.

Abonnieren von Statistiken auf der Absenderseite

Die Abonnenten erhalten nur dann automatisch Absenderstatistiken, wenn der Herausgeber sie aktiviert hat.

Es sind keine zusätzlichen Ereignisse oder Methoden erforderlich; die Absenderstatistiken sind in den bestehenden VideoNetworkStatsEvent Ereignisobjekt.

Empfangsstatistik Ereignisse

Absenderstatistiken sind als optionales Element enthalten senderStats Objekt innerhalb des Objekts, das an die videoNetworkStats Rückruf. Die senderStats Objekt enthält zwei Eigenschaften:

  • connectionMaxAllocatedBitrate - Die maximale Bitrate, die für die Verbindung geschätzt werden kann (in Bits pro Sekunde)
  • connectionEstimatedBandwidth - Die aktuell geschätzte Bandbreite für die Verbindung (in Bits pro Sekunde)
<OTSubscriber
  eventHandlers={{
    videoNetworkStats: event => {
      if (event.senderStats) {
        console.log('subscriber videoNetworkStats event', event.senderStats.connectionMaxAllocatedBitrate);
        console.log('subscriber videoNetworkStats event', event.senderStats.connectionEstimatedBandwidth);
      }
    }
  }}
/>

RTC-Statistikbericht

Um Low-Level-Peer-Verbindungsstatistiken für einen Publisher zu erhalten, verwenden Sie die OTPublisher.getRtcStatsReport() Methode. Als Reaktion auf den Aufruf der OTPublisher.getRtcStatsReport() Methode der Herausgeber rtcStatsReport Ereignisbehandler aufgerufen wird. Siehe die PublisherRtcStatsReportEvent Veranstaltung für weitere Informationen.

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

Um Low-Level-Peer-Verbindungsstatistiken für einen Teilnehmer zu erhalten, verwenden Sie die OTSubscriber.getRtcStatsReport() Methode. Als Reaktion auf den Aufruf der OTSubscriber.getRtcStatsReport() Methode der Teilnehmer rtcStatsReport Ereignisbehandler aufgerufen wird. Siehe die SubscriberRTCStatsReportEvent Veranstaltung für weitere Informationen.

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