Skip to content

Adaptive bitrate

Adaptive bitrate (ABR) watches round trip time, packet loss and the congestion controller’s bandwidth estimate, and moves the encoder’s target bitrate to match. It is on by default in smooth mode. Most deployments should leave it there.

Change it under Admin ▸ Fleet ▸ Hosts ▸ Settings. For a source checkout or an older Compose-managed agent, QUASAR_ABR_MODE in deploy/.env also sets the host default. Current managed installs use the host settings page.

Mode Behaviour Use it when
smooth (default) Steps down gently: when the encoder is saturated, a non-emergency cut is at most 12.5% per step, 7 seconds apart. Confirmed congestion still triggers a fast drop. Almost always.
protective The older governor. One hard step down on trouble, gradual ramp back up. smooth behaves oddly on your hardware, especially the encoder speed ladder.
off Fixed bitrate at the tier’s value. The congestion controller stays attached for telemetry only. A dedicated wired LAN. Not WiFi.

For an environment-managed agent, QUASAR_ABR_MODE=off disables ABR. The older alias QUASAR_ABR=0 is also accepted. Prefer the host settings page for a managed install.

ABR never goes below a floor: by default 30% of the tier’s bitrate, and at least 500 kbps. Set it explicitly with QUASAR_ABR_FLOOR_KBPS, or change the ratio with QUASAR_ABR_FLOOR_RATIO.

In smooth mode, sustained encoder saturation raises the encoder’s speed setting instead of only cutting bitrate. It unwinds after two healthy windows. Disable it with QUASAR_ABR_LADDER=0.

Resolution and frame-rate rungs are opt-in (default off):

  • QUASAR_ABR_LADDER_RESOLUTION moves through the session’s supported external-size ladder. Support depends on the codec and image; Vulkan HEVC can’t resize live.
  • QUASAR_ABR_LADDER_FPS halves 120 fps to 60 and restores it. A 60 fps launch has no lower rung.

Both need smooth mode and apply to the next session.

ABR is validated on hardware encoders. With openh264 it barely works, because the software encoder can’t saturate 1080p at 8 Mbps, so no congestion is ever seen. On software encoding, ABR is not why your stream is poor.

NVENC sometimes overshoots the target on busy scenes. That’s known behaviour, not a misconfiguration.

Admin ▸ Sessions, session detail, plots the ABR setpoint against the congestion controller’s estimate. A rapidly sawtoothing setpoint means something is fighting it: check loss and round trip time in the same window first.

About fifteen more settings control the governor’s hysteresis (smoothing, deadband, step sizes, dwell times, cliff guards). The defaults are the tested behaviour. Don’t change them without a measurement to compare against (Diagnostics). The full list is in Environment variables.