>>276194
Alright, I wanted to test the SVT-AV1 encoder since it's supposedly built for multithreading and speed. Decided to do multiple versions of the other level video (2-2) at different presets and bitrates. Apologies in advance for the wall of autism.
I'm using 2 pass encoding, which takes longer but gives better results at low bitrates. The old WEBM for dummies formula is
>estimate target filesize in kb = X * (time in seconds) / 8
To target roughly the same filesize as >>276008 but for 2:32 instead of 4:06, I estimated I need to hit about 11MB, so leaving headroom for the audio I picked 580kb/s bitrate.
SVT-AV1's speed is mainly impacted by which preset you use. Lower presets are slower, but give better results.
First step is to have ffmpeg decode the original file into .y4m format (unencoded), then run SvtAv1EncApp on that to make an output .ivf file, and finally use ffmpeg to mux that .ivf into the video and re-encode the audio using libopus. I just appended the three commands using &&, but the first and last step both take about 10 seconds combined, so most of the recorded times are the encode using SVT-AV1.
Now for the commands I ran (on linux):
>480p like your video in >>276008 at preset 4
ffmpeg -i 2-2_original.mp4 -vf scale=720:480 -map 0:v:0 temp.y4m && SvtAv1EncApp -i temp.y4m --preset 4 --keyint 300 --input-depth 8 --scd 1 --rc 1 --tbr 580k --passes 2 --stats "2pass.stat" --tune 0 -b outfile.ivf && ffmpeg -i outfile.ivf -i 2-2_original.mp4 -map 0:v -map 1:a:0 -c:v copy -c:a libopus -b:a 24000 480p_2pass_preset4_580k.webmThis took 3:21 minutes
>720p at preset 2
ffmpeg -i 2-2_original.mp4 -vf scale=1280:720 -map 0:v:0 temp.y4m && SvtAv1EncApp -i temp.y4m --preset 2 --keyint 300 --input-depth 8 --scd 1 --rc 1 --tbr 580k --passes 2 --stats "2pass.stat" --tune 0 -b outfile.ivf && ffmpeg -i outfile.ivf -i 2-2_original.mp4 -map 0:v -map 1:a:0 -c:v copy -c:a libopus -b:a 24000 720p_2pass_preset2_580k.webmThis took 22:43
As a bonus, I tried a single pass encode at preset 6, using CRF instead of setting the bitrate manually. CRF doesn't support 2 pass encoding, is more variable instead of having a constant bitrate, but also doesn't let you target a specific filesize - I just ran it a few times at different settings between 50 and 63 (the max) with higher = worse quality until I got something I could include in the 32MB filesize limit.
>480p, 1-pass, 61 CRF
ffmpeg -i 2-2_original.mp4 -vf scale=720:480 -c:v libsvtav1 -preset 6 -g 300 -crf 61 -svtav1-params tune=0:enable-overlays=1:scd=1 -c:a libopus -b:a 24000 2-2_singlepass_6_61crf.webmThis took 1:34. Lower CRF is faster (50 took under a minute, but was 18MB. Looked great though.)
Some extra info:
>in case it wasn't clear, -vf scale= is what decides the output resolution, and --tbr is the target bitrate
>all the files use libopus for audio, at a bitrate of 24 kb/s which is pretty low but I can't tell the difference anyway, either my ears are shit or my headphones are
>I have a 5950x, with 16 cores/32 threads, so most likely you'd take a decent chunk longer if you have a more reasonable CPU aimed at gaming instead of compiling my browser
I'd say the two 11mb files are equivalent in bitrate to your file in >>276008 even though the preset 2 one has better resolution. If we go with a naive assumption that it'd take 4x longer on a quadcore gaming CPU that'd take a bit under and hour and a half for the 720p one, and under 15 minutes for the equal resolution one. The singlepass one has a bit of smearing on fast motion, especially on Penny, but then again it's smaller filesize and took virtually no time. Something like 58 CRF would probably be only barely worse, and really fast, so that's worth considering if high resolution isn't a must. For reference, supposedly 30 CRF is good for 1080p, which I'm gonna try to compress some of my anime collection to possibly clear up a load of harddrive space.
tl;dr SVT-AV1 is pretty neat, maybe give it a try