WebRTC Metrics

A comprehensive overview of WebRTC statistics, derived indicators, and observable signals, to better understand call quality, connectivity, and user experience in rtcStats

Back
peripheralbug

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 ideal over exact so the browser picks the closest supported value instead of failing.
  • Probe the device capabilities with navigator.mediaDevices.getSupportedConstraints() or MediaStreamTrack.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.