about summary refs log tree commit diff
path: root/pkgs/applications/video
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/video')
-rw-r--r--pkgs/applications/video/anilibria-winmaclinux/default.nix6
-rw-r--r--pkgs/applications/video/cinelerra/default.nix9
-rw-r--r--pkgs/applications/video/davinci-resolve/default.nix8
-rw-r--r--pkgs/applications/video/electronplayer/electronplayer.nix1
-rw-r--r--pkgs/applications/video/gnome-mplayer/default.nix1
-rw-r--r--pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix1
-rw-r--r--pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/jellycon/default.nix55
-rw-r--r--pkgs/applications/video/kodi/addons/youtube/default.nix4
-rw-r--r--pkgs/applications/video/media-downloader/default.nix4
-rw-r--r--pkgs/applications/video/mpv/scripts/mpvacious.nix4
-rw-r--r--pkgs/applications/video/mythtv/default.nix20
-rw-r--r--pkgs/applications/video/mythtv/dont-source-os-release.patch2
-rw-r--r--pkgs/applications/video/obs-studio/default.nix30
-rw-r--r--pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix10
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix2
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix4
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-replay-source.nix6
-rw-r--r--pkgs/applications/video/pipe-viewer/default.nix4
-rw-r--r--pkgs/applications/video/pyca/default.nix1
-rw-r--r--pkgs/applications/video/qmplay2/default.nix4
-rw-r--r--pkgs/applications/video/streamlink/default.nix23
-rw-r--r--pkgs/applications/video/streamlink/ffmpeg-path.patch13
-rw-r--r--pkgs/applications/video/stremio/default.nix15
-rw-r--r--pkgs/applications/video/vdr/markad/default.nix5
-rw-r--r--pkgs/applications/video/vdr/nopacity/default.nix4
-rw-r--r--pkgs/applications/video/vdr/plugins.nix1
-rw-r--r--pkgs/applications/video/vdr/softhddevice/default.nix4
-rw-r--r--pkgs/applications/video/youtube-tui/default.nix10
29 files changed, 167 insertions, 88 deletions
diff --git a/pkgs/applications/video/anilibria-winmaclinux/default.nix b/pkgs/applications/video/anilibria-winmaclinux/default.nix
index 32872e98bebf..d35947be850b 100644
--- a/pkgs/applications/video/anilibria-winmaclinux/default.nix
+++ b/pkgs/applications/video/anilibria-winmaclinux/default.nix
@@ -16,13 +16,13 @@
 
 mkDerivation rec {
   pname = "anilibria-winmaclinux";
-  version = "1.2.14";
+  version = "1.2.15";
 
   src = fetchFromGitHub {
     owner = "anilibria";
     repo = "anilibria-winmaclinux";
-    rev = "d941607f078c72fca104ee1e7916cc0ddcc0acf5";
-    sha256 = "sha256-G4KlYAjOT1UV29vcX7Q8dMTj0BX0rsJcLtK2MQag5nU=";
+    rev = version;
+    sha256 = "sha256-pfM3o4H3XJ4ZE0FXVR1k8pc7lr7SOQjKEMWuG9YkvvI=";
   };
 
   sourceRoot = "${src.name}/src";
diff --git a/pkgs/applications/video/cinelerra/default.nix b/pkgs/applications/video/cinelerra/default.nix
index 972a68e04f03..6bad50d9e453 100644
--- a/pkgs/applications/video/cinelerra/default.nix
+++ b/pkgs/applications/video/cinelerra/default.nix
@@ -44,13 +44,13 @@
 
 stdenv.mkDerivation {
   pname = "cinelerra-cv";
-  version = "unstable-2023-01-29";
+  version = "2.3-unstable-2024-03-20";
 
   src = fetchFromGitHub {
     owner = "cinelerra-cv-team";
     repo = "cinelerra-cv";
-    rev = "bb00ac6b70fcf3cf419348b56f9b264bc01c1a89";
-    sha256 = "11965kb3d7xcvlcf8p7jlzk9swk5i78x7wja4s3043wlzmqmwv0q";
+    rev = "18a693425f78f7c4c68b5a342efce3e8db2a30dc";
+    hash = "sha256-+47Xa63GoKiQzEXbxmKUwJLDIFUnzc/FfxRPXCCxzpE=";
   };
 
   preConfigure = ''
@@ -107,7 +107,10 @@ stdenv.mkDerivation {
   meta = with lib; {
     description = "Professional video editing and compositing environment (community version)";
     homepage = "http://cinelerra-cv.wikidot.com/";
+    mainProgram = "cinelerracv";
     maintainers = with maintainers; [ marcweber ];
     license = licenses.gpl2Only;
+    # https://github.com/cinelerra-cv-team/cinelerra-cv/issues/3
+    platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/applications/video/davinci-resolve/default.nix b/pkgs/applications/video/davinci-resolve/default.nix
index e92065486918..7caf12ee76d8 100644
--- a/pkgs/applications/video/davinci-resolve/default.nix
+++ b/pkgs/applications/video/davinci-resolve/default.nix
@@ -31,7 +31,7 @@ let
   davinci = (
     stdenv.mkDerivation rec {
       pname = "davinci-resolve${lib.optionalString studioVariant "-studio"}";
-      version = "18.6.5";
+      version = "18.6.6";
 
       nativeBuildInputs = [
         (appimage-run.override { buildFHSEnv = buildFHSEnvChroot; } )
@@ -52,8 +52,8 @@ let
           outputHashAlgo = "sha256";
           outputHash =
             if studioVariant
-            then "sha256-Ua5R0G4okBpz9SyyA2zn6nVflY9AlWch7Kx6PrW/nMg="
-            else "sha256-oCK7w5jB7h4PSKg2IJwriyAVi/kj4TurloBcfDAe6BQ=";
+            then "sha256-9iTdIjHH8uoXlVr6miyqmHuzbbpbqdJPEbPGycsccoI="
+            else "sha256-WrIQ1FHm65MOGb5HfFl2WzXYJRlqktuZdrtzcjWp1gI=";
 
           impureEnvVars = lib.fetchers.proxyImpureEnvVars;
 
@@ -258,7 +258,7 @@ buildFHSEnv {
     description = "Professional video editing, color, effects and audio post-processing";
     homepage = "https://www.blackmagicdesign.com/products/davinciresolve";
     license = licenses.unfree;
-    maintainers = with maintainers; [ jshcmpbll orivej ];
+    maintainers = with maintainers; [ amarshall jshcmpbll orivej ];
     platforms = [ "x86_64-linux" ];
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     mainProgram = "davinci-resolve";
diff --git a/pkgs/applications/video/electronplayer/electronplayer.nix b/pkgs/applications/video/electronplayer/electronplayer.nix
index 15f5b60a09a6..270d5543c993 100644
--- a/pkgs/applications/video/electronplayer/electronplayer.nix
+++ b/pkgs/applications/video/electronplayer/electronplayer.nix
@@ -25,6 +25,7 @@ in appimageTools.wrapType2 {
 
   meta = with lib; {
     description = "An electron based web video services player";
+    mainProgram = "electronplayer";
     homepage = "https://github.com/oscartbeaumont/ElectronPlayer";
     license = licenses.mit;
     maintainers = with maintainers; [ extends ];
diff --git a/pkgs/applications/video/gnome-mplayer/default.nix b/pkgs/applications/video/gnome-mplayer/default.nix
index bab41b11bee9..09ed7efaf0c0 100644
--- a/pkgs/applications/video/gnome-mplayer/default.nix
+++ b/pkgs/applications/video/gnome-mplayer/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Gnome MPlayer, a simple GUI for MPlayer";
+    mainProgram = "gnome-mplayer";
     homepage = "https://sites.google.com/site/kdekorte2/gnomemplayer";
     license = licenses.gpl2;
     maintainers = with maintainers; [];
diff --git a/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix b/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix
index cc3a5033bd11..86bfebad3860 100644
--- a/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix
+++ b/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix
@@ -48,6 +48,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "GTK frontend for gpu-screen-recorder.";
+    mainProgram = "gpu-screen-recorder-gtk";
     homepage = "https://git.dec05eba.com/gpu-screen-recorder-gtk/about/";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ babbaj ];
diff --git a/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix b/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix
index 49afbf8507b1..cb85df276412 100644
--- a/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix
+++ b/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix
@@ -10,13 +10,13 @@ in
 buildKodiBinaryAddon rec {
   pname = "inputstream-adaptive";
   namespace = "inputstream.adaptive";
-  version = "20.3.16";
+  version = "20.3.18";
 
   src = fetchFromGitHub {
     owner = "xbmc";
     repo = "inputstream.adaptive";
     rev = "${version}-${rel}";
-    sha256 = "sha256-1OY+3pvpVW8rkj7HL84IECyHpAmWsUQ9mTzuGesH+jI=";
+    sha256 = "sha256-cjlUKrus4Dv48dCk6AlOgY2iZYTwT39tj2u7aq1P104=";
   };
 
   extraCMakeFlags = [
diff --git a/pkgs/applications/video/kodi/addons/jellycon/default.nix b/pkgs/applications/video/kodi/addons/jellycon/default.nix
new file mode 100644
index 000000000000..88e9504f8d19
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/jellycon/default.nix
@@ -0,0 +1,55 @@
+{ lib, addonDir, buildKodiAddon, fetchFromGitHub, kodi, requests, dateutil, six, kodi-six, signals, websocket }:
+let
+  python = kodi.pythonPackages.python.withPackages (p: with p; [ pyyaml ]);
+in
+buildKodiAddon rec {
+  pname = "jellycon";
+  namespace = "plugin.video.jellycon";
+  version = "0.8.0";
+
+  src = fetchFromGitHub {
+    owner = "jellyfin";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-60my7Y60KV5WWALQiamnmAJZJi82cV21rIGYPiV7T+A=";
+  };
+
+  nativeBuildInputs = [
+    python
+  ];
+
+  prePatch = ''
+    # ZIP does not support timestamps before 1980 - https://bugs.python.org/issue34097
+    substituteInPlace build.py \
+      --replace "with zipfile.ZipFile(f'{target}/{archive_name}', 'w') as z:" "with zipfile.ZipFile(f'{target}/{archive_name}', 'w', strict_timestamps=False) as z:"
+  '';
+
+  buildPhase = ''
+    ${python}/bin/python3 build.py --version=py3
+  '';
+
+  postInstall = ''
+    mv /build/source/addon.xml $out${addonDir}/${namespace}/
+  '';
+
+  propagatedBuildInputs = [
+    requests
+    dateutil
+    six
+    kodi-six
+    signals
+    websocket
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/jellyfin/jellycon";
+    description = "A lightweight Kodi add-on for Jellyfin";
+    longDescription = ''
+      JellyCon is a lightweight Kodi add-on that lets you browse and play media
+      files directly from your Jellyfin server within the Kodi interface. It can
+      easily switch between multiple user accounts at will.
+    '';
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/youtube/default.nix b/pkgs/applications/video/kodi/addons/youtube/default.nix
index 83afc51053ba..eecfd54433dd 100644
--- a/pkgs/applications/video/kodi/addons/youtube/default.nix
+++ b/pkgs/applications/video/kodi/addons/youtube/default.nix
@@ -3,13 +3,13 @@
 buildKodiAddon rec {
   pname = "youtube";
   namespace = "plugin.video.youtube";
-  version = "7.0.3.2";
+  version = "7.0.4";
 
   src = fetchFromGitHub {
     owner = "anxdpanic";
     repo = "plugin.video.youtube";
     rev = "v${version}";
-    hash = "sha256-gJ7RGB0pSG/iLdpmXHpQOoQTisXnMl1Mgd0KYFgg2qI=";
+    hash = "sha256-vBDFxsbYemJKxWa7De++UB0E4t1Eo0PW6Glbw6+FK1w=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/video/media-downloader/default.nix b/pkgs/applications/video/media-downloader/default.nix
index b0a40aaa8a34..8a9f287c0c21 100644
--- a/pkgs/applications/video/media-downloader/default.nix
+++ b/pkgs/applications/video/media-downloader/default.nix
@@ -12,13 +12,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "media-downloader";
-  version = "4.3.1";
+  version = "4.4.0";
 
   src = fetchFromGitHub {
     owner = "mhogomchungu";
     repo = "media-downloader";
     rev = finalAttrs.version;
-    hash = "sha256-+vPGfPncb8f5c9OiBmpMvvDh3X6ZMHPbyngcDfrP9qQ=";
+    hash = "sha256-/W0SkKe9rcwf8HBIEcdJCPdZEnx9eh+twBu9wa6Sq30=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/mpv/scripts/mpvacious.nix b/pkgs/applications/video/mpv/scripts/mpvacious.nix
index d6c5389b3277..ec4e25b88fb7 100644
--- a/pkgs/applications/video/mpv/scripts/mpvacious.nix
+++ b/pkgs/applications/video/mpv/scripts/mpvacious.nix
@@ -9,13 +9,13 @@
 
 buildLua rec {
   pname = "mpvacious";
-  version = "0.26";
+  version = "0.27";
 
   src = fetchFromGitHub {
     owner = "Ajatt-Tools";
     repo = "mpvacious";
     rev = "v${version}";
-    sha256 = "sha256-QPLJC6SxocvOPeY6qI8q+EyXNGVef3J/Z38W0/rzFCg=";
+    sha256 = "sha256-pn6hNEhOzKiU+zQJKj/rF0GLXaEe+XBpHp0RlzsNIio=";
   };
   passthru.updateScript = gitUpdater {
     rev-prefix = "v";
diff --git a/pkgs/applications/video/mythtv/default.nix b/pkgs/applications/video/mythtv/default.nix
index deea5c1cb493..fba7eb16839e 100644
--- a/pkgs/applications/video/mythtv/default.nix
+++ b/pkgs/applications/video/mythtv/default.nix
@@ -8,34 +8,18 @@
 
 mkDerivation rec {
   pname = "mythtv";
-  version = "32.0";
+  version = "34.0";
 
   src = fetchFromGitHub {
     owner = "MythTV";
     repo = "mythtv";
     rev = "v${version}";
-    sha256 = "0i4fs3rbk1jggh62wflpa2l03na9i1ihpz2vsdic9vfahqqjxff1";
+    hash = "sha256-6/TEoyYIRq6pufYzGOmO5DB05JuDo9lqRAYT5N5M/L4=";
   };
 
   patches = [
     # Disable sourcing /etc/os-release
     ./dont-source-os-release.patch
-
-    # Fix QMake variable substitution syntax - MythTV/mythtv#550
-    (fetchpatch {
-      name = "fix-qmake-var-syntax.patch";
-      url = "https://github.com/MythTV/mythtv/commit/a8da7f7e7ec069164adbef65a8104adc9bb52e36.patch";
-      stripLen = 1;
-      hash = "sha256-JfRME00YNNjl6SKs1HBa0wBa/lR/Rt3zbQtWhsC36JM=";
-    })
-
-    # Bachport the build against binutils-2.41
-    (fetchpatch {
-      name = "binutils-2.41.patch";
-      url = "https://github.com/MythTV/mythtv/commit/f9f9bba62ee2743c816cb2b9634b6b4397e5e2e3.patch";
-      stripLen = 1;
-      hash = "sha256-IcXgBtfqPZ42inYFe7l8mWvKUV13S/YEQAHcOFaDivI=";
-    })
   ];
 
   setSourceRoot = "sourceRoot=$(echo */mythtv)";
diff --git a/pkgs/applications/video/mythtv/dont-source-os-release.patch b/pkgs/applications/video/mythtv/dont-source-os-release.patch
index fb4dc686af6a..0ef27450d634 100644
--- a/pkgs/applications/video/mythtv/dont-source-os-release.patch
+++ b/pkgs/applications/video/mythtv/dont-source-os-release.patch
@@ -1,6 +1,6 @@
 --- a/configure
 +++ b/configure
-@@ -5894,9 +5894,9 @@ else
+@@ -5451,9 +5451,9 @@ else
      die "ERROR: cannot find soundtouch 1.8.0 or later."
  fi
  
diff --git a/pkgs/applications/video/obs-studio/default.nix b/pkgs/applications/video/obs-studio/default.nix
index 29bb90a9dd8d..fee1addf0e6d 100644
--- a/pkgs/applications/video/obs-studio/default.nix
+++ b/pkgs/applications/video/obs-studio/default.nix
@@ -53,6 +53,7 @@
 , libdatachannel
 , libvpl
 , qrcodegencpp
+, nix-update-script
 }:
 
 let
@@ -61,13 +62,13 @@ in
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "obs-studio";
-  version = "30.0.2";
+  version = "30.1.0";
 
   src = fetchFromGitHub {
     owner = "obsproject";
     repo = finalAttrs.pname;
     rev = finalAttrs.version;
-    sha256 = "sha256-8pX1kqibrtDIaE1+/Pey1A5bu6MwFTXLrBOah4rsF+4=";
+    sha256 = "sha256-9rf3UGazEL5Obd6tqDwM5LOC6D1X6HNzs5sn5z1tOCA=";
     fetchSubmodules = true;
   };
 
@@ -76,25 +77,6 @@ stdenv.mkDerivation (finalAttrs: {
     ./Enable-file-access-and-universal-access-for-file-URL.patch
     ./fix-nix-plugin-path.patch
 
-    # Backport ffmpeg 6.1 / GCC 13 build fixes
-    # FIXME: remove in next release
-    (fetchpatch {
-      url = "https://github.com/obsproject/obs-studio/commit/cd784644f5e82b9988043f229c19603289c6d32c.patch";
-      hash = "sha256-S4JE5kgr4x3uMHY2GRh0GBJpb7o/wYZb/v0CDITFNnQ=";
-    })
-    (fetchpatch {
-      url = "https://github.com/obsproject/obs-studio/commit/758b47d4ed9a25b8d64ad481d8d039990b9e57c9.patch";
-      hash = "sha256-jYpjwhx6e+dhN3kzbd6FcdjQ+WhIX0/BOu9PSkt+2yI=";
-    })
-    (fetchpatch {
-      url = "https://github.com/obsproject/obs-studio/commit/4b5be75c7e4b8cee908ed4a02fe0078285b4e8c9.patch";
-      hash = "sha256-tuOevhyxchwG42ilrplbiWoiDAKaY4HgzShlvp4VSQI=";
-    })
-    (fetchpatch {
-      url = "https://github.com/obsproject/obs-studio/commit/6e080a68067b27fe5463f0f4eee7df690451f3d7.patch";
-      hash = "sha256-nbn/q3uszoHaDvaW8Et1MS1sgQzMsJRmjGSMHzUxV70=";
-    })
-
     # Fix libobs.pc for plugins on non-x86 systems
     (fetchpatch {
       name = "fix-arm64-cmake.patch";
@@ -175,6 +157,10 @@ stdenv.mkDerivation (finalAttrs: {
     (lib.cmakeBool "ENABLE_PIPEWIRE" pipewireSupport)
   ];
 
+  env.NIX_CFLAGS_COMPILE = toString [
+    "-Wno-error=sign-compare" # https://github.com/obsproject/obs-studio/issues/10200
+  ];
+
   dontWrapGApps = true;
   preFixup = let
     wrapperLibraries = [
@@ -202,6 +188,8 @@ stdenv.mkDerivation (finalAttrs: {
     ln -s ${libcef}/lib/* $out/lib/obs-plugins/
   '';
 
+  passthru.updateScript = nix-update-script { };
+
   meta = with lib; {
     description = "Free and open source software for video recording and live streaming";
     longDescription = ''
diff --git a/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix b/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
index b776981522d0..ff4ba78ea950 100644
--- a/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
+++ b/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
@@ -23,13 +23,13 @@
 
 stdenv.mkDerivation rec {
   pname = "advanced-scene-switcher";
-  version = "1.24.2";
+  version = "1.25.3";
 
   src = fetchFromGitHub {
     owner = "WarmUpTill";
     repo = "SceneSwitcher";
     rev = version;
-    hash = "sha256-J5Qcs2eoKMeO1O/MCsR5wfmfbtndRaZmHrbleEZqqOo=";
+    hash = "sha256-cVMeFAliP0srvnhJQkOhZB2hrald8RHFhBXwdGIu2uo=";
   };
 
   nativeBuildInputs = [
@@ -61,11 +61,7 @@ stdenv.mkDerivation rec {
     chmod -R +w $sourceRoot/deps/libremidi
   '';
 
-  postInstall = ''
-    mkdir $out/lib $out/share
-    mv $out/obs-plugins/64bit $out/lib/obs-plugins
-    mv $out/data $out/share/obs
-  '';
+  env.NIX_CFLAGS_COMPILE = "-Wno-error=stringop-overflow";
 
   meta = with lib; {
     description = "An automated scene switcher for OBS Studio";
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix b/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix
index e58220bce7e8..c34f821d7c6a 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix
@@ -49,6 +49,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/fzwoch/obs-gstreamer";
     maintainers = with maintainers; [ ahuzik pedrohlc ];
     license = licenses.gpl2Plus;
-    platforms = [ "x86_64-linux" "i686-linux" ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix b/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix
index 98b597d72f54..a56c18479fd1 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "obs-move-transition";
-  version = "2.10.2";
+  version = "2.11.0";
 
   src = fetchFromGitHub {
     owner = "exeldro";
     repo = "obs-move-transition";
     rev = version;
-    sha256 = "sha256-gQAeQ3PdnCtnLUgt6utWKfFBfQlJj5/mjAxtlmaGQFw=";
+    sha256 = "sha256-kQIDOjux+8d9V4VCxDtKuWpBKPjdB50WmOPYmzxOCTU=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-replay-source.nix b/pkgs/applications/video/obs-studio/plugins/obs-replay-source.nix
index c3987ab33ff0..42682dd14614 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-replay-source.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-replay-source.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "obs-replay-source";
-  version = "1.6.13";
+  version = "1.6.13-unstable-2024-02-03";
 
   src = fetchFromGitHub {
     owner = "exeldro";
     repo = "obs-replay-source";
-    rev = finalAttrs.version;
-    sha256 = "sha256-i64rpIVnUplA9AKZtR3xeByeawca7B00kGmEcKi7DWQ=";
+    rev = "6590fde1c8e4f8c733016646a8165d52e28d094b";
+    hash = "sha256-foIzWNlU72FWXZVWR8TEiqJJMfl1vWYDTyhV6thYJbA=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/video/pipe-viewer/default.nix b/pkgs/applications/video/pipe-viewer/default.nix
index 536b904fd858..5d3256931f12 100644
--- a/pkgs/applications/video/pipe-viewer/default.nix
+++ b/pkgs/applications/video/pipe-viewer/default.nix
@@ -38,13 +38,13 @@ let
 in
 buildPerlModule rec {
   pname = "pipe-viewer";
-  version = "0.4.9";
+  version = "0.5.0";
 
   src = fetchFromGitHub {
     owner = "trizen";
     repo = "pipe-viewer";
     rev = version;
-    hash = "sha256-7l8exCC9robe1hKnQAaIVfnn8L+FuwTOkxaxlwJmpe0=";
+    hash = "sha256-tNIAGvv3dCPd7MA27yd2AHMSgs+1D2uiJJTQgTsEVNU=";
   };
 
   nativeBuildInputs = [ makeWrapper ]
diff --git a/pkgs/applications/video/pyca/default.nix b/pkgs/applications/video/pyca/default.nix
index 73b6e606118a..88ae19893653 100644
--- a/pkgs/applications/video/pyca/default.nix
+++ b/pkgs/applications/video/pyca/default.nix
@@ -74,6 +74,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     broken = stdenv.isDarwin;
     description = "A fully functional Opencast capture agent written in Python";
+    mainProgram = "pyca";
     homepage = "https://github.com/opencast/pyCA";
     license = licenses.lgpl3;
     maintainers = with maintainers; [ pmiddend ];
diff --git a/pkgs/applications/video/qmplay2/default.nix b/pkgs/applications/video/qmplay2/default.nix
index b6b577790cfb..4c31c97d5b1d 100644
--- a/pkgs/applications/video/qmplay2/default.nix
+++ b/pkgs/applications/video/qmplay2/default.nix
@@ -26,14 +26,14 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "qmplay2";
-  version = "23.10.22";
+  version = "24.03.16";
 
   src = fetchFromGitHub {
     owner = "zaps166";
     repo = "QMPlay2";
     rev = finalAttrs.version;
     fetchSubmodules = true;
-    hash = "sha256-yDymUXuILgT4AFTt302GniPi/WNwrTCOuOfdUiKOIyk=";
+    hash = "sha256-yIBQBRdmaY7qaBirANxMqfm5vn3T4usokJUxwSYUHjQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/streamlink/default.nix b/pkgs/applications/video/streamlink/default.nix
index 2eda19313e1c..c71e712625c2 100644
--- a/pkgs/applications/video/streamlink/default.nix
+++ b/pkgs/applications/video/streamlink/default.nix
@@ -1,19 +1,31 @@
 { lib
 , python3Packages
 , fetchPypi
+, substituteAll
 , ffmpeg
 }:
 
 python3Packages.buildPythonApplication rec {
   pname = "streamlink";
   version = "6.7.0";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-kjrDJ/QCccWxRLEQ0virAdm0TLxN5PmtO/Zs+4Nc1MM=";
   };
 
+  patches = [
+    (substituteAll {
+      src = ./ffmpeg-path.patch;
+      ffmpeg = lib.getExe ffmpeg;
+    })
+  ];
+
+  nativeBuildInputs = with python3Packages; [
+    setuptools
+  ];
+
   nativeCheckInputs = with python3Packages; [
     pytestCheckHook
     mock
@@ -23,7 +35,12 @@ python3Packages.buildPythonApplication rec {
     pytest-trio
   ];
 
-  propagatedBuildInputs = (with python3Packages; [
+  disabledTests = [
+    # requires ffmpeg to be in PATH
+    "test_no_cache"
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
     certifi
     isodate
     lxml
@@ -36,8 +53,6 @@ python3Packages.buildPythonApplication rec {
     typing-extensions
     urllib3
     websocket-client
-  ]) ++ [
-    ffmpeg
   ];
 
   meta = with lib; {
diff --git a/pkgs/applications/video/streamlink/ffmpeg-path.patch b/pkgs/applications/video/streamlink/ffmpeg-path.patch
new file mode 100644
index 000000000000..6108c53dcf0b
--- /dev/null
+++ b/pkgs/applications/video/streamlink/ffmpeg-path.patch
@@ -0,0 +1,13 @@
+diff --git a/src/streamlink/stream/ffmpegmux.py b/src/streamlink/stream/ffmpegmux.py
+index 258b314a..c493e010 100644
+--- a/src/streamlink/stream/ffmpegmux.py
++++ b/src/streamlink/stream/ffmpegmux.py
+@@ -80,7 +80,7 @@ class MuxedStream(Stream, Generic[TSubstreams]):
+ 
+ 
+ class FFMPEGMuxer(StreamIO):
+-    __commands__: ClassVar[List[str]] = ["ffmpeg"]
++    __commands__: ClassVar[List[str]] = ["@ffmpeg@"]
+ 
+     DEFAULT_OUTPUT_FORMAT = "matroska"
+     DEFAULT_VIDEO_CODEC = "copy"
diff --git a/pkgs/applications/video/stremio/default.nix b/pkgs/applications/video/stremio/default.nix
index 03ccb4b9f066..a967a872cd99 100644
--- a/pkgs/applications/video/stremio/default.nix
+++ b/pkgs/applications/video/stremio/default.nix
@@ -1,5 +1,14 @@
-{ lib, stdenv, fetchurl, fetchFromGitHub, qmake, wrapQtAppsHook
-, mpv, qtwebengine, qtwebchannel, nodejs
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchurl
+, ffmpeg
+, mpv
+, nodejs
+, qmake
+, qtwebchannel
+, qtwebengine
+, wrapQtAppsHook
 }:
 
 stdenv.mkDerivation rec {
@@ -30,6 +39,8 @@ stdenv.mkDerivation rec {
     install -Dm 644 images/stremio_window.png $out/share/pixmaps/smartcode-stremio.png
     ln -s ${nodejs}/bin/node $out/opt/stremio/node
     ln -s $server $out/opt/stremio/server.js
+    wrapProgram $out/bin/stremio \
+      --suffix PATH ":" ${lib.makeBinPath [ ffmpeg ]}
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/video/vdr/markad/default.nix b/pkgs/applications/video/vdr/markad/default.nix
index c0672821558b..28dad0200270 100644
--- a/pkgs/applications/video/vdr/markad/default.nix
+++ b/pkgs/applications/video/vdr/markad/default.nix
@@ -19,12 +19,12 @@
 }:
 stdenv.mkDerivation rec {
   pname = "vdr-markad";
-  version = "3.4.6";
+  version = "3.4.13";
 
   src = fetchFromGitHub {
     repo = "vdr-plugin-markad";
     owner = "kfb77";
-    sha256 = "sha256-fixkalZAPz0iO1SmshsO0vYc2sksH2lrStsSOEcdZ1g=";
+    sha256 = "sha256-pDnziIWX6deBXuVIN7w6F6TdYDCcEO6MSaUIMB63uAg=";
     rev = "V${version}";
   };
 
@@ -51,6 +51,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     inherit (src.meta) homepage;
     description = "Plugin for VDR that marks advertisements";
+    mainProgram = "markad";
     maintainers = [ maintainers.ck3d ];
     license = licenses.gpl2;
     inherit (vdr.meta) platforms;
diff --git a/pkgs/applications/video/vdr/nopacity/default.nix b/pkgs/applications/video/vdr/nopacity/default.nix
index e0173ab6c8ae..c413206b8257 100644
--- a/pkgs/applications/video/vdr/nopacity/default.nix
+++ b/pkgs/applications/video/vdr/nopacity/default.nix
@@ -1,12 +1,12 @@
 { stdenv, lib, fetchFromGitLab, vdr, graphicsmagick }:
 stdenv.mkDerivation rec {
   pname = "vdr-skin-nopacity";
-  version = "1.1.16";
+  version = "1.1.17";
 
   src = fetchFromGitLab {
     repo = "SkinNopacity";
     owner = "kamel5";
-    sha256 = "sha256-5TTilBKlNsFBm5BaCoRV1LzZgpad2lOIQGyk94jGYls=";
+    hash = "sha256-QJKlh5my7e+H5R4E0fCWB/PtwIAXCXw4drQEQzhzfag=";
     rev = version;
   };
 
diff --git a/pkgs/applications/video/vdr/plugins.nix b/pkgs/applications/video/vdr/plugins.nix
index 92d9128543f0..4063f4108fa0 100644
--- a/pkgs/applications/video/vdr/plugins.nix
+++ b/pkgs/applications/video/vdr/plugins.nix
@@ -99,6 +99,7 @@ in {
     meta = with lib; {
       inherit (src.meta) homepage;
       description = "Searchtimer and replacement of the VDR program menu";
+      mainProgram = "createcats";
       maintainers = [ maintainers.ck3d ];
       license = licenses.gpl2;
       inherit (vdr.meta) platforms;
diff --git a/pkgs/applications/video/vdr/softhddevice/default.nix b/pkgs/applications/video/vdr/softhddevice/default.nix
index 4d2504f5e5e6..23c6433f9ebb 100644
--- a/pkgs/applications/video/vdr/softhddevice/default.nix
+++ b/pkgs/applications/video/vdr/softhddevice/default.nix
@@ -14,12 +14,12 @@
 }:
 stdenv.mkDerivation rec {
   pname = "vdr-softhddevice";
-  version = "2.1.1";
+  version = "2.1.2";
 
   src = fetchFromGitHub {
     owner = "ua0lnj";
     repo = "vdr-plugin-softhddevice";
-    sha256 = "sha256-d/Cl0sE4laDdjMhd3xTHcY4OT5tWWCFCvLsNF157+zw=";
+    sha256 = "sha256-y6b0nOf597uxS9zDh0NQOwLN81nk4U7lHK2CalyVi8s=";
     rev = "v${version}";
   };
 
diff --git a/pkgs/applications/video/youtube-tui/default.nix b/pkgs/applications/video/youtube-tui/default.nix
index bfa1039d5d33..63e9f51304ed 100644
--- a/pkgs/applications/video/youtube-tui/default.nix
+++ b/pkgs/applications/video/youtube-tui/default.nix
@@ -6,6 +6,7 @@
 , xorg
 , stdenv
 , python3
+, makeBinaryWrapper
 , libsixel
 , mpv
 , CoreFoundation
@@ -19,7 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   src = fetchFromGitHub {
     owner = "Siriusmart";
-    repo = pname;
+    repo = "youtube-tui";
     rev = "v${version}";
     hash = "sha256-FOiK3yQcQuwdCEjBtRPW4iBd+8uNsvZ6l5tclHVzL+M=";
   };
@@ -34,6 +35,7 @@ rustPlatform.buildRustPackage rec {
   nativeBuildInputs = [
     pkg-config
     python3
+    makeBinaryWrapper
   ];
 
   buildInputs = [
@@ -47,6 +49,12 @@ rustPlatform.buildRustPackage rec {
     AppKit
   ];
 
+  # sixel-sys is dynamically linked to libsixel
+  postInstall = lib.optionalString stdenv.isDarwin ''
+    wrapProgram $out/bin/youtube-tui \
+      --prefix DYLD_LIBRARY_PATH : "${lib.makeLibraryPath [libsixel]}"
+  '';
+
   meta = with lib; {
     description = "An aesthetically pleasing YouTube TUI written in Rust";
     homepage = "https://siriusmart.github.io/youtube-tui";