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 page5 sections
trackaudiovideoinboundoutbound

Track identity (feature)

Last updated Applies tortcstats-serverrtcstats.com

Track-level identity features that set the grain of a track row: media kind, direction, track identifier, and when the track was added.

Description

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

These features identify what a features_track row is and how it joins to the rest of a session:

  • kind - media type of the track, audio or video.
  • direction - outbound (sent by this peer) or inbound (received by this peer).
  • trackIdentifier - the track id, ties the row back to a specific MediaStreamTrack.
  • startTime - when the track was added to the connection.

Extracted by the open-source rtcstats-features package.

Why it matters

kind and direction are the two filters you reach for on almost every feature query. A single connection carries audio and video, sent and received, so every metric in features_track is meaningful only once you have split by these two columns. Audio concealment, video freezes, encoder cost: each belongs to one specific slice, and mixing slices produces numbers that mean nothing.

trackIdentifier gives you a stable handle on one track across the session, useful when you correlate a track row with raw getStats dumps or with signaling logs. startTime tells you when the track joined, which matters for tracks added mid-call (a screen share started later, a camera toggled on) and for normalizing cumulative counters by how long the track was actually live.

Treat features_track.connection_id = features_connection.id as the join key, then filter on kind and direction to reach the grain you want.

SQL example

Count tracks by kind and direction:

SELECT
  track.kind,      -- 'audio' or 'video'
  track.direction, -- 'inbound' or 'outbound'
  COUNT(*) AS tracks
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
GROUP BY track.kind, track.direction
ORDER BY track.kind, track.direction;
  • Codec - the negotiated codec for each identified track.

See also