購読する診断

このガイドを使用して、ストリームの詳細を検査し、ストリームの終了を検出し、一般的な加入者の問題を解決します。また、UI で接続の問題を処理するためのガイダンスも含まれています。

ストリーム情報

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

参照 クライアント観測可能性開発者ガイド をご覧ください。

また、デバッグや分析を支援するために、アクティブなストリームの診断詳細を取得することもできます。

サブスクライバーのオーディオとビデオの統計情報を取得するには、以下のイベントハンドラを追加します。 audioNetworkStats そして videoNetworkStats イベントは、OTSubscriber によってディスパッチされる。これらは、以下を含むサブスクライバのストリームに関する情報を提供する:

  • 失われたオーディオおよびビデオパケットの総数。
  • 受信したオーディオパケットとビデオパケットの総数。
  • 受信したオーディオとビデオの合計バイト数。
  • 現在の平均ビデオフレームレート。
<OTSubscriber
  eventHandlers={{
    audioNetworkStats: event => {
      console.log('subscriber audioNetworkStats event', event);
    },
    videoNetworkStats: event => {
      console.log('subscriber videoNetworkStats event', event);
    },
  }}
/>

より詳細なストリーム統計を取得するには Subscriber.getRtcStatsReport() メソッドを呼び出します。このメソッドはプロミスを返し、成功すると、JSON表現の RtcStatsReport オブジェクトを返します:

<OTSubscriber
  eventHandlers={{
    connected: event => {
      setTimeout(() => {
        this.subscriber.getRtcStatsReport();
      }, 4000);
    },
    rtcStatsReport: event => {
      console.log('subscriber rtcStatsReport event', event);
    },
  }}
/>

ストリームの終了とビデオの無効を検出

ストリームの終了を検出し、クリーンアップやUIの調整を行うことができます。

サブスクライバーのビデオが無効化されると、OTSubscriberオブジェクトは videoDisabled イベントを開催する:

<OTSubscriber
  eventHandlers={{
    videoDisabled: (event) => {
      console.log('stream video disabled -- stream ID:', event.streamId);
      // Display a user interface notification.
    },
  }}/>

メディアルータが加入者のビデオを無効にする場合、加入者に関連するユーザーインターフェイスを調整することができます。

について reason プロパティの videoDisabled イベントオブジェクトは、ビデオが無効になった理由を定義します。以下の値のいずれかを設定する:

  • "PublisherPropertyChanged" - 出版社はビデオの公開を中止した。

  • "QualityChanged" - メディアルーターが、ストリーム品質の変化に基づいて加入者へのビデオ送信を停止した。メディアルータのこの機能は、接続性が低下すると、加入者がビデオストリームを停止する。(加入者は、音声ストリームがある場合は受信を継続する)。

このイベントを送信する前に、加入者のストリームの品質が、ビデオストリームが使用不可 になる危険性があるほど低いレベルまで劣化したとき OTSubscriber オブジェから videoDisableWarning イベントを開催する。

接続性が改善され、再びビデオをサポートするようになった場合 OTSubscriber オブジェクトは videoEnabled イベントが発生し、加入者はビデオの受信を再開する。

を使用するセッションでのみ利用可能です。 メディア・ルーター (メディアモードがルーティングに設定されたセッション)であり、メディアモードがリレーに設定されたセッションではない。

ストリームを公開する際、ストリームの画質が原因でビデオが無効化されるのを防ぐことができます。設定 audioFallbackEnabled への false での properties プロパティを OTPublisher コンポーネントに渡します。

  • "SubscriberPropertyChanged" - に渡されるプロパティ・プロパティで subscribeToVideo を false に設定することで、サブスクライバは動画の購読を開始または停止します。 OTSubscriber コンポーネントを使用している。

  • "CodecNotSupported" - コーデックに互換性がないため、ビデオの購読が停止されました。 ビデオコーデック開発者ガイド).

について OTSubscriber オブジェクトのディスパッチ videoEnabled イベントを発生させる:

videoEnabled イベントオブジェクトの reason プロパティは、ビデオが有効になった理由を定義する。以下の値のいずれかを設定する:

  • "PublisherPropertyChanged" - 出版社はビデオの公開を再開した。

  • "QualityChanged" - メディアルーターは、ストリーム品質の変化に基づいて、加入者へのビデオ送信を再開した。メディアルーターのこの機能により、加入者は接続性が低下するとビデオストリームを停止し、ストリーム品質が向上するとビデオストリームを再開する。

この機能は、メディアルーターを使用するセッション(メディアモードがルーティングに設定されたセッション)のみで使用可能であり、メディアモードがリレーに設定されたセッションでは使用できない。

  • "SubscriberPropertyChanged" - 加入者がビデオの購読を開始または停止した。 subscribeToVideo をfalseに設定します。

  • "CodecNotSupported" - 加入者ビデオは、互換性のないコーデックからコーデックを変更した後に有効になりました ( ビデオコーデック開発者ガイド).

トラブルシューティング(JavaScript)

サブスクライブエラーと接続性の問題を処理するためのヒント。

トラブルシューティングの一般的な情報については、以下を参照してください。 ビデオ・インスペクター.

エラー処理

購読する方法は1つだけ。 Session.subscribe()-ほとんどのエラーはネットワーク関連です。サブスクライバが接続に失敗した場合、独自のエラーメッセージが表示されますが、明確なメッセージを自分で表示する方が良いでしょう:

session.subscribe(event.stream, 'subscriber', {insertMode: 'append'}, function (err) {
  if (err) {
    showMessage('Streaming connection failed. This could be due to a restrictive firewall.');
  }
});

接続性の喪失

サブスクライバは、接続後に接続を失うことがある。その場合は streamDestroyed イベントが発生する。 networkDisconnected に連絡し、直ちに利用者を削除することなく、利用者に通知する:

session.on({
  streamDestroyed: function (event) {
    if (event.reason === 'networkDisconnected') {
      event.preventDefault();
      var subscribers = session.getSubscribersForStream(event.stream);
      if (subscribers.length > 0) {
        var subscriber = document.getElementById(subscribers[0].id);
        subscriber.innerHTML = 'Lost connection. This could be due to your internet connection or because the other party lost their connection.';
        event.preventDefault();
      }
    }
  }
});

加入者のイベント処理とランタイム調整(オーディオブロック、ビデオ無効、統計)については、以下を参照してください。 購読するマネジメント&イベント.