WebRTC with libaom-av1 test

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

Bitrate Test

I have tested with video 720p, 30FPS with difference bitrate and here is result

AV1 720p 30Kbps
AV1 720p 100 Kbps
AV1 720p 500Kbps
AV1 720p 1000Kbps
AV1 720p 1500Kbps
AV1 720p 2000Kbps

Latency Test

scenario

  • 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)

Result

  • 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.

Reference