Change:
kdenlive can't encode to AV1 due to missing access to libaom-av1 Steps to reproduce the behavior: a new project. → Render → Ultra-High Definition (4K) WebM-AV1/Opus (libre) is available. instead it is disabled. ! This is strange because the package appears to try an use the : I also have ffmpeg installed in my PATH with libaom-av1 support: <details<summary<code% ffmpeg -help encoder=libaom-av1</code</summary</details The exact package I am using is which is available in system: host os: multi-user?: sandbox: version: channels(root): nixpkgs:
Can reproduce.
Is this related to ?
I'm not sure, but it might be that the encoding libraries are actually not limited by the that uses, but by , which uses and not .
This issue has been mentioned on NixOS Discourse. There might be relevant details there:
Yes, this seems to be the issue.
Hi there :) I updated my channels and then rebuild, and still haven't gotten this fix. It still shows the same error, as in the original screenshot. I even libaom by hand, still the same.
Which channels have you updated, and to which versions?
11 and with nix-channel --update
Ah ok, as you see the issue was reported after release of 23.11, so it is fixed only in (and the next release).
I am on NixOS unstable () and Kdenlive 24.02.2 still reports "Unsupported video codec: libaom-av1".
Yes, it seems to have regressed for me as well.
I can't easily bisect the kdenlive derivation itself as it fails to load pipewire shared libraries probably due to skew between my base system and the built kdenlive. However I ran a bisection on with the override and found to be the culprit. At first glance this seems like it should be unrelated. <details<summarybisect script</summary</details
So before this change depends on both ffmpeg 4 and 6. After this change only 6 is in the dependency graph. Maybe 4 was somehow being used and that is needed for to work?
does have libaom-av1. So presumably something isn't working with ffmpeg 6. Reverting to 4 for now is a possible solution but likely has a lot of downsides as well.
It is worth noting that ffmpeg 6 does have libaom support. So it is possibly an incompatibility between mlt and ffmpeg.
I do see that we are linking two versions of ffmpeg. -full and non-full. So possibly what is happening is that when the other version was 4 it wasn't getting used, so full was. But now that both are 6 the wrong one happens to get used.
This fixes the issue. Maybe the best solution is updating to use the same as . However this makes me think that this isn't the best solution in general.
Created to propagate the ffmpeg version through . I don't know if this fix is the most maintainable solution, but it solves this problem and doesn't harm maintainability.

Discussion:
, wrapGAppsHook }: <ins> let mlt-full = mlt.override { ffmpeg = ffmpeg-full; }; in </ins> mkDerivation { pname = "kdenlive"; nativeBuildInputs = [

kplotting ktextwidgets mediainfo <del> mlt </del> <ins> mlt-full </ins> phonon-backend-gstreamer qtdeclarative qtmultimedia

# https://github.com/NixOS/nixpkgs/issues/83885 patches = [ ./dependency-paths.patch ]; <del> inherit mlt mediainfo; </del> <ins> inherit mediainfo; </ins> ffmpeg = ffmpeg-full; <ins> mlt = mlt-full; </ins> postPatch = # Module Qt5::Concurrent must be included in `find_package` before it is used.