Your GPU might support AV1 encoding, but svtav1 is a software encoder running on your GPU.
Libaom is also a software encoder but not optimized and extremely slow as you noticed.
I think the size differences simply come from the parameters you chose, each encoder has its own parameters, arguments, maximum and minimum.
If your NVIDIA GPU supports AV1 encoding, then via nvenc.
Here is documentation and how you can list encoders and their options:
https://ffmpeg.org/ffmpeg-codecs.html#Encoders
ffmpeg --list-encoders
#list encoder options, here example for the "quicksync video" encoder from Intel
ffmpeg -h encoder=av1_qsv
GPU encoding is extremely fast but does not have the benefits of svtav1
- size is way bigger, at the benefit of speed
- there might be very big blocky artefacts
- no artificial noise generation and denoising, which make the image look smooth and add artificial grain, instead of trying to compress the grain and causing visible blocks everywhere. This is controversial but especially for
- no multipass encoding afaik. Multipass is a fancy thing where the encoder analyzes a video first and then encodes it in the second run (as far as I know), so it "knows" the video better and can react to bitrate changes better and give smaller sizes
For livestreaming, GPU encoding is essential. For reencoding movies (always use the highest available quality, e.g. a 2160p Bluray remux -> 1080p AV1 encode) software encoders are way better.
I have an Intel Arc and basically gave up on GPU encoding because of horrible quality, maybe nvenc is better though.