diff --git a/pkgs/applications/kde/ffmpeg-path.patch b/pkgs/applications/kde/ffmpeg-path.patch
new file mode 100644
index 000000000000..a0cef882f596
--- /dev/null
+++ b/pkgs/applications/kde/ffmpeg-path.patch
@@ -0,0 +1,25 @@
+diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg
+index 5edad5ae7..d35347a40 100644
+--- a/src/kdenlivesettings.kcfg
++++ b/src/kdenlivesettings.kcfg
+@@ -403,17 +403,17 @@
+ 
+     <entry name="ffmpegpath" type="Path">
+       <label>FFmpeg / Libav binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffmpeg</default>
+     </entry>
+ 
+     <entry name="ffplaypath" type="Path">
+       <label>FFplay / avplay binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffplay</default>
+     </entry>
+ 
+     <entry name="ffprobepath" type="Path">
+       <label>FFprobe / avprobe binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffprobe</default>
+     </entry>
+ 
+     <entry name="mltthreads" type="Int">
diff --git a/pkgs/applications/kde/kdenlive.nix b/pkgs/applications/kde/kdenlive.nix
index b7c691e9594b..95496f90e043 100644
--- a/pkgs/applications/kde/kdenlive.nix
+++ b/pkgs/applications/kde/kdenlive.nix
@@ -70,14 +70,24 @@ mkDerivation {
     kpurpose
     kdeclarative
   ];
-  patches = [ ./mlt-path.patch ];
+  # Both MLT and FFMpeg paths must be set or Kdenlive will complain that it
+  # doesn't find them. See:
+  # https://github.com/NixOS/nixpkgs/issues/83885
+  patches = [ ./mlt-path.patch ./ffmpeg-path.patch ];
   inherit mlt;
+  ffmpeg = ffmpeg-full;
   postPatch =
     # Module Qt5::Concurrent must be included in `find_package` before it is used.
     ''
       sed -i CMakeLists.txt -e '/find_package(Qt5 REQUIRED/ s|)| Concurrent)|'
       substituteAllInPlace src/kdenlivesettings.kcfg
     '';
+  # Frei0r path needs to be set too or Kdenlive will complain. See:
+  # https://github.com/NixOS/nixpkgs/issues/83885
+  # https://github.com/NixOS/nixpkgs/issues/29614#issuecomment-488849325
+  qtWrapperArgs = [
+    "--set FREI0R_PATH ${frei0r}/lib/frei0r-1"
+  ];
   meta = {
     license = with lib.licenses; [ gpl2Plus ];
   };