WebRTC Metrics
A comprehensive overview of WebRTC statistics, derived indicators, and observable signals, to better understand call quality, connectivity, and user experience in rtcStats
Device can't fully support application request
The media device cannot satisfy the requested constraints (resolution, frame rate, specific deviceId, etc.).
Description
getUserMedia rejects with an OverconstrainedError when none of the available devices can satisfy the constraints requested with exact (or an advanced constraint set that cannot be met). Typical examples:
- Requesting a specific resolution with
width: { exact: 1920 }on a camera that does not support 1080p. - Requesting a specific frame rate with
frameRate: { exact: 60 }that the camera cannot deliver. - Pinning
deviceId: { exact: "..." }for a device that is not currently connected. - Combining several advanced constraints that no capture configuration can satisfy at the same time.
When this error is raised, the user cannot send the corresponding media to remote participants.
What do we do here?
We look at every getUserMedia call. We mark an observation if the answer returned contains the error OverconstrainedError.
Notes
An OverconstrainedError can be expected during a capability probing flow where the application tries several constraint sets to discover what the device supports.
Our suggestions
- Prefer
idealoverexactso the browser picks the closest supported value instead of failing. - Probe the device capabilities with
navigator.mediaDevices.getSupportedConstraints()orMediaStreamTrack.getCapabilities()and adapt the constraints accordingly. - Provide a graceful fallback to a lower tier (for example 540p or 360p) when the high-quality constraints cannot be satisfied.