WebRTC Metrics

A comprehensive overview of WebRTC statistics, derived calculations, extracted features, and observable signals, to better understand call quality, connectivity, and user experience in rtcStats

Back
trackvideoresolutionadaptationquality

Resolution (feature)

Track-level video resolution features recording the delivered frame size and how much it varied under adaptation.

Description

Track-level features, extracted per video track into features_track.

These features summarize the frame size a video track actually delivered over its lifetime, and how much that size moved:

  • commonWidth - the most common (mode) frame width observed.
  • commonHeight - the most common (mode) frame height observed.
  • minWidth - the smallest frame width observed.
  • minHeight - the smallest frame height observed.
  • maxWidth - the largest frame width observed.
  • maxHeight - the largest frame height observed.

Extracted by the open-source rtcstats-features package.

Why it matters

A single "resolution" number hides the story. WebRTC adapts resolution continuously under CPU and bandwidth pressure, so what a user actually saw is a distribution, not a constant. commonWidth and commonHeight give you the resolution the track spent most of its time at, which is the honest headline figure. The min and max pair tells you the spread: a track that ran mostly at 1280x720 but dropped to 320x180 at its worst reveals adaptation you would miss if you only stored the mode.

Wide gaps between min and max are the signal to chase. They point at congestion, encoder overload, or quality-limitation events on the sending side. Split by codec, client version, or region and this becomes a clean way to find cohorts where video degrades under load.

Typical values

  • Stable track: min, common, and max dimensions all equal or close.
  • Adapting track: common near the target, min well below it during pressure.
  • A maxWidth/maxHeight above the negotiated cap usually points at a mid-call renegotiation or layer switch.

SQL example

Average delivered resolution and its downward spread for inbound video:

SELECT
  AVG(track.common_width)                     AS avg_common_width,
  AVG(track.common_height)                    AS avg_common_height,
  AVG(track.common_width - track.min_width)   AS avg_width_drop
FROM "rtcstats-server" AS server
JOIN features_metadata   AS metadata   ON metadata.dump_id    = server.id
JOIN features_connection AS connection ON connection.dump_id  = metadata.id
JOIN features_track      AS track      ON track.connection_id = connection.id
WHERE connection.connected          -- only connections that reached 'connected'
  AND track.kind = 'video'          -- 'audio' or 'video'
  AND track.direction = 'inbound';  -- 'inbound' or 'outbound'

Related features

See also