SUMMARY Hi, I use SVT-AV1 to make smaller videos for Odysee, specially gameplays, but since the previous Kdenlive version, the app doesn't take the value set for CRF/qscale, so the resultant video always takes up the same amount of space. I tried with the default config for AV1 changing from AOM-AV1 to SVT-AV1 and I have the same result. I'm used to set the CRF to 42 or higher (lower quality) to make the video as small as possible within a decent visual quality. STEPS TO REPRODUCE 1. Make a video with Kdenlive. 2. Try to set a different value for CRF for SVT-AV1, mainly if the value is higher than 31 (lower quality). Yo have to set that with a custom render profile. 3. You see that resultant videos always take up the same amount of disk space. I use the Flatpak version of Kdenlive because I use Aeon Desktop as operating system. I don't use parallel processing with SVT-AV1. I share two examples of the presets I use for rendering with SVT-AV1. EXAMPLE 1: ab=128k acodec=libopus bf=3 channels=2 cpu-used=8 f=webm g=300 qscale=31 real_time=-1 row-mt=1 strict=experimental threads=15 tile-columns=2 tile-rows=1 vbr=off vcodec=libsvtav1 EXAMPLE 2: ab=128k acodec=libopus bf=3 channels=2 cpu-used=8 f=webm g=300 qscale=31 real_time=-1 row-mt=1 strict=experimental threads=15 tile-columns=2 tile-rows=1 vbr=off vcodec=libsvtav1
Sorry, the examples weren't correct. EXAMPLE 1: ab=128k acodec=libopus bf=3 channels=2 cpu-used=8 f=webm g=300 qscale=42 real_time=-1 row-mt=1 strict=experimental threads=15 tile-columns=2 tile-rows=1 vbr=off vcodec=libsvtav1 EXAMPLE 2: ab=128k acodec=libopus bf=3 channels=2 cpu-used=8 f=webm g=300 qscale=54 real_time=-1 row-mt=1 strict=experimental threads=15 tile-columns=2 tile-rows=1 vbr=off vcodec=libsvtav1
You can try the default AV1 configuration switching from libaom-av1 to libsvtav1 and you will see that the CRF you set has no effect. The resultant video always has the same size.
I have observed the same issue, and it is because the quality set is being passed to the "qscale" option string, where what is needed is to set the "crf" option string. This can be overcome by manually editing the Preset XML file (mine is located at ~/.local/share/kdenlive/export/customprofiles.xml): - in the "args" attribute, replace `qscale=%quality` with `crf=%quality` - add to the profile the XML attribute `qualities="1,63"` kdenlive has to be restarted to re-read the render presets file. After this I can chose different CRF factors and see different size files. However, if I use the graphical render preset editor to change anything, then these changes are lost and I have to add them back in.
A possibly relevant merge request was started @ https://invent.kde.org/multimedia/kdenlive/-/merge_requests/691
Git commit d52d9a14fcb15797fc4294562a1f55be193aec49 by Jean-Baptiste Mardelle, on behalf of Richard Ash. Committed on 31/07/2025 at 11:08. Pushed by mardelle into branch 'master'. Add SVT-AV1 to codecs which use `crf` option SVT-AV1 code uses the ffmpeg option `crf` to set set the rate factor for VBR and constrained VBR mode, rather than `qscale`. Preserve custom quality scale when editing presets. M +10 -3 src/dialogs/renderpresetdialog.cpp M +9 -3 src/renderpresets/renderpresetmodel.cpp M +2 -1 src/renderpresets/renderpresetmodel.hpp M +9 -9 tests/rendermodeltest.cpp https://invent.kde.org/multimedia/kdenlive/-/commit/d52d9a14fcb15797fc4294562a1f55be193aec49
Git commit 7c60159827fc10f520de88b1dfedbc0686e99724 by Jean-Baptiste Mardelle, on behalf of Richard Ash. Committed on 31/07/2025 at 14:50. Pushed by mardelle into branch 'release/25.08'. Add SVT-AV1 to codecs which use `crf` option SVT-AV1 code uses the ffmpeg option `crf` to set set the rate factor for VBR and constrained VBR mode, rather than `qscale`. Preserve custom quality scale when editing presets. M +10 -3 src/dialogs/renderpresetdialog.cpp M +9 -3 src/renderpresets/renderpresetmodel.cpp M +2 -1 src/renderpresets/renderpresetmodel.hpp M +9 -9 tests/rendermodeltest.cpp https://invent.kde.org/multimedia/kdenlive/-/commit/7c60159827fc10f520de88b1dfedbc0686e99724