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:
- MediaStream Recording API: used by our (inline) desktop recording client
- 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:
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:
- on iOS & iPadOS you get either 480x360 (and it's portrait variant) when recording on the spot OR 1280x720 (and it's portrait variant) when choosing a recording from library.
- on Android you get whatever the device is configured to record at (there's no forced compression going on as there is on iOS/iPad OS).
iOS & iPadOS
So you're looking at:
- 894kbits/s (and 480x360 resolution) when capturing a video on the spot
- 2.69 Mbits/s (and 1280x720 ) when selecting a pre-made recording from the library
- 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.
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.