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
getUserMedia (feature)
Client-level features recording whether and how getUserMedia was called, and how often it succeeded or failed: the earliest signal of a broken capture funnel.
Description
Client-level features, extracted per session into features_client.
These features record how the application used getUserMedia, the API that requests camera and microphone access. rtcstats-server derives them from the client trace:
calledGetUserMedia- whethergetUserMediawas called at least once.calledGetUserMediaAudio/calledGetUserMediaVideo- whether audio and/or video were requested.calledGetUserMediaCombined- whether a single call requested both audio and video.getUserMediaError- the error name of the first failed call.getUserMediaErrorCount/getUserMediaSuccessCount- how many calls failed and succeeded.
This is part of the open-source rtcstats-features extraction and is written to your own database.
Why it matters
getUserMedia is the first thing that has to work in almost every call. If it fails, the user never gets into the session, so a rising getUserMediaErrorCount (or a falling success ratio) is one of the earliest, cheapest signals that something upstream broke, whether a permissions prompt regression, a device driver issue, or a browser update. Because it is captured for every session, you can trend the failure rate over time and catch a funnel problem before it shows up as churn.
Typical values
- Healthy: success count ≥ 1, error count 0 for the vast majority of sessions.
- Concerning: a sustained population-level failure rate above a few percent.
- The first
getUserMediaErrorvalue (e.g.NotAllowedError,NotFoundError,NotReadableError) tells you which failure mode dominates.
SQL example
Population failure rate for the last 7 days:
SELECT
SUM(client.get_user_media_error_count)::float
/ NULLIF(SUM(client.get_user_media_error_count + client.get_user_media_success_count), 0)
AS failure_rate
FROM "rtcstats-server" AS server
JOIN features_metadata AS metadata ON metadata.dump_id = server.id
JOIN features_client AS client ON client.dump_id = metadata.id
WHERE server.created_at > NOW() - INTERVAL '7 days';
Related features
- getUserMedia errors correlate with track lifecycle features (
audioShortDuration,videoShortDuration). - Connection setup time - the next thing that must succeed once capture works.
See also
- rtcstats-server feature extraction - the full feature reference (these features live in
rtcstats-features). - How to query rtcstats-server features - more SQL recipes.
- MDN: MediaDevices->getUserMedia()