Low Bandwidth

Our servers can detect if you are on a low-bandwidth connection and will automatically adjust the video quality to ensure smooth playback.

However, sometimes even reduced quality may not be enough for a good experience, and our system may decide to opt the local user out from consuming some or all remote videos. The video pause feature improves call quality by automatically turning off incoming video streams, resulting in an audio-only mode in response to deteriorating network conditions on the subscriber side.

In such cases, you will see an icon in the participant’s label indicating that the video is being paused due to bandwidth constraints.

Low bandwidth indicator

Low Bandwidth Optimization toggling

The Low Bandwidth optimization is enabled by default on an SDK level. However, integrators can decide to opt out of this feature accordingly to their use case:

call.disableClientCapabilities(
    [
        SfuClientCapability.subscriberVideoPause,
    ],
);

// use call.enableClientCapabilities(...) to re-enable the feature

Remmber to configure these before calling call.join(). Any changes made after joining the call will not take effect until the next join or reconnect.

This signals to the backend that the client supports dynamic video pausing, allowing the system to optimize media delivery under limited network conditions.

Observing Paused Tracks

The information about server-side paused tracks lives on the participant.pausedTracks property. You can observe changes to this property to customize the UI further, such as showing a message or changing the participant’s label.

final subscriptions = call
    .partialState((state) => state.callParticipants)
    .map(
        (participants) => participants
            .where((p) => p.pausedTracks.contains(SfuTrackType.video))
            .toList(),
    )
    .listen(
    (pausedTrackParticipants) {
    print(
        'Participants with paused video track: ${pausedTrackParticipants.map((e) => e.userId).join(', ')}',
    );
    },
);

//Remember to cancel the subscription when not needed
subscriptions.cancel();
© Getstream.io, Inc. All Rights Reserved.