Audio-Fallback – Android

Verwenden Sie die OpenTok-Audio-Fallback-API, um die Audioübertragung je nach Netzwerkqualität dynamisch zu priorisieren.

Für konzeptionelle Informationen, siehe die Audio-Fallback-Übersicht.

Anmerkungen:

  • Die PublisherKit.setAudioFallbackEnabled() und PublisherKit.setAudioFallbackEnabled() Methoden werden veraltet sein. Bitte verwenden Sie die PublisherKit.publisherAudioFallbackEnabled() Methode an.

Dieses Thema umfasst die folgenden Abschnitte:

Aktivieren und Deaktivieren des Fallbacks für reine Audioübertragung

Um Publisher Audio Fallback zu aktivieren, rufen Sie die PublisherKit.Builder.publisherAudioFallbackEnabled() Funktion bei der Erstellung des Verlags.


// Enable publisher audio fallback
mPublisher = new Publisher.Builder(context)
  .publisherAudioFallbackEnabled(true)
  .build();

// Enable publisher audio fallback and disable subscriber audio fallback
mPublisher = new Publisher.Builder(context)
  .publisherAudioFallbackEnabled(true)
  .subscriberAudioFallbackEnabled(false)
  .build();

// Enable subscriber audio fallback and disable publisher audio fallback
mPublisher = new Publisher.Builder(context)
  .publisherAudioFallbackEnabled(false)
  .subscriberAudioFallbackEnabled(true)
  .build();

Zum Aktivieren und Deaktivieren des Teilnehmer-Audio-Fallbacks (für alle Teilnehmer des Streams) rufen Sie die Funktion PublisherKit.Builder.subscriberAudioFallbackEnabled() Funktion bei der Erstellung des Verlegers. Subscriber Audio Fallback wird nur in gerouteten Sitzungen unterstützt (Sitzungen, die die Vonage Video-Media-Router). Teilnehmer-Audio-Fallback ist standardmäßig (in gerouteten Sitzungen) für Streams mit einer Kamera-Videoquelle aktiviert.

Audio-Fallback-Ereignisse

Wenn Publisher Audio Fallback aktiviert ist, werden Callback-Methoden der PublisherKit.VideoListener werden bei Ereignissen im Zusammenhang mit Publisher Audio Fallback aufgerufen:

  • PublisherKit.VideoListener.onVideoDisableWarning() - Wird aufgerufen, 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.
  • PublisherKit.VideoListener.onVideoDisableWarningLifted() - Wird aufgerufen, wenn der Herausgeber feststellt, dass sich die Qualität des Streams so weit verbessert hat, dass die Deaktivierung des Videos keine unmittelbare Gefahr mehr darstellt.
  • PublisherKit.VideoListener.onVideoDisabled() - Wird aufgerufen, wenn der Verlag feststellt, dass sich die Qualität des Streams verschlechtert hat und der ausgehende Videotransport deaktiviert wurde. Hinweis: Auch wenn das Video deaktiviert ist, zeigt der Publisher das Publisher-Video (z. B. das Kamerabild) in der Benutzeroberfläche des Publishing-Clients an.
  • PublisherKit.VideoListener.onVideoEnabled() — Wird zu Recht als „Qualität“ bezeichnet, wenn der Publisher feststellt, dass sich die Stream-Qualität verbessert hat und die ausgehende Videoübertragung wieder aktiviert wurde.

Der folgende Code behandelt zum Beispiel die entsprechenden Ereignisse (so dass Sie Ihre eigenen Benachrichtigungen für die Benutzeroberfläche bereitstellen können):


@Override
public void onVideoDisableWarning(PublisherKit publisher) {
  // Custom action — for example, add custom UI notification
}

@Override
public void onVideoDisableWarningLifted(PublisherKit publisher) {
  // Custom action — for example, remove custom UI notification
}

@Override
public void onVideoDisabled(PublisherKit publisher, String reason) {
  // Custom action — for example, add custom UI notification
}

@Override
public void onVideoEnabled(PublisherKit subscriber, String reason) {
  // Custom action — for example, remove custom UI notification
}

Aus Sicht des Abonnenten deuten die folgenden Ereignisse darauf hin, dass ein Audio-Fallback stattgefunden hat. Obwohl diese Ereignisse an den Abonnenten gebunden sind, können sie sowohl aufgrund eines Audio-Fallbacks auf Abonnentenseite als auch als Folge eines Audio-Fallbacks auf Publisher-Seite auftreten. Mit anderen Worten: Der Unterschied zwischen Audio-Fallback auf Publisher- und Teilnehmerseite besteht darin, dass im Falle des Publishers der Publishing-Client den Audio-Fallback aufgrund einer Verschlechterung seines eigenen Streams auslösen kann, weshalb zusätzliche Ereignisse auf Publisher-Seite gesendet werden. Beim Audio-Fallback auf Abnehmer-Seite bewertet der Vonage Video Media Router die Netzwerkverschlechterung, von der der Abnehmer betroffen ist. In beiden Fällen werden bei einem Audio-Fallback auf Publisher- oder Abnehmer-Seite stets Abnehmer-Ereignisse gesendet, um anzuzeigen, dass für den Empfänger ein Audio-Fallback stattgefunden hat.

Wenn ein Audio-Fallback auftritt, werden die Callback-Methoden der SubscriberKit.VideoListener werden aufgerufen:

  • SubscriberKit.VideoListener.onVideoDisableWarning() - Wird aufgerufen, wenn festgestellt wird, dass sich die Qualität des Streams verschlechtert hat und das Video deaktiviert wird, wenn sich die Qualität weiter verschlechtert.
  • SubscriberKit.VideoListener.onVideoDisableWarningLifted() - Wird aufgerufen, wenn festgestellt wird, dass sich die Qualität des Streams soweit verbessert hat, dass das deaktivierte Video kein unmittelbares Risiko mehr darstellt.
  • SubscriberKit.VideoListener.onVideoDisabled() - Wird aufgerufen, wenn festgestellt wird, dass sich die Qualität des Streams verschlechtert hat und der ausgehende Videotransport deaktiviert wurde. Hinweis: Während das Video deaktiviert ist, zeigt der Abonnent das Abonnentenvideo (z. B. das Kamerabild) in der Benutzeroberfläche des Veröffentlichungsclients weiterhin an.
  • SubscriberKit.VideoListener.onVideoEnabled() - Wird mit dem Grund "Qualität" aufgerufen, wenn festgestellt wird, dass sich die Qualität des Streams verbessert hat und der ausgehende Videotransport wieder aktiviert wurde.

Der folgende Code behandelt zum Beispiel die entsprechenden Ereignisse (so dass Sie Ihre eigenen Benachrichtigungen für die Benutzeroberfläche bereitstellen können):


@Override
public void onVideoDisableWarning(SubscriberKit subscriber) {
  // Custom action — for example, add custom UI notification
}

@Override
public void onVideoDisableWarningLifted(SubscriberKit subscriber) {
  // Custom action — for example, remove custom UI notification
}

@Override
public void onVideoDisabled(SubscriberKit subscriber, String reason) {
  // Custom action — for example, add custom UI notification
}

@Override
public void onVideoEnabled(SubscriberKit subscriber, String reason) {
  // Custom action — for example, remove custom UI notification
}