クライアントの監視可能性:リアクト・ネイティブ

React Native SDKは、ほとんどのユースケースで推奨される高レベルの統計APIを通じて、詳細なストリーム品質メトリクスを公開します。このAPIは、音声、ビデオ、ネットワーク、および送信者側の統計を、ピア接続の遷移をまたいで安定したまま、セッションを意識した統一された形式で提供します。高度なデバッグのために、SDKは未処理のピア接続データを反映する生のWebRTC統計レポートへのアクセスも提供します。

音声・ビデオ統計API

React Native SDKは、パブリッシャーとサブスクライバーの両方に対して、オーディオとビデオのネットワーク統計情報を定期的に送信します。これらには、パケット数、ビットレート、フレームレートデータ、一時停止/フリーズメトリクス、コーデック情報、およびオプションの送信側ネットワーク推定が含まれます。

出版社の統計を取る

について パブリッシャーオーディオネットワーク統計イベント そして パブリッシャービデオネットワーク統計イベント イベントは オブジェクトの配列を提供します。 ルーティングされたセッション( オープントーク メディア・ルーター)、この配列には1つのオブジェクトが含まれ、Vonage Video Media Routerに送信される単一のオーディオ・ビデオ・ストリームの統計情報を定義します。 この配列には、Vonage Video Media Router に送信される単一のオーディオ・ビデオ・ストリームの統計情報を定義する 1 つのオブジェクトが含まれます。中継セッションの場合、 には、公開ストリームの加入者ごとのオブジェクトが含まれます。

以下のコードでは、パブリッシャーのストリームのメトリクスを記録しています:

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

購読者の統計情報の取得

について オーディオネットワーク統計 そして VideoNetworkStatsEvent イベントは を提供します。

以下のコードは、サブスクライバのストリームのいくつかのメトリクスをログに記録します:

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

統計データ構造

このセクションでは、Video API が提供するオブジェクトとプロパティの概要を説明します。すべての Video SDK プラットフォームが同じ統計セットを公開していますが、各プラットフォームで個々のフィールドの構造や名前の付け方に若干の違いがある場合があります。これらの違いは、基本的なメトリクスの違いではなく、プラットフォーム固有の SDK 設計規約を反映しています。

利用可能な統計とそれが表すものについてのプラットフォームに依存しない説明については、以下を参照のこと。 顧客の観測可能性の概要.

出版社統計

出版社に関する統計情報を提供します。

出版社オーディオ統計 (PublisherAudioNetworkStatsEvent)

パブリッシャーのオーディオトラックに関する統計を提供します。

  • connectionId - のidプロパティと一致する、クライアント接続の一意なID。 connection プロパティの connectionCreated セッションオブジェクトがリモートクライアントにディスパッチしたイベント(リレーされたセッションでのみ使用可能)。
  • subscriberId - のidプロパティと一致する、購読者の一意なID。 Subscriber オブジェクトをサブスクライブしているクライアントのアプリで使用することができます(リレーセッションでのみ使用可能)。
  • audioBytesSent - 送信されたオーディオ・バイトの合計。
  • audioPacketsLost - 加入者またはメディア・ルーターに到達しなかったオーディオ・パケットの合計。
  • audioPacketsSent - 送信されたオーディオパケットの合計。
  • timeStamp - 統計情報が収集されたUnixタイムスタンプ(ms)。

出版社ビデオ統計 (PublisherVideoNetworkStatsEvent)

これらのフィールドは、パブリッシャーの現在のビデオパフォーマンスを表しています:

  • connectionId - のidプロパティと一致する、クライアント接続の一意なID。 connection プロパティの connectionCreated セッションオブジェクトがリモートクライアントにディスパッチしたイベント(リレーされたセッションでのみ使用可能)。
  • subscriberId - のidプロパティと一致する、購読者の一意なID。 Subscriber オブジェクトをサブスクライブしているクライアントのアプリで使用することができます(リレーセッションでのみ使用可能)。
  • videoBytesSent - 送信されたビデオ・バイトの合計。
  • videoPacketsLost - 加入者またはメディアルーターに到達しなかったビデオパケットの合計。
  • videoPacketsSent - 送信されたビデオパケットの合計。
  • timestamp - 統計情報が収集されたUnixタイムスタンプ(ms)。

加入者オーディオ統計 (AudioNetworkStats)

加入者のオーディオトラックに関する統計情報を提供します。

  • audioBytesReceived - 受信したオーディオ・バイトの合計。
  • audioPacketsLost - 加入者に届かなかったオーディオパケットの合計。
  • audioPacketsReceived - 正常に受信されたオーディオ・パケットの合計。
  • timeStamp - これらの統計情報が収集されたUnixタイムスタンプ(ms)。

加入者ビデオ統計 (VideoNetworkStatsEvent)

これらのフィールドは、加入者のリアルタイムのビデオ受信およびデコード性能を示す:

  • videoBytesReceived - 受信したビデオ・バイトの合計。
  • videoPacketsLost - 加入者に届かなかったビデオパケットの合計。
  • videoPacketsReceived - 受信したビデオパケットの合計。
  • timestamp - 統計情報が収集されたUnixタイムスタンプ(ms)。

以下のメトリクスは、送信者の送信接続について報告される帯域幅の推定値である:

  • senderStats.connectionMaxAllocatedBitrate - 送信側に割り当てられた最大ビットレート(bps)。
  • senderStats.connectionEstimatedBandwidth - 送信側の現在の推定アップリンク帯域幅(bps)。

送信側統計

参照 送信側統計の概要.

送信側統計の有効化

送信者側の統計情報は、購読者が受け取る。送信者側の統計情報を受け取るには、ストリームのパブリッシャーに publishSenderStats プロパティを true をパブリッシャーのプロパティに追加してください:

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

もし publishSenderStats が有効でない場合、このパブリッシャーに対して送信者統計チャンネルは発行されません。デフォルト値は false.

送信側統計の購読

購読者は、発行者が送信者統計を有効にしている場合のみ、自動的に受信します。

追加のイベントやメソッドは必要なく、送信者統計は既存の VideoNetworkStatsEvent イベントオブジェクト。

統計イベントの受信

送信側の統計は、オプションとして含まれる。 senderStats に渡されたオブジェクトの中に videoNetworkStats コールバック。コールバックは senderStats オブジェクトには2つのプロパティがあります:

  • connectionMaxAllocatedBitrate - 接続時に推定される最大ビットレート(単位:ビット/秒)
  • connectionEstimatedBandwidth - 現在の推定接続帯域幅(単位:ビット/秒)
<OTSubscriber
  eventHandlers={{
    videoNetworkStats: event => {
      if (event.senderStats) {
        console.log('subscriber videoNetworkStats event', event.senderStats.connectionMaxAllocatedBitrate);
        console.log('subscriber videoNetworkStats event', event.senderStats.connectionEstimatedBandwidth);
      }
    }
  }}
/>

RTC統計レポート

パブリッシャーの低レベルのピア接続統計を取得するには OTPublisher.getRtcStatsReport() メソッドを使用している。メソッドの呼び出しに対して OTPublisher.getRtcStatsReport() パブリッシャーが rtcStatsReport イベントハンドラが呼び出される。イベントハンドラの PublisherRtcStatsReportイベント イベントの詳細はこちら。

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

サブスクライバの低レベルのピア接続統計を取得するには OTSubscriber.getRtcStatsReport() メソッドを使用している。メソッドの呼び出しに対して OTSubscriber.getRtcStatsReport() サブスクライバ rtcStatsReport イベントハンドラが呼び出される。イベントハンドラの SubscriberRTCStatsReportEvent イベントの詳細はこちら。

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