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

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

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

注釈

  • について PublisherKit.setAudioFallbackEnabled() そして PublisherKit.setAudioFallbackEnabled() メソッドは非推奨となります。その場合は PublisherKit.publisherAudioFallbackEnabled() メソッドに置き換えた。

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

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

パブリッシャーオーディオのフォールバックを有効にするには PublisherKit.Builder.publisherAudioFallbackEnabled() 関数を使用します。


// 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();

ストリームの全サブスクライバに対して)サブスクライバ音声フォールバックを有効/無効にするには PublisherKit.Builder.subscriberAudioFallbackEnabled() 関数を使用してください。サブスクライバーの音声フォールバックはルーティングされたセッション( ビデオ・メディア・ルーター).加入者音声フォールバックは、カメラのビデオソースを持つストリームでデフォルトで有効です(ルーティングされたセッションで)。

オーディオのフォールバックイベント

パブリッシャーオーディオのフォールバックが有効な場合、コールバックメソッドは PublisherKit.VideoListener は、パブリッシャーオーディオのフォールバック関連のイベントに対して呼び出されます:

  • PublisherKit.VideoListener.onVideoDisableWarning() - ストリームの品質が低下したとパブリッシャーが判断したときに呼び出され、品質がさらに低下した場合は動画が無効になります。
  • PublisherKit.VideoListener.onVideoDisableWarningLifted() - パブリッシャーが、ストリームの品質が改善され、無効になっている動画が直ちに危険にさらされることはないと判断した場合に呼び出されます。
  • PublisherKit.VideoListener.onVideoDisabled() - ストリームの品質が低下し、送信ビデオ・トランスポートが無効になったとパブリッシャが判断した場合に呼び出されます。注: 動画が無効になっても、パブリッシャはパブリッシング・クライアントの UI にパブリッシャの動画(カメラ画像など)を表示します。
  • PublisherKit.VideoListener.onVideoEnabled() — 配信品質が向上したと配信事業者が判断し、動画の送信が再開された場合、これらは「高品質」と適切に呼ばれる。

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


@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
}

サブスクライバーの観点からは、以下のイベントが発生したことで、オーディオのフォールバックが発生したことがわかります。これらのイベントはサブスクライバーに関連するものですが、サブスクライバー側のオーディオフォールバックによる場合もあれば、パブリッシャー側のオーディオフォールバックの結果として発生する場合もあります。 つまり、パブリッシャー側のオーディオフォールバックとサブスクライバー側のオーディオフォールバックの違いは、パブリッシャー側のケースでは、パブリッシングクライアントが自身のストリームの品質低下に基づいてオーディオフォールバックをトリガーする可能性がある点にあり、そのため、パブリッシャー側で追加のイベントがディスパッチされるのです。 サブスクライバー側のオーディオフォールバックの場合、Vonage Video Media Router は、サブスクライバーに影響を与えるネットワークの品質低下を評価します。いずれの場合も、パブリッシャー側またはサブスクライバー側のオーディオフォールバックが発生すると、受信側でオーディオフォールバックが発生したことを示すサブスクライバー側のイベントが常にディスパッチされます。

オーディオのフォールバックが発生した場合、のコールバックメソッドは SubscriberKit.VideoListener が呼び出されます:

  • SubscriberKit.VideoListener.onVideoDisableWarning() - ストリームの画質が劣化したと判断されたときに呼び出され、画質がさらに劣化した場合は動画が無効化される。
  • SubscriberKit.VideoListener.onVideoDisableWarningLifted() - ストリームの品質が、無効化されている動画が直ちに危険でない程度まで改善されたと判断された場合に呼び出される。
  • SubscriberKit.VideoListener.onVideoDisabled() - ストリームの品質が低下し、送信ビデオ・トランスポートが無効になったと判断された場合に呼び出されます。注:ビデオが無効になっている間も、サブスクライバはパブリッシング・クライアントの UI にサブスクライバのビデオ(カメラ画像など)を表示します。
  • SubscriberKit.VideoListener.onVideoEnabled() - ストリームの品質が向上し、送信ビデオトランスポートが再度有効になったと判断されたとき、理由「quality」で呼び出される。

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


@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
}