音声フォールバックAPIを使用して、ネットワーク品質に応じて音声を動的に優先させる。

注: について audioFallbackEnabled に渡されたオプションの OT.initPublisher() メソッドは非推奨となります。その場合は audioFallback.subscriber プロパティを指定する。

Enabling and disabling audio-only fallback

パブリッシャー・オブジェクトを初期化する際に audioFallback に渡すオプションの OT.initPublisher() メソッドを使用する:

// Enable publisher audio fallback
const publisher = OT.initPublisher('target', {
  audioFallback: {
    publisher: true,
  }
});

// Enable publisher audio fallback and disable subscriber audio fallback
const publisher = OT.initPublisher('target', {
  audioFallback: {
    publisher: true,
    subscriber: false,
  }
});

// Enable subscriber audio fallback and disable publisher audio fallback
const publisher = OT.initPublisher('target', {
  audioFallback: {
    publisher: false,
    subscriber: true,
  }
});

について audioFallback に渡すオプションの OT.initPublisher() メソッドには2つのブール・プロパティがある:

  • publisher - を有効にするかどうか(true)または無効(false) パブリッシャーオーディオのフォールバック。デフォルトは false (パブリッシャーオーディオのフォールバックは無効)。

  • subscriber - を有効にするかどうか(true)または無効(false)加入者オーディオのフォールバック。この設定は、ルーティングされたセッション( ビデオ・メディア・ルーター).加入者の音声フォールバックは、リレーされたセッションではサポートされない。デフォルトは true (加入者音声フォールバックが有効)。この設定は audioFallbackEnabled プロパティは非推奨となる。

Audio fallback events and UI indications

パブリッシャー・オーディオのフォールバックが有効になっている場合、パブリッシャー・オブジェクトは、品質条件の変化に応じてこれらのイベントをディスパッチします:

  • videoDisableWarning - パブリッシャーがストリームの品質が低下したと判断したときにディスパッチされ、品質がさらに低下するとビデオは無効になります。

  • videoDisableWarningLifted - パブリッシャーが、ストリームの品質が改善され、無効化されているビデオが直ちに危険にさらされることはないと判断した場合にディスパッチされます。

  • videoDisabled - ストリームの品質が低下し、送信ビデオ・トランスポートが無効になったとパブリッシャが判断した場合にディスパッチされます。注: 動画が無効になっても、パブリッシャはパブリッシング・クライアントのUIにパブリッシャの動画(カメラ画像など)を表示します。

  • videoEnabled - パブリッシャーがストリームの品質が向上し、発信ビデオトランスポートが再有効化されたと判断したとき、理由: 'quality'でディスパッチされる。

デフォルトでは、パブリッシャーは videoDisableWarning そして videoDisabled が発生する。

について style プロパティの options のパラメータを使用する。 OT.initPublisher() が含まれるようになった。 videoDisabledDisplayMode プロパティを設定することができます。 プロパティは videoDisabledDisplayMode プロパティを以下の文字列値のいずれかに設定することで、デフォルトのユーザー・インターフェース要素の表示方法を制御できます。 ユーザ・インタフェース要素の表示方法を制御します:

  • auto (デフォルト) - ビデオが無効になっているか、ストリームの質が悪いために無効になる恐れがある場合に、アイコンが自動的に表示されます。

  • off - アイコンは表示されません。上記のイベントに基づいて、独自のユーザー・インターフェース通知を表示することができます。

  • on - アイコンは、ビデオが無効になっているか、ストリームの質が悪いために無効になる恐れがある場合に自動的に表示されます。

例えば、以下のコードは、デフォルトのビデオ無効化ユーザーインターフェイス要素を無効にし、関連イベントを処理します(独自のユーザーインターフェイス通知を提供できるようにします):

// Enabled
const publisher = OT.initPublisher('target', {
  audioFallback: {
    publisher: true,
  },
  style: {
    videoDisabledDisplayMode: 'off',
  }
});

publisher.on({
  videoDisableWarning: () => {
    // Custom action — for example, add custom UI notification
  },
  videoDisableWarningLifted: () => {
    // Custom action — for example, remove custom UI notification
  },
  videoDisabled: () => {
    // Custom action — for example, add custom UI notification
  },
  videoEnabled: () => {
    // Custom action — for example, remove custom UI notification
  },
});

を設定することもできます。 videoDisabledDisplayMode スタイルを動的に呼び出します。 Publisher.setStyle() メソッドを使用する:

publisher.setStyle('videoDisabledDisplayMode', 'off');

// Alternately:

publisher.setStyle({
  videoDisabledDisplayMode: 'off',
  // other styles ...
});

加入者の観点からは、以下のイベントはオーディオのフォールバックが発生したことを示す。これらのイベントは サブスクライバーの観点からは、以下のイベントは、オーディオのフォールバッ クが発生したことを示す。言い換えれば パブリッシャーとサブスクライバーのオーディオのフォールバックの違いは、パブリッシャー の場合、パブリッシングクライアントが、それ自身のストリームに基づいてオーディオ のフォールバックをトリガーする可能性がある、ということである。 そのため、追加のパブリッシャー側イベントがディスパッチされる。サブスクライバー・オーディオ フォールバックの場合、Vonage Video Media Router は加入者に影響するネットワークの劣化を評価します。どちらの場合も、パブリッシャーまたは サブスクライバーオーディオのフォールバックが発生すると、サブスクライバーイベントが常にディスパッチされ、レシーバーでオーディオのフォールバックが発生したことを示します。

サブスクライバ・オブジェクトは、サブスクライバのストリームでビデオが有効または無効になることに関連する以下のイベントをディスパッチする:

  • videoEnabled - ビデオが無効化された後に有効化されたときにディスパッチされる。

  • videoDisabled - ビデオが無効化されたときにディスパッチされる。その reason プロパティは、ビデオが無効化された理由を示す。(このイベント・オブジェクトは ビデオ有効変更イベント オブジェクト)

  • videoDisableWarning - ストリームの品質が劣化したと判断されたときにディスパッチされ、品質がさらに劣化した場合、ビデオは無効化される。品質がさらに劣化すると、サブスクライバはビデオを無効にし、videoDisabled イベントをディスパッチする。このイベントは、パブリッシャーのストリーム品質が劣化した場合、ベータパブリッシャーの オーディオフォールバック機能を使用するときにもディスパッチされる。

  • videoDisableWarningLifted - 以前は無効になっていたビデオが有効になった。

デフォルトでは、加入者はビデオ無効警告インジケータとビデオ無効インジケータを表示します。 videoDisableWarning そして videoDisableWarningLifted イベントがディスパッチされます。インジケーターのデフォルト表示を無効にするには videoDisabledDisplayMode サブスクライバー・オブジェクトのスタイル設定。

次の例では videoDisabledDisplayMode ビデオ無効警告インジケータとビデオ無効インジケータを1秒ごとに点滅させるスタイル設定。 videoDisableWarning そして videoDisableWarningLifted イベントがディスパッチされる:

const indicatorBlinker = new IndicatorBlinker(subscriber);

const IndicatorBlinker = function(subscriber) {
  const timer;
  const indicatorOn = false;
  subscriber.on({
    videoDisabled: function(event) {
      start();
    },
    videoDisableWarning: function(event) {
      start();
    },
    videoDisableWarningLifted: function(event) {
      stop();
    },
    videoEnabled: function(event) {
      stop();
    }
  });
  const start = function() {
    subscriber.setStyle('videoDisabledDisplayMode', 'on');
    if (timer) {
      clearInterval(timer);
    }
    timer = setInterval(function() {
      if (indicatorOn) {
        subscriber.setStyle('videoDisabledDisplayMode', 'off');
      } else {
        subscriber.setStyle('videoDisabledDisplayMode', 'on');
      }
      indicatorOn = !indicatorOn;
    }, 1000);
    indicatorOn = true;
  };
  const stop = function() {
    if (timer) {
      clearInterval(timer);
    }
  };
}

を設定することもできます。 videoDisabledDisplayMode スタイル 'off' をベースに独自のユーザーインターフェイス要素を追加します。 videoDisableWarning, videoDisabled, videoDisableWarningLiftedそして videoEnabled のイベントがある。