alexheretic / ab-av1

AV1 re-encoding using ffmpeg, svt-av1 & vmaf.
MIT License
442 stars 29 forks source link

Suggestion: preset7 as new default due to the massive speed gains of SVT-AV1 1.7.0 #156

Closed mr44er closed 10 months ago

mr44er commented 1 year ago

https://gitlab.com/AOMediaCodec/SVT-AV1/-/releases#170-2023-08-24

I haven't benchmarked the differences between 7 and 8 now, but I switched from my personal default preset3 (~1,1fps 4k cropped@1.6.0) to preset2 (~0,8fps 4k cropped@1.7.0), crop=3840:1920:0:120 on Ryzen 7 3800X to be exactly.

preset2 on 1.6.0 was inacceptable slow.

alexheretic commented 12 months ago

Yeah it's a good thought. We'd needs some benches to inform a change of default.

mr44er commented 11 months ago

1080p/preset8@1.6.0:

ab-av1 crf-search --thorough --preset 8 -i t53vidonly.mkv
- crf 32 VMAF 95.47 (12%) (cache)
- crf 43 VMAF 92.64 (6%) (cache)
- crf 34 VMAF 95.11 (11%) (cache)
- crf 35 VMAF 94.89 (10%)
  00:00:18 ########################################################################################### (sampling crf 35, eta 0s)
Encode with: ab-av1 encode -i t53vidonly.mkv --crf 34 --preset 8

crf 34 VMAF 95.11 predicted video stream size 40.95 MiB (11%) taking 2 minutes
...
time ab-av1 encode -i t53vidonly.mkv --crf 34 --preset 8 --video-only
Encoding t53vidonly.av1.mkv
  00:02:18 #################################################################################################### (65 fps, eta 0s)Encoded 65.34 MiB (12%)
      138.87 real      1696.52 user        46.86 sys

1080p/preset7@1.6.0:

ab-av1 crf-search --thorough --preset 7 -i t53vidonly.mkv
- crf 32 VMAF 95.62 (12%)
- crf 43 VMAF 92.90 (6%)
- crf 35 VMAF 95.06 (10%)
- crf 36 VMAF 94.81 (9%)
  00:01:17 ########################################################################################### (sampling crf 36, eta 0s)
Encode with: ab-av1 encode -i t53vidonly.mkv --crf 35 --preset 7

crf 35 VMAF 95.06 predicted video stream size 37.49 MiB (10%) taking 3 minutes
...
time ab-av1 encode -i t53vidonly.mkv --crf 35 --preset 7 --video-only
Encoding t53vidonly.av1.mkv
  00:03:11 #################################################################################################### (47 fps, eta 0s)Encoded 59.60 MiB (11%)
      191.22 real      2455.07 user        45.63 sys

1080p/preset8@1.7.0:

ab-av1 crf-search --thorough --preset 8 -i t53vidonly.mkv
- crf 32 VMAF 95.65 (12%)
- crf 43 VMAF 93.03 (7%)
- crf 35 VMAF 95.09 (10%)
- crf 36 VMAF 94.88 (10%)
  00:01:16 ##################################################################################################################################### (sampling crf 36, eta 0s)
Encode with: ab-av1 encode -i t53vidonly.mkv --crf 35 --preset 8

crf 35 VMAF 95.09 predicted video stream size 39.79 MiB (10%) taking 3 minutes
...
time ab-av1 encode -i t53vidonly.mkv --crf 35 --preset 8 --video-only
Encoding t53vidonly.av1.mkv
  00:02:55 ############################################################################################################################################## (51 fps, eta 0s)
Encoded 61.70 MiB (12%)
      175.35 real      1821.07 user       143.19 sys

1080p/preset7@1.7.0:

ab-av1 crf-search --thorough --preset 7 -i t53vidonly.mkv
- crf 32 VMAF 95.79 (12%)
- crf 43 VMAF 93.32 (6%)
- crf 36 VMAF 95.07 (9%)
- crf 37 VMAF 94.85 (9%)
  00:01:25 ##################################################################################################################################### (sampling crf 37, eta 0s)
Encode with: ab-av1 encode -i t53vidonly.mkv --crf 36 --preset 7

crf 36 VMAF 95.07 predicted video stream size 35.73 MiB (9%) taking 3 minutes
...
time ab-av1 encode -i t53vidonly.mkv --crf 36 --preset 7 --video-only
Encoding t53vidonly.av1.mkv
  00:04:15 ############################################################################################################################################## (35 fps, eta 0s)
Encoded 55.52 MiB (11%)
      255.34 real      2855.04 user       164.74 sys

This is the same good optimization effect that I see from preset3 to preset2. But it also shows that preset8 itself has been optimized and you could leave it as standard. On the other hand, preset7 doesn't take much more time. I tend to choose the higher quality with preset7 anyway, but that's just me :)

alexheretic commented 10 months ago

Thanks for the investigation. I think I'll leave the presets as is.

Perhaps we could add some env var support or ab-av1 config file where users could specify overrides for these defaults though? Please raise another issue if you're interested in that.