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
On this page6 sections
trackvideoinboundfreezequality

Freezes (feature)

Last updated Applies tortcstats-serverrtcstats.com

Track-level features counting inbound video freezes and their total duration (the single most user-visible video defect), plus frames dropped before rendering.

Description

Track-level features, extracted per inbound video track into features_track, from the last getStats.

Extracted by the open-source rtcstats-features package.

Why it matters

Freezes are the defect users actually complain about: the picture stops. freezeCount and totalFreezesDuration quantify that experience directly, which makes them the best single video-quality KPI for a population. Trended over time or split by codec, region, or client version, they turn "video feels bad lately" into a measurable regression you can bisect. framesDropped is a related early-warning signal: frames arriving but discarded before rendering, often a sign of a decode or timing problem before it becomes a visible freeze.

Typical values

  • Good: freezeCount = 0, totalFreezesDuration = 0 for the vast majority of tracks.
  • Concerning: freezes accumulating on a meaningful share of sessions, or long totalFreezesDuration relative to track duration.
  • Normalise by track duration to compare fairly across calls of different lengths.

SQL example

Weekly freeze totals for inbound video:

SELECT
  DATE_TRUNC('week', server.created_at) AS week,
  SUM(track.freeze_count)                    AS freezes,
  SUM(track.total_freezes_duration) / 1000.0 AS freeze_seconds
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'
GROUP BY week
ORDER BY week ASC;

See also