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
trackvideoinboundfreezequality

Freezes (feature)

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;

Related features

See also