We were recently asked about video bitrates and file sizes:

...are there typical file sizes for low, medium and high quality of, say, 1 minute of video responses?

My immediate answer was that it depends on many factors, but then I realized I should try and dig in the data. Over our large dataset, we should find some typical bitrates one could expect esp. when working with large volumes

So we've looked at the two mechanisms that we use to capture videos from users and what bitrates they produce:

  1. MediaStream Recording API: used by our (inline) desktop recording client
  2. HTML Media Capture: used by our native mobile recording client

MediaStream Recording API

Since this API allows you to request a resolution from your camera we've looked at 3 typical resolutions which should be supported by most USB/integrated webcams:

  • 320x240
  • 640x480
  • 1280x720

We've pulled from the database the 1st 10k recordings from 2021 recorded in that resolution and then further filtered by browser (Chrome and Firefox).

For 320x240 recordings:

  • the average bitrate over 5691 recordings made with Chrome was 183 kb/s.  
  • the average bitrate over 374 recordings made with Firefox was 2Mb/s.

I suspect the difference in bitrate is mostly because Firefox compresses video data  using (only) VP8 while with Chrome we're using H.264.

Also, we don't have user agent information for all the recordings, that's why the number of recordings don't add up to 10k.

For 640x480 recordings:

  • the average bitrate over 7501 recordings made with Chrome was 589 kb/s.
  • the average bitrate over 181 recordings made with Firefox was 2.64 Mb/s.

For 1280x720 recordings:

  • the average bitrate over 6956 recordings made with Chrome was 1.97 Mb/s.
  • the average bitrate over 1265 recordings made with Firefox was 2.69 Mb/s.

With HD recordings, there's plenty of room for variance introduced by camera quality and light setups (low lit environments produce a noisy image that is hard to encode efficiently).

You'll see two parallel Chrome lines around the 2Mbits/s mark. The upper one is for Chrome on Windows, while the lower one is for Chrome on macOS. I might be wrong, but I suspect they use different H.264 encoders. If that's not it, then it's the FaceTime camera you're getting with every macOS device.

Here's the Chrome data broken down by operating system:

HTML Media Capture

This API allows you to rely on the OS' apps and capabilities to capture audio and video. It works on Android and on iOS/iPadOS (but not for audio only recordings).

With HTML Media Capture you can't control or specify the resolution, but from previous experience we know that:

iOS & iPadOS

So you're looking at:

  1. 894kbits/s (and 480x360 resolution) when capturing a video on the spot
  2. 2.69 Mbits/s (and 1280x720 ) when selecting a pre-made recording from the library
  3. 1.8 Mbits/s average

We've also looked at the number of recordings that we got through HTML Media Capture  from iOS/iPadOS with resolutions different than 480x360, 1280x720 and their portrait variants. Out of 10k recordings only 548 had a different resolution.

Android

With HTML Media Capture on Android you get whatever is configured on the device. We thus see quite a few 4k recordings. Since you can't request a specific resolution we've only calculated the average over all 10k recordings: 12.9 Mbits/s.

Here's the same data but sorted by bitrate. You can better see the groupings around the 20 Mbits/s mark.

These numbers are very relevant for data coming in from the browser. After processing these files and transcoding some of the data, the numbers might differ. For example we convert the VP8 video data from Firefox to H.264 and the Opus audio data to AAC.