Depending on your users, their browsers and devices and also depending on if you'd like to collect existing videos from them or let them record (webcam or mobile) videos on your website, there are parameters available in the video API's documentation that you can modify for the best user experience.
As a point of general advice, your users will see the best performance using Google Chrome. Chrome holds more than 60% of the global desktop browser market with its share increasing every month. It provides the most modern technologies and underlying features that allows our API to work most efficiently. In fact, Chrome can be 2-3 times faster than other browsers on the same computer.
We're always adopting new performance-enhancing capabilities in other browsers as soon as they become available. For instance, there are 3 features scheduled to arrive in Edge, Firefox and Safari in upcoming releases that will result in noticeable performance improvements.
Performance improvement suggestions
- On certain Chromebooks (or other ChromeOS devices), we offer hardware-accelerated MP4 encoding, which is about 4-5 times faster than non-accelerated transcoding. To enable this capability, pass the "h264-hardware-acceleration" flag into the "experimental" parameter.
- If your primary use case is allowing your users and website visitors to do webcam recordings, setting the output format to WebM will greatly improve the video conversion performance at the end of a recording (in Chrome, Firefox, and Opera). See for yourself by recording a testing video at https://clipchamp.com/en/products/collect/video-api
- The "encoding.compression" parameter represents a trade-off between processing time and file size. By lowering the parameter to "low" you will receive slightly larger files from your users, however the processing time will be reduced.
- The same is true for the output resolution: lowering the resolution can dramatically reduce file sizes while also improving processing times.
- Set a standard frame rate for all input videos your users submit to you using the encoding.fps parameter. 24 or 30 frames per second (fps) are sufficient for most circumstances.
- Limiting the maximum length of recordings using the camera.limit parameter.
- For Chrome on Android devices: use the mobile-webcam-format-fallback flag of the enable parameter to have recorded videos automatically get compressed and converted into WebM files before they get uploaded to you.