Skip to content
Platform docs
Auth, users, webhooks & more

Call Preferences Configuration

Call preferences allow you to configure various aspects of call behavior and performance. These settings control timeouts, reaction behavior, statistics reporting, and other call-specific functionality that affects the user experience during video calls.

Accessing Call Preferences

You can access the current preferences through the call state:

var preferences = call.state.value.preferences;

Available Preference Properties

Property Type Default Value Description
connectTimeout Duration Duration(seconds: 60) The maximum duration to wait when establishing a connection to the call. If the connection is not established within this timeout, the connection attempt will be cancelled.
reconnectTimeout Duration Duration(seconds: 30) The maximum duration to wait when reconnecting to the call. If the connection is not established within this timeout, the reconnection attempt will be cancelled and the user will disconnect from the call.
networkAvailabilityTimeout Duration Duration(seconds: 10) The maximum duration to wait for network availability before timing out. If the network is not available within this timeout, the call will be considered disconnected.
reactionAutoDismissTime Duration Duration(seconds: 5) The duration after which call reactions (like emoji reactions) automatically disappear from the UI.
callStatsReportingInterval Duration Duration(seconds: 2) The interval at which call statistics are reported and updated. This controls how frequently metrics like bandwidth, latency, and quality statistics are collected and reported.
dropIfAloneInRingingFlow bool true Whether to automatically drop the call if the user is alone in the ringing flow. When true, if all participants leave the call initiated by ringing, the call will be automatically ended.
closedCaptionsVisibilityDurationMs int 2700 The duration in milliseconds that closed captions remain visible on screen before being automatically hidden.
closedCaptionsVisibleCaptions int 2 The maximum number of closed caption lines that can be visible simultaneously on screen.
clientPublishOptions ClientPublishOptions? null Configuration options for client-side publishing settings. Manually setting preferred codec can cause call stability/compatibility issues. Use with caution.

Setting Custom Call Preferences

You can customize call preferences when creating a call:

final call = streamVideo.makeCall(
  callType: StreamCallType.defaultType(),
  id: 'my-call-id',
  preferences: DefaultCallPreferences(
    connectTimeout: Duration(seconds: 30),
    reactionAutoDismissTime: Duration(seconds: 3),
    dropIfAloneInRingingFlow: false,
    closedCaptionsVisibleCaptions: 3,
    closedCaptionsVisibilityDurationMs: 5000,
  ),
);

Updating Call Preferences During a Call

You can update call preferences during an active call:

call.updateCallPreferences(
  DefaultCallPreferences(
    reactionAutoDismissTime: Duration(seconds: 10),
    closedCaptionsVisibleCaptions: 4,
  ),
);

Advanced Video Publishing Options

The clientPublishOptions property allows you to control prefered video codec selection. Don't use it unless you know what you are doing. Manually setting preferred codec can cause call stability/compatibility issues. Use with caution.

Client Publish Options

Configure video codec and quality settings:

final call = streamVideo.makeCall(
  callType: StreamCallType.defaultType(),
  id: 'my-call-id',
  preferences: DefaultCallPreferences(
    clientPublishOptions: ClientPublishOptions(
      preferredCodec: PreferredCodec.h264,
      fmtpLine: 'level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f',
      preferredBitrate: 1500000,
      maxSimulcastLayers: 3,
    ),
  ),
);

Client Publish Options Properties

Property Type Description
preferredCodec PreferredCodec? Preferred video codec for publishing (VP8, H264, VP9, AV1).
fmtpLine String? Format parameters line for the video codec.
preferredBitrate int? Preferred bitrate in bits per second for video publishing.
maxSimulcastLayers int? Maximum number of simulcast layers to publish.
subscriberCodec PreferredCodec? Preferred codec for receiving video streams.
subscriberFmtpLine String? Format parameters line for the subscriber codec.
Add Chat to my app: getstream.io/SKILL.md

The fastest way to build with Stream. Start a new project or improve an existing one. Full CLI and documentation integration out of the box.


Ask your agent:

/stream Build me a Social App with Feeds and Moderation.
/stream Any livestream calls running?
/stream Video Flutter v1: <Your Question>