オーディオのフォールバック — Web

OpenTokのオーディオフォールバックAPIを使用して、ネットワーク品質に応じてオーディオの優先順位を動的に調整します。

概念的な情報については オーディオ・フォールバックの概要.

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

このトピックには以下のセクションが含まれます:

音声のみのフォールバックの有効化と無効化

パブリッシャー・オブジェクトを初期化する際に 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 プロパティは非推奨となる。

オーディオのフォールバックイベントとUIインジケーター

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

  • 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 のイベントがある。