After using the Permissions API to accurately measure how users interact with the camera & microhone permissions dialog we realised we could measure more.

The Permissions API data allows us to filter those getUserMedia() requests which will not show a permission dialog because of a previous granted permission. With the human interaction removed we can accurately measure the time it takes to initialize the camera and microphone devices.

The chart below plots the time passed since executing getUserMedia() until a successful promise is returned. Time slots are in milliseconds.

This chart plots the time passed since executing getUserMedia() until a successful promise is returned (Chrome only).

The chart relies on Chrome data only because:

  1. it is the only major browser to support the camera and microphone permissions with the Permissions API
  2. on Chrome the granted permission is persistent. On Firefox it is not, users get the prompt again after a refresh.

What I  take from the above chart is that:

  • instantly responding cameras & microphones are just a myth, the time hardware takes to initialize differs and it varies quite a bit BUT
  • 80% of times the hardware initializes in under 1 second
  • 95% of times in under 2 seconds.

The chart above is based on roughly 100k getUserMedia() calls made through our Pipe video recording platform.