Audio fallback

Use the audio fallback API to dynamically prioritize audio in response to network quality.

Audio fallback keeps your calls running for all participants, regardless of connection issues or poor network conditions by temporarily disabling video for the affected participant. The audio fallback capability reacts to network conditions in real time, ensuring participants won’t drop out when faced with poor coverage. When conditions improve, a video stream is reestablished through our video-recovery capability.

The publisher and subscriber audio fallback features combine to provide optimal call quality. A single subscriber can fall back to audio-only (if only the subscriber's conditions warrant it) or a publisher can fall back to audio-only for poor network conditions.

When the publisher and subscribe audio fallback features are enabled, the SDK dispatches events to indicate changing quality conditions. You can use these events to trigger notifications in the client, or the SDK can display the default UI notifications.

Subscriber audio fallback

The subscriber audio fallback feature improves call quality by automatically turning off incoming video video streams resulting in an audio-only mode in response to deteriorating network conditions on the subscriber-side. Other clients will continue to receive video regardless of the subscriber's network conditions. This feature is handled through the Media Router and is only available in routed sessions. See the session creation docs to understand the distinction between routed and relayed sessions.

Publisher audio fallback

The publisher audio fallback feature improves call quality by having a publisher switch to audio-only mode when the publishing client's network conditions cannot support video. The publisher will resume video when network conditions improve.

The publisher audio fallback feature is supported in both relayed and routed sessions (see The Media Router and media modes).

The publisher audio fallback features includes enhancements to monitor the bandwidth and congestion of a published stream. The publisher will prioritize audio communication and fallback to audio when the bandwidth congestion cannot support video communications.

With the publisher audio fallback feature, the publishing client receives quality feedback (on packet loss, bandwidth, and congestion) from the subscriber (in a relayed session) or the Media Router (in a routed session).

Enabling and disabling audio fallback

The client SDKs include events for publisher and subscriber audio fallback. These events indicate when the publisher or subscriber video is enabled or disabled, and when there is a warning for the video being disabled, due to audio fallback (and video recovery).

You can enable and disable audio fallback when you publish a stream:

Use the audio fallback API to dynamically prioritize audio in response to network quality.

For conceptual information, see the audio fallback overview.

Note: The audioFallbackEnabled prop of the OTPublisher component will be deprecated. Please use the audioFallback.subscriber setting instead.

Enabling and disabling audio-only fallback

Set the audioFallback property of the properties prop you pass into the OTPublisher component:

The audioFallback object includes two Boolean properties:

  • publisher — Whether to enable (true) or disable (false) publisher audio fallback. With publisher audio fallback enabled, when the stream's quality has degraded significantly (for example, because of network conditions), the publisher disables video in order to preserve audio quality. The default is false (publisher audio fallback is disabled).
  • subscriber — Whether to enable (true) or disable (false) subscriber audio fallback. This setting only applies in routed sessions (sessions that use the Media Router). Subscriber audio fallback is not supported in relayed session. With subscriber audio fallback enabled, when the Media Router determines that a stream's quality has degraded significantly for a specific subscriber, it disables the video in that subscriber in order to preserve audio quality. The default is true (subscriber audio fallback is enabled). This setting replaces the the audioFallbackEnabled property, which will be deprecated.

Publisher audio fallback events

When publisher audio fallback is enabled, callback methods of the OTPublisher component are invoked in response to changing quality conditions:

  • videoDisableWarning() — Called when the Publisher determines that the stream quality has degraded and the video will be disabled if the quality degrades more.
  • videoDisableWarningLifted() — Called when the Publisher determines that the stream quality has improved to the point at which the video being disabled is not an immediate risk.
  • videoDisabled() — Called when the Publisher determines that the stream quality has degraded and the outgoing video transport has been disabled. Note: while the video is disabled, the Publisher still displays the publisher video (such as the camera image) in the publishing client's UI.
  • videoEnabled() — Called with the reason property set to 'quality' when the Publisher determines that the stream quality has improved and outgoing video transport has been re-enabled.

For example the following code adds event listeners for audio fallback-related events (so that you can provide user interface notifications):

Subscriber audio fallback events The OTSubscriber component includes callback methods that are invoked based on events related to the video being enabled or disabled for the subscriber's stream:

videoEnabled() — Called when the video has been enabled after it was previously disabled. videoDisabled() — Called when the video has been disabled. The reason property of the event object indicates why the video was disabled. (This event object is an VideoEnabledChangedEvent object.) videoDisableWarning() — Called when the Media Router determines that the stream quality has degraded and the video will be disabled if the quality degrades more. If the quality degrades further, the Subscriber disables the video and calls the videoDisabled() callback. This event may also be dispatched when using the publisher audio fallback feature if the publisher's stream quality if degraded. videoDisableWarningLifted() — Called when video has been enabled after it was previously disabled. The OTSubscriber videoDisableWarning() and videoDisableWarningLifted() callback methods are only invoked in sessions that use the Media Router (sessions with the media mode set to routed).

For example the following code adds event listeners for audio fallback-related events (so that you can provide user interface notifications):