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 already in use
The microphone or camera is present but cannot be read, typically because another application is already using it.
Description
getUserMedia rejects with a NotReadableError when a media device is detected by the system but the browser cannot actually start reading from it. The most common reasons are:
- Another application already has the device open (for example a native video-conferencing client, a recording tool, or another browser tab / profile).
- The device driver crashed or is in a bad state.
- A hardware fault prevents the operating system from delivering frames or audio samples.
- On some platforms, an OS-level privacy dialog is pending and the stream cannot be opened yet.
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 a response returned contains the error NotReadableError.
Notes
NotReadableError is different from NotFoundError (device does not exist) and from NotAllowedError (permission denied). The device was enumerated successfully, the error happens when the browser actually tries to open the capture pipeline.
Our suggestions
- Ask the user to close other applications that may be using the microphone or camera.
- Provide a UI to retry the capture once the other application is closed.
- If the error is persistent, let the user pick another device through
enumerateDevices.