WebRTC with libaom-av1 test
AV1 is a new video codec developed by Alliance for Open Media (AOMedia). The AV1 encoder achieved 34%, 46.2% and 50.3% higher than libvpx-vp9 and better 10-20% with H.265/HEVC, but trade off with high resource & time to encode the format. However decoder does not take CPU resources too much, well-known av1 decoder lib like dav1d is very good performance.
libaom-av1 version 2 has RT mode which supports live encoder, It is build-in Chrome 89 or above. Performance is quite good and acceptable.
Chrome AV1 encode plans for milestone 89 note:
AV1 encode is requested by a number of RTC applications, including Duo, Meet, and Webex. The primary benefits of AV1 are:
- better compression efficiency to reduce bandwidth consumption and improve visual quality
- Enabling video for users on very low bandwidth networks (offering video at 30kbps and lower)
- Significant screen sharing efficiency improvements over VP9 and other codecs
I have tested with video 720p, 30FPS with difference bitrate and here is result
- Both computer encode and decode each others, on the other hand User A call User B
- So User A & User B is located in Thailand, Media Server & TURN is located in Singapore.
- Media Server locate in Singapore, RTT from Thailand around ~30ms
- Resolution: 1280x720 (source from OBS - Virtual Webcam)
- Video encode: AV1
- Force bitrate: 100 - 2000 Kbps
- TURN server locate in Singapore, server name turn2.l.google.com (RTT ~30)
- video source: 720p/30fps at 500Kbps
- encode time: ~120ms
- end-to-end latency: ~150ms
Seems encoding time is a key factor. Better CPU or Hardware (GPU) support AV1. Possible to get lower latency.