Verwenden Sie die Audio-Fallback-API, um Audio dynamisch in Abhängigkeit von der Netzwerkqualität zu priorisieren.

Anmerkung: Die audioFallbackEnabled Eigenschaft der Optionen, die an die OT.initPublisher() Methode wird veraltet sein. Bitte verwenden Sie die audioFallback.subscriber Eigenschaft des options-Objekts.

Enabling and disabling audio-only fallback

Bei der Initialisierung des Publisher-Objekts setzen Sie die audioFallback Eigenschaft der Option, die Sie an die OT.initPublisher() Methode:

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

Die audioFallback Eigenschaft der Optionen, die Sie in der OT.initPublisher() Methode enthält zwei boolesche Eigenschaften:

  • publisher - Ob Sie aktivieren (true) oder deaktivieren (false) Herausgeber Audio Fallback. Der Standard ist false (Audio-Fallback des Herausgebers ist deaktiviert).

  • subscriber - Ob Sie aktivieren (true) oder deaktivieren (false) Teilnehmer-Audio-Fallback. Diese Einstellung gilt nur für geroutete Sitzungen (Sitzungen, die den Vonage Video-Media-Router). Teilnehmer-Audio-Fallback wird in weitergeleiteten Sitzungen nicht unterstützt. Der Standard ist true (Teilnehmer-Audio-Fallback ist aktiviert). Diese Einstellung ersetzt die audioFallbackEnabled Eigenschaft, die veraltet sein wird.

Audio fallback events and UI indications

Wenn das Publisher-Audio-Fallback aktiviert ist, sendet das Publisher-Objekt diese Ereignisse als Reaktion auf wechselnde Qualitätsbedingungen:

  • videoDisableWarning - Wird versendet, wenn der Herausgeber feststellt, dass sich die Qualität des Streams verschlechtert hat, und das Video deaktiviert wird, wenn sich die Qualität weiter verschlechtert.

  • videoDisableWarningLifted - Wird gesendet, wenn der Herausgeber feststellt, dass sich die Qualität des Streams soweit verbessert hat, dass das deaktivierte Video kein unmittelbares Risiko mehr darstellt.

  • videoDisabled - Wird versendet, wenn der Herausgeber feststellt, dass die Qualität des Streams sich verschlechtert hat und der ausgehende Videotransport deaktiviert wurde. Hinweis: Auch wenn das Video deaktiviert ist, zeigt der Veröffentlicher das Veröffentlichungsvideo (z. B. das Kamerabild) in der Benutzeroberfläche des Veröffentlichungsclients an.

  • videoEnabled - Wird mit dem Grund "Qualität" versandt, wenn der Herausgeber feststellt, dass sich die Qualität des Streams verbessert hat und der ausgehende Videotransport wieder aktiviert wurde.

Standardmäßig zeigt der Publisher Symbole an, wenn die videoDisableWarning und videoDisabled Ereignisse auftreten.

Die style Eigenschaft der options Parameter für OT.initPublisher() enthält jetzt eine videoDisabledDisplayMode Eigenschaft. Sie können die Eigenschaft videoDisabledDisplayMode Eigenschaft auf einen der folgenden String-Werte setzen, steuern Sie, wie die Standard Elemente der Benutzeroberfläche angezeigt werden:

  • auto (Standardeinstellung) - Die Symbole werden automatisch angezeigt, wenn das Video deaktiviert ist oder aufgrund einer schlechten Stream-Qualität deaktiviert werden könnte.

  • off - Die Icons werden nicht angezeigt. Sie können auf der Grundlage der oben beschriebenen Ereignisse Ihre eigenen Benachrichtigungen auf der Benutzeroberfläche anzeigen.

  • on - Die Symbole werden automatisch angezeigt, wenn das Video deaktiviert ist oder aufgrund einer schlechten Stream-Qualität deaktiviert zu werden droht.

Der folgende Code deaktiviert beispielsweise die standardmäßigen Benutzeroberflächenelemente für deaktivierte Videos und behandelt die entsprechenden Ereignisse (so dass Sie Ihre eigenen Benutzeroberflächenbenachrichtigungen bereitstellen können):

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

Sie können auch die videoDisabledDisplayMode Stil dynamisch durch den Aufruf der Publisher.setStyle() Methode:

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

// Alternately:

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

Aus Sicht des Teilnehmers zeigen die folgenden Ereignisse an, dass ein Audio-Fallback stattgefunden hat. Diese Ereignisse sind zwar an den Obwohl diese Ereignisse an den Teilnehmer gebunden sind, können sie sowohl aufgrund des Audio-Fallbacks des Teilnehmers als auch als Folge des Audio-Fallbacks des Herausgebers auftreten. Mit anderen Worten, der Unterschied zwischen Publisher- und Subscriber-Audio-Fallback besteht darin, dass im Falle des Publishers der Publishing-Client den Audio-Fallback aufgrund seiner eigenen Stream-Verschlechterung auslösen kann, weshalb zusätzliche verlagsseitige Ereignisse ausgelöst werden. Für Subscriber Audio Fallback bewertet der Vonage Video Media Router die Netzwerkverschlechterung, die den Teilnehmer betrifft. In beiden Fällen werden bei Publisher- oder Teilnehmer-Audio-Fallback werden in beiden Fällen immer Teilnehmer-Ereignisse versendet, um anzuzeigen, dass ein Audio-Fallback für den Empfänger stattgefunden hat.

Ein Subscriber-Objekt sendet die folgenden Ereignisse in Bezug auf die Aktivierung oder Deaktivierung des Videos für den Stream des Abonnenten:

  • videoEnabled - Wird ausgelöst, wenn das Video aktiviert wurde, nachdem es zuvor deaktiviert war.

  • videoDisabled - Wird ausgelöst, wenn das Video deaktiviert wurde. Die Website reason Eigenschaft des Ereignisobjekts zeigt an, warum das Video deaktiviert wurde. (Dieses Ereignisobjekt ist ein VideoEnabledChangedEvent Objekt).

  • videoDisableWarning - Wird ausgelöst, wenn festgestellt wird, dass sich die Qualität des Streams verschlechtert hat und das Video deaktiviert wird, wenn sich die Qualität weiter verschlechtert. Wenn sich die Qualität weiter verschlechtert, deaktiviert der Abonnent das Video und sendet ein videoDisabled-Ereignis. Dieses Ereignis kann auch bei Verwendung der Audio-Fallback-Funktion des Beta-Publishers ausgelöst werden, wenn sich die Qualität des Streams des Publishers verschlechtert.

  • videoDisableWarningLifted - Das Video wurde aktiviert, nachdem es zuvor deaktiviert war.

Standardmäßig zeigt der Teilnehmer eine Warnanzeige für deaktivierte Videos und eine Anzeige für deaktivierte Videos an, wenn die videoDisableWarning und videoDisableWarningLifted Ereignisse ausgelöst werden. Sie können die Standardanzeige des Indikators deaktivieren, indem Sie den Parameter videoDisabledDisplayMode Stil-Einstellung des Subscriber-Objekts.

Das folgende Beispiel verwendet die videoDisabledDisplayMode einstellen, dass die Warnanzeige für deaktiviertes Video und die Anzeige für deaktiviertes Video im Sekundentakt blinken, wenn der videoDisableWarning und videoDisableWarningLifted Ereignisse ausgelöst werden:

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

Sie können auch die videoDisabledDisplayMode Stil zu 'off' und fügen Sie Ihre eigenen Elemente der Benutzeroberfläche auf der Grundlage der videoDisableWarning, videoDisabled, videoDisableWarningLiftedund videoEnabled Veranstaltungen.