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/clipgrab/default.nix11
-rw-r--r--pkgs/applications/video/clipgrab/yt-dlp-path.patch86
-rw-r--r--pkgs/applications/video/droidcam/default.nix4
-rw-r--r--pkgs/applications/video/dvdstyler/default.nix45
-rw-r--r--pkgs/applications/video/f1viewer/default.nix6
-rw-r--r--pkgs/applications/video/ffmpeg-normalize/default.nix4
-rw-r--r--pkgs/applications/video/freetube/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/controller-topology-project/default.nix35
-rw-r--r--pkgs/applications/video/kodi/addons/controllers/default.nix22
-rw-r--r--pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/pvr-hts/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix4
-rw-r--r--pkgs/applications/video/lbry/default.nix4
-rw-r--r--pkgs/applications/video/minitube/default.nix4
-rw-r--r--pkgs/applications/video/mkvtoolnix/default.nix4
-rw-r--r--pkgs/applications/video/mplayer/default.nix14
-rw-r--r--pkgs/applications/video/mplayer/svn-r38199-ffmpeg44fix.patch22
-rw-r--r--pkgs/applications/video/obs-studio/Change-product_version-to-user_agent_product.patch26
-rw-r--r--pkgs/applications/video/obs-studio/default.nix17
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-multi-rtmp.nix4
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-websocket.nix30
-rw-r--r--pkgs/applications/video/peek/default.nix13
-rw-r--r--pkgs/applications/video/plex-media-player/default.nix6
-rw-r--r--pkgs/applications/video/sub-batch/default.nix6
-rw-r--r--pkgs/applications/video/tartube/default.nix4
-rw-r--r--pkgs/applications/video/ustreamer/default.nix4
-rw-r--r--pkgs/applications/video/vdr/default.nix4
-rw-r--r--pkgs/applications/video/vlc/default.nix4
-rw-r--r--pkgs/applications/video/xine-ui/default.nix14
-rw-r--r--pkgs/applications/video/xplayer/default.nix2
31 files changed, 268 insertions, 147 deletions
diff --git a/pkgs/applications/video/clipgrab/default.nix b/pkgs/applications/video/clipgrab/default.nix
index 287557d6f53..2bd30c9e529 100644
--- a/pkgs/applications/video/clipgrab/default.nix
+++ b/pkgs/applications/video/clipgrab/default.nix
@@ -1,6 +1,7 @@
 { lib, fetchurl, makeDesktopItem, ffmpeg
 , qmake, qttools, mkDerivation
 , qtbase, qtdeclarative, qtlocation, qtquickcontrols2, qtwebchannel, qtwebengine
+, yt-dlp
 }:
 
 mkDerivation rec {
@@ -16,7 +17,15 @@ mkDerivation rec {
   buildInputs = [ ffmpeg qtbase qtdeclarative qtlocation qtquickcontrols2 qtwebchannel qtwebengine ];
   nativeBuildInputs = [ qmake qttools ];
 
-  postPatch = lib.optionalString (ffmpeg != null) ''
+  patches = [
+    ./yt-dlp-path.patch
+  ];
+
+  postPatch = ''
+  substituteInPlace youtube_dl.cpp \
+    --replace 'QString YoutubeDl::path = QString();' \
+              'QString YoutubeDl::path = QString("${yt-dlp}/bin/yt-dlp");'
+  '' + lib.optionalString (ffmpeg != null) ''
   substituteInPlace converter_ffmpeg.cpp \
     --replace '"ffmpeg"' '"${ffmpeg.bin}/bin/ffmpeg"' \
     --replace '"ffmpeg ' '"${ffmpeg.bin}/bin/ffmpeg '
diff --git a/pkgs/applications/video/clipgrab/yt-dlp-path.patch b/pkgs/applications/video/clipgrab/yt-dlp-path.patch
new file mode 100644
index 00000000000..5a9a4b6dcc4
--- /dev/null
+++ b/pkgs/applications/video/clipgrab/yt-dlp-path.patch
@@ -0,0 +1,86 @@
+--- a/main.cpp
++++ b/main.cpp
+@@ -91,14 +91,5 @@ int main(int argc, char *argv[])
+         w.show();
+     }
+ 
+-    QTimer::singleShot(0, [=] {
+-       cg->getUpdateInfo();
+-       QObject::connect(cg, &ClipGrab::updateInfoProcessed, [cg] {
+-           bool force = QSettings().value("forceYoutubeDlDownload", false).toBool();
+-           if (force) QSettings().setValue("forceYoutubeDlDownload", false);
+-           cg->downloadYoutubeDl(force);
+-       });
+-    });
+-
+     return app.exec();
+ }
+--- a/youtube_dl.cpp
++++ b/youtube_dl.cpp
+@@ -8,52 +8,16 @@ YoutubeDl::YoutubeDl()
+ QString YoutubeDl::path = QString();
+ 
+ QString YoutubeDl::find(bool force) {
+-    if (!force && !path.isEmpty()) return path;
+-
+-    // Prefer downloaded youtube-dl
+-    QString localPath = QStandardPaths::locate(QStandardPaths::AppDataLocation, "yt-dlp");
+-    QProcess* process = instance(localPath, QStringList() << "--version");
+-    process->start();
+-    process->waitForFinished();
+-    process->deleteLater();
+-    if (process->state() != QProcess::NotRunning) process->kill();
+-    if (process->exitCode() == QProcess::ExitStatus::NormalExit) {
+-        path = localPath;
+-        return path;
+-    }
+-
+-    // Try system-wide youtube-dlp installation
+-    QString globalPath = QStandardPaths::findExecutable("yt-dlp");
+-    process = instance(globalPath, QStringList() << "--version");
+-    process->start();
+-    process->waitForFinished();
+-    process->deleteLater();
+-    if (process->state() != QProcess::NotRunning) process->kill();
+-    if (process->exitCode() == QProcess::ExitStatus::NormalExit) {
+-        path = globalPath;
+-        return path;
+-    }
+-
+-    return "";
++    // We supply yt-dlp from nixpkgs, so the downloading
++    // machinery is not needed anymore.
++    (void)force;
++    return path;
+ }
+ 
+ QProcess* YoutubeDl::instance(QStringList arguments) {
+-    return instance(find(), arguments);
+-}
+-
+-QProcess* YoutubeDl::instance(QString path, QStringList arguments) {
+     QProcess *process = new QProcess();
+ 
+-    QString execPath = QCoreApplication::applicationDirPath();
+-    QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+-    env.insert("PATH", execPath + ":" + env.value("PATH"));
+-    process->setEnvironment(env.toStringList());
+-
+-    #if defined Q_OS_WIN
+-        process->setProgram(execPath + "/python/python.exe");
+-    #else
+-        process->setProgram(QStandardPaths::findExecutable("python3"));
+-    #endif
++    process->setProgram(path);
+ 
+     QSettings settings;
+     QStringList proxyArguments;
+@@ -81,7 +45,7 @@ QProcess* YoutubeDl::instance(QString path, QStringList arguments) {
+         networkArguments << "--force-ipv4";
+     }
+ 
+-    process->setArguments(QStringList() << path << arguments << proxyArguments << networkArguments);
++    process->setArguments(QStringList() << arguments << proxyArguments << networkArguments);
+     return process;
+ }
+ 
diff --git a/pkgs/applications/video/droidcam/default.nix b/pkgs/applications/video/droidcam/default.nix
index 066c17f1069..6aee3ab20b9 100644
--- a/pkgs/applications/video/droidcam/default.nix
+++ b/pkgs/applications/video/droidcam/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   pname = "droidcam";
-  version = "1.8.1";
+  version = "1.8.2";
 
   src = fetchFromGitHub {
     owner = "aramg";
     repo = "droidcam";
     rev = "v${version}";
-    sha256 = "sha256-3iA7GDTiCx5vHawj8ZBFAK0BIfmxEFuQrVfL7Gi6FhM=";
+    sha256 = "sha256-AxJBpoiBnb+5Pq/h4giOYAeLlvOtAJT5sCwzPEKo7w4=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/dvdstyler/default.nix b/pkgs/applications/video/dvdstyler/default.nix
index 81f3cac73e1..8d42c2b2bfd 100644
--- a/pkgs/applications/video/dvdstyler/default.nix
+++ b/pkgs/applications/video/dvdstyler/default.nix
@@ -3,17 +3,21 @@
 , fetchurl
 , bison
 , cdrtools
-, docbook5
+, docbook_xml_dtd_412
+, docbook-xsl-nons
 , dvdauthor
 , dvdplusrwtools
 , ffmpeg
 , flex
 , fontconfig
 , gettext
+, glib
+, gobject-introspection
 , libexif
-, makeWrapper
+, libjpeg
 , pkg-config
-, wxGTK30
+, wrapGAppsHook
+, wxGTK30-gtk3 # crash with wxGTK30 with GTK2 compat
 , wxSVG
 , xine-ui
 , xmlto
@@ -37,43 +41,50 @@ in stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
+    bison
+    docbook_xml_dtd_412
+    docbook-xsl-nons
+    flex
+    gettext
+    gobject-introspection
     pkg-config
+    wrapGAppsHook
+    xmlto
+    zip
   ];
   buildInputs = [
-    bison
     cdrtools
-    docbook5
     dvdauthor
     dvdplusrwtools
     ffmpeg
-    flex
     fontconfig
-    gettext
+    glib
     libexif
-    makeWrapper
+    libjpeg
     wxSVG
-    wxGTK30
+    wxGTK30-gtk3
     xine-ui
-    xmlto
-    zip
  ]
   ++ optionals dvdisasterSupport [ dvdisaster ]
   ++ optionals udevSupport [ udev ]
   ++ optionals dbusSupport [ dbus ]
   ++ optionals thumbnailSupport [ libgnomeui ];
 
+  enableParallelBuilding = true;
 
-  postInstall = let
-    binPath = makeBinPath [
+  preFixup = let
+    binPath = makeBinPath ([
       cdrtools
       dvdauthor
       dvdplusrwtools
-    ]; in
+    ] ++ optionals dvdisasterSupport [ dvdisaster ]);
+    in
     ''
-       wrapProgram $out/bin/dvdstyler --prefix PATH ":" "${binPath}"
-    '';
+      gappsWrapperArgs+=(
+        --prefix PATH : "${binPath}"
+      )
+   '';
 
-  enableParallelBuilding = true;
 
   meta = with lib; {
     homepage = "https://www.dvdstyler.org/";
diff --git a/pkgs/applications/video/f1viewer/default.nix b/pkgs/applications/video/f1viewer/default.nix
index b00d2d8275b..33e1863428e 100644
--- a/pkgs/applications/video/f1viewer/default.nix
+++ b/pkgs/applications/video/f1viewer/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "f1viewer";
-  version = "2.4.0";
+  version = "2.5.0";
 
   src = fetchFromGitHub {
     owner = "SoMuchForSubtlety";
     repo = pname;
     rev = "v${version}";
-    sha256 = "7eXRUG74l9+9nU7EmDvNcHc+2pg5+/amjqtrzT60f94=";
+    sha256 = "sha256-cTXueIOD+OXx4WikhdNv3v/F2/f5aDicyPP7FgTU6AM=";
   };
 
-  vendorSha256 = "4pQ8NT0mh3w7naHEHh2w6Csop0uitlWClZ95VlYaPW0=";
+  vendorSha256 = "sha256-47uLx4t0N1T3zqZ9o/su/onJEUdGXpq+iVSUaRnwW3I=";
 
   meta = with lib; {
     description =
diff --git a/pkgs/applications/video/ffmpeg-normalize/default.nix b/pkgs/applications/video/ffmpeg-normalize/default.nix
index 41c035350d8..5e725ec01e1 100644
--- a/pkgs/applications/video/ffmpeg-normalize/default.nix
+++ b/pkgs/applications/video/ffmpeg-normalize/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonApplication rec {
   pname = "ffmpeg-normalize";
-  version = "1.22.4";
+  version = "1.22.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a20978538ae9a51bdbe5ef5aa0f87ede0f8efd2817ab240980de56eac36982e3";
+    sha256 = "20250fc28ce04636580577b2864e54e6bea9daf68e2d8afaeb78e131b182cd28";
   };
 
   propagatedBuildInputs = [ ffmpeg ffmpeg-progress-yield ];
diff --git a/pkgs/applications/video/freetube/default.nix b/pkgs/applications/video/freetube/default.nix
index c5a2a313860..8b90704a535 100644
--- a/pkgs/applications/video/freetube/default.nix
+++ b/pkgs/applications/video/freetube/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "freetube";
-  version = "0.15.1";
+  version = "0.16.0";
 
   src = fetchurl {
     url = "https://github.com/FreeTubeApp/FreeTube/releases/download/v${version}-beta/freetube_${version}_amd64.AppImage";
-    sha256 = "sha256-7jmKD6HjsTqW/SRmD4xI3uQJnwmyDgjJZRJX9XygZyU=";
+    sha256 = "sha256-G4lZ1lbNN8X9ocWhcuuNZGTZm9AUzuWKVm23YgsJwig=";
   };
 
   appimageContents = appimageTools.extractType2 {
diff --git a/pkgs/applications/video/kodi/addons/controller-topology-project/default.nix b/pkgs/applications/video/kodi/addons/controller-topology-project/default.nix
new file mode 100644
index 00000000000..2607ee64f70
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/controller-topology-project/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchFromGitHub, toKodiAddon, addonDir }:
+let
+  drv = stdenv.mkDerivation {
+    pname = "controller-topology-project";
+    version = "unstable-2022-01-22";
+
+    src = fetchFromGitHub {
+      owner = "kodi-game";
+      repo = "controller-topology-project";
+      rev = "e2a9bac903f21b2acfeee374070cfc97d03aba2d";
+      sha256 = "sha256-o6uKxOjEYNAK27drvNOokOFPdjkOEnr49mBre9ycM0w=";
+    };
+
+    postPatch = ''
+      # remove addons already included in the base kodi package
+      rm -r addons/game.controller.default
+      rm -r addons/game.controller.snes
+    '';
+
+    installPhase = ''
+      runHook preInstall
+      mkdir -p $out${addonDir}
+      cp -r addons/* $out${addonDir}
+      runHook postInstall
+    '';
+
+    meta = with lib; {
+      homepage = "https://github.com/kodi-game/controller-topology-project";
+      description = "Models how controllers connect to and map to each other for all gaming history";
+      license = with licenses; [ odbl ];
+      maintainers = teams.kodi.members;
+    };
+  };
+in
+  toKodiAddon drv
diff --git a/pkgs/applications/video/kodi/addons/controllers/default.nix b/pkgs/applications/video/kodi/addons/controllers/default.nix
deleted file mode 100644
index 825ad5d53fc..00000000000
--- a/pkgs/applications/video/kodi/addons/controllers/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib, buildKodiAddon, fetchFromGitHub, controller }:
-buildKodiAddon rec {
-  pname = "game-controller-${controller}";
-  namespace = "game.controller.${controller}";
-  version = "1.0.3";
-
-  sourceDir = "addons/" + namespace;
-
-  src = fetchFromGitHub {
-    owner = "kodi-game";
-    repo = "kodi-game-controllers";
-    rev = "01acb5b6e8b85392b3cb298b034aadb1b24ccf18";
-    sha256 = "0sbc0w0fwbp7rbmbgb6a1kglhnn5g85hijcbbvf5x6jdq9v3f1qb";
-  };
-
-  meta = with lib; {
-    description = "Add support for different gaming controllers.";
-    platforms = platforms.all;
-    license = licenses.odbl;
-    maintainers = teams.kodi.members;
-  };
-}
diff --git a/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix b/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix
index 9fc59b2d329..b16bab1b217 100644
--- a/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix
+++ b/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix
@@ -2,13 +2,13 @@
 buildKodiBinaryAddon rec {
   pname = "inputstream-adaptive";
   namespace = "inputstream.adaptive";
-  version = "19.0.1";
+  version = "19.0.3";
 
   src = fetchFromGitHub {
     owner = "xbmc";
     repo = "inputstream.adaptive";
     rev = "${version}-${rel}";
-    sha256 = "sha256-KMEo7kXyFMEeUR/HRvXpUhwDFlWsuwYZFA6bA3W1AmY=";
+    sha256 = "sha256-YYIPPxM8zVIugqLz0YntVZt1N+dReH+7V1Lkeif2wIY=";
   };
 
   extraNativeBuildInputs = [ gtest ];
diff --git a/pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix b/pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix
index 313456bbfa7..78b6ea5ac1d 100644
--- a/pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix
+++ b/pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix
@@ -3,13 +3,13 @@
 buildKodiBinaryAddon rec {
   pname = "inputstream-ffmpegdirect";
   namespace = "inputstream.ffmpegdirect";
-  version = "19.0.0";
+  version = "19.0.1";
 
   src = fetchFromGitHub {
     owner = "xbmc";
     repo = "inputstream.ffmpegdirect";
     rev = "${version}-${rel}";
-    sha256 = "sha256-qdN2tmwS6uD9wrHnKC3iNvHnA2WlJAoNhdwvw16/L0U=";
+    sha256 = "sha256-yVMo3cRsIww1y0jGrqRag2Bc1x98+e86AHlnY1O9klE=";
   };
 
   extraBuildInputs = [ bzip2 zlib kodi.ffmpeg ];
diff --git a/pkgs/applications/video/kodi/addons/pvr-hts/default.nix b/pkgs/applications/video/kodi/addons/pvr-hts/default.nix
index e64f8c60e5c..4b13e4a617e 100644
--- a/pkgs/applications/video/kodi/addons/pvr-hts/default.nix
+++ b/pkgs/applications/video/kodi/addons/pvr-hts/default.nix
@@ -2,13 +2,13 @@
 buildKodiBinaryAddon rec {
   pname = "pvr-hts";
   namespace = "pvr.hts";
-  version = "19.0.4";
+  version = "19.0.6";
 
   src = fetchFromGitHub {
     owner = "kodi-pvr";
     repo = "pvr.hts";
     rev = "${version}-${rel}";
-    sha256 = "sha256-WP/eaE3qO0NqN23dHkFOiOjoeKIglbbHofqnUsfxSfI=";
+    sha256 = "sha256-Lc3B1TdQ4oQIEIyKuQju+5cpInF5i2u4WFe3okFhe+I=";
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix b/pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix
index 5aefffabc32..89aa3c7d358 100644
--- a/pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix
+++ b/pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix
@@ -6,13 +6,13 @@
 buildKodiBinaryAddon rec {
   pname = "pvr-iptvsimple";
   namespace = "pvr.iptvsimple";
-  version = "19.0.3";
+  version = "19.1.0";
 
   src = fetchFromGitHub {
     owner = "kodi-pvr";
     repo = "pvr.iptvsimple";
     rev = "${version}-${rel}";
-    sha256 = "sha256-LQP+yPHPOjgvW7LQmqrp15NWFBVdnrGOSGm37N8AsHg=";
+    sha256 = "sha256-APRj/Z/GtRXNSVX5kB0o09FTa9me2ESzrZ/Q+QNrw0w=";
   };
 
   extraBuildInputs = [
diff --git a/pkgs/applications/video/lbry/default.nix b/pkgs/applications/video/lbry/default.nix
index 0f7438e392c..596ab546766 100644
--- a/pkgs/applications/video/lbry/default.nix
+++ b/pkgs/applications/video/lbry/default.nix
@@ -2,7 +2,7 @@
 
 let
   pname = "lbry-desktop";
-  version = "0.52.0";
+  version = "0.52.2";
 in appimageTools.wrapAppImage rec {
   name = "${pname}-${version}";
 
@@ -12,7 +12,7 @@ in appimageTools.wrapAppImage rec {
     src = fetchurl {
       url = "https://github.com/lbryio/lbry-desktop/releases/download/v${version}/LBRY_${version}.AppImage";
       # Gotten from latest-linux.yml
-      sha512 = "FMsO1tUhym11hxot/0S4pXwjvt1YhOUahwiQU+HhOxrZhcrOwwyXUzMy3sAzKdZjidKpA5DbLjkgwPlg2kGWwg==";
+      sha512 = "+yymVTpEQ0hKrJYij9lNVxK5J8vnW1g5o1TkGJX/TkSAqIUFhwRUJyqDS3uCvgTrD8ywulewgk1TREd/PA615w==";
     };
   };
 
diff --git a/pkgs/applications/video/minitube/default.nix b/pkgs/applications/video/minitube/default.nix
index 4e8373383a8..eda58349bd8 100644
--- a/pkgs/applications/video/minitube/default.nix
+++ b/pkgs/applications/video/minitube/default.nix
@@ -6,10 +6,10 @@
 
 mkDerivation rec {
   pname = "minitube";
-  version = "3.9.2";
+  version = "3.9.3";
 
   src = fetchFromGitHub {
-    sha256 = "sha256-MIzfo17eAvpWO2HNq9z+D9XiOKTRiUHvaOdxI1EK1f0=";
+    sha256 = "sha256-ROqROQsV8ddrxYT5mMdkf6rCgCoGr1jpxQ1ohcoEaQs=";
     rev = version;
     repo = "minitube";
     owner = "flaviotordini";
diff --git a/pkgs/applications/video/mkvtoolnix/default.nix b/pkgs/applications/video/mkvtoolnix/default.nix
index 04911562a34..0928c7617f9 100644
--- a/pkgs/applications/video/mkvtoolnix/default.nix
+++ b/pkgs/applications/video/mkvtoolnix/default.nix
@@ -47,13 +47,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "mkvtoolnix";
-  version = "64.0.0";
+  version = "65.0.0";
 
   src = fetchFromGitLab {
     owner = "mbunkus";
     repo = "mkvtoolnix";
     rev = "release-${version}";
-    sha256 = "sha256-tg9rjTbprcVkzUUVWCKqF1dzIjFKjzIqrVADtuUU9Fk=";
+    sha256 = "1zphcpfrzic9ialx3xxi2ywzxnllys667vy140bgdshzr798sg2p";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/mplayer/default.nix b/pkgs/applications/video/mplayer/default.nix
index 1715ce4a6a1..0c435bfbe15 100644
--- a/pkgs/applications/video/mplayer/default.nix
+++ b/pkgs/applications/video/mplayer/default.nix
@@ -1,4 +1,4 @@
-{ config, lib, stdenv, fetchurl, pkg-config, freetype, yasm, ffmpeg
+{ config, lib, stdenv, fetchurl, fetchsvn, pkg-config, freetype, yasm, ffmpeg
 , aalibSupport ? true, aalib ? null
 , fontconfigSupport ? true, fontconfig ? null, freefont_ttf ? null
 , fribidiSupport ? true, fribidi ? null
@@ -93,11 +93,12 @@ in
 
 stdenv.mkDerivation rec {
   pname = "mplayer";
-  version = "1.4";
+  version = "unstable-2022-02-03";
 
-  src = fetchurl {
-    url = "http://www.mplayerhq.hu/MPlayer/releases/MPlayer-${version}.tar.xz";
-    sha256 = "0j5mflr0wnklxsvnpmxvk704hscyn2785hvvihj2i3a7b3anwnc2";
+  src = fetchsvn {
+    url = "svn://svn.mplayerhq.hu/mplayer/trunk";
+    rev = "38331";
+    sha256 = "1vpic8i6zvg0zsy50vhm45ysqag561bpn9jycfbvvwl9ji7l55zi";
   };
 
   prePatch = ''
@@ -106,8 +107,6 @@ stdenv.mkDerivation rec {
     rm -rf ffmpeg
   '';
 
-  patches = [ ./svn-r38199-ffmpeg44fix.patch ];
-
   depsBuildBuild = [ buildPackages.stdenv.cc ];
   nativeBuildInputs = [ pkg-config yasm ];
   buildInputs = with lib;
@@ -163,7 +162,6 @@ stdenv.mkDerivation rec {
     (if pulseSupport then "--enable-pulse" else "--disable-pulse")
     (if v4lSupport then "--enable-v4l2 --enable-tv-v4l2" else "--disable-v4l2 --disable-tv-v4l2")
     "--disable-xanim"
-    "--disable-ivtv"
     "--disable-xvid --disable-xvid-lavc"
     "--disable-ossaudio"
     "--disable-ffmpeg_a"
diff --git a/pkgs/applications/video/mplayer/svn-r38199-ffmpeg44fix.patch b/pkgs/applications/video/mplayer/svn-r38199-ffmpeg44fix.patch
deleted file mode 100644
index 4137989fcb5..00000000000
--- a/pkgs/applications/video/mplayer/svn-r38199-ffmpeg44fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Index: libmpcodecs/ad_spdif.c
-===================================================================
-diff --git a/libmpcodecs/ad_spdif.c b/libmpcodecs/ad_spdif.c
---- a/libmpcodecs/ad_spdif.c	(revision 38198)
-+++ b/libmpcodecs/ad_spdif.c	(revision 38199)
-@@ -298,14 +298,8 @@
-         if (spdif_ctx->header_written)
-             av_write_trailer(lavf_ctx);
-         av_freep(&lavf_ctx->pb);
--        if (lavf_ctx->streams) {
--            av_freep(&lavf_ctx->streams[0]->codec);
--            av_freep(&lavf_ctx->streams[0]->info);
--            av_freep(&lavf_ctx->streams[0]);
--        }
--        av_freep(&lavf_ctx->streams);
--        av_freep(&lavf_ctx->priv_data);
-+        avformat_free_context(lavf_ctx);
-+        lavf_ctx = NULL;
-     }
--    av_freep(&lavf_ctx);
-     av_freep(&spdif_ctx);
- }
diff --git a/pkgs/applications/video/obs-studio/Change-product_version-to-user_agent_product.patch b/pkgs/applications/video/obs-studio/Change-product_version-to-user_agent_product.patch
deleted file mode 100644
index 0bc79624860..00000000000
--- a/pkgs/applications/video/obs-studio/Change-product_version-to-user_agent_product.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 635772c4c5ecf11a0f84e6c9fc273dce6b9a5688 Mon Sep 17 00:00:00 2001
-From: V <v@anomalous.eu>
-Date: Thu, 10 Jun 2021 18:36:22 +0200
-Subject: [PATCH] Change product_version to user_agent_product
-
-This is its name as of CEF 91.1.0.
----
- obs-browser-plugin.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/obs-browser-plugin.cpp b/obs-browser-plugin.cpp
-index 1a6a009..5eb379e 100644
---- a/plugins/obs-browser/obs-browser-plugin.cpp
-+++ b/plugins/obs-browser/obs-browser-plugin.cpp
-@@ -298,7 +298,7 @@ static void BrowserInit(void)
- 	prod_ver << std::to_string(obs_maj) << "." << std::to_string(obs_min)
- 		 << "." << std::to_string(obs_pat);
- 
--	CefString(&settings.product_version) = prod_ver.str();
-+	CefString(&settings.user_agent_product) = prod_ver.str();
- 
- #ifdef USE_QT_LOOP
- 	settings.external_message_pump = true;
--- 
-2.31.1
-
diff --git a/pkgs/applications/video/obs-studio/default.nix b/pkgs/applications/video/obs-studio/default.nix
index 31f478c47c0..6d3f9b6d32d 100644
--- a/pkgs/applications/video/obs-studio/default.nix
+++ b/pkgs/applications/video/obs-studio/default.nix
@@ -6,7 +6,7 @@
 , addOpenGLRunpath
 , cmake
 , fdk_aac
-, ffmpeg
+, ffmpeg_4
 , jansson
 , libjack2
 , libxkbcommon
@@ -34,8 +34,10 @@
 , pulseaudioSupport ? config.pulseaudio or stdenv.isLinux
 , libpulseaudio
 , libcef
+, pciutils
 , pipewireSupport ? stdenv.isLinux
 , pipewire
+, libdrm
 }:
 
 let
@@ -44,22 +46,19 @@ let
 in
 mkDerivation rec {
   pname = "obs-studio";
-  version = "27.0.1";
+  version = "27.2.0";
 
   src = fetchFromGitHub {
     owner = "obsproject";
     repo = "obs-studio";
     rev = version;
-    sha256 = "04fzsr9yizmxy0r7z2706crvnsnybpnv5kgfn77znknxxjacfhkn";
+    sha256 = "KZgwAtyxv2vXDW7vF1eArF5Mqw45NngwChc+5OnXuXg=";
     fetchSubmodules = true;
   };
 
   patches = [
     # Lets obs-browser build against CEF 90.1.0+
     ./Enable-file-access-and-universal-access-for-file-URL.patch
-
-    # Lets obs-browser build against CEF 91.1.0+
-    ./Change-product_version-to-user_agent_product.patch
   ];
 
   nativeBuildInputs = [
@@ -73,7 +72,7 @@ mkDerivation rec {
   buildInputs = [
     curl
     fdk_aac
-    ffmpeg
+    ffmpeg_4
     jansson
     libcef
     libjack2
@@ -89,11 +88,12 @@ mkDerivation rec {
     x264
     libvlc
     mbedtls
+    pciutils
   ]
   ++ optionals scriptingSupport [ luajit python3 ]
   ++ optional alsaSupport alsa-lib
   ++ optional pulseaudioSupport libpulseaudio
-  ++ optional pipewireSupport pipewire;
+  ++ optionals pipewireSupport [ pipewire libdrm ];
 
   # Copied from the obs-linuxbrowser
   postUnpack = ''
@@ -143,5 +143,6 @@ mkDerivation rec {
     maintainers = with maintainers; [ jb55 MP2E V ];
     license = licenses.gpl2Plus;
     platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ];
+    mainProgram = "obs";
   };
 }
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-multi-rtmp.nix b/pkgs/applications/video/obs-studio/plugins/obs-multi-rtmp.nix
index c78a8236bf2..a6c84cbbbef 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-multi-rtmp.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-multi-rtmp.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "obs-multi-rtmp";
-  version = "0.2.7.1";
+  version = "0.2.8.1";
 
   src = fetchFromGitHub {
     owner = "sorayuki";
     repo = "obs-multi-rtmp";
     rev = version;
-    sha256 = "sha256-pnSIbAWGufcWIARXpX/zwA/Ff35lrinFaMIdFY00c4Y=";
+    sha256 = "sha256-OhatuSlDJ2VDNorM4QfoKPYKyv5YpN8EnIelLdBTlZ0=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-websocket.nix b/pkgs/applications/video/obs-studio/plugins/obs-websocket.nix
index 5c13d33ae46..d747268cc55 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-websocket.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-websocket.nix
@@ -4,24 +4,48 @@
 , fetchpatch
 , cmake
 , qtbase
+, qtsvg
 , obs-studio
 , asio_1_10
 , websocketpp
+, nlohmann_json
 }:
 
 stdenv.mkDerivation rec {
   pname = "obs-websocket";
-  version = "4.9.1";
+
+  # We have updated to the alpha version when OBS Studio 27.2 was
+  # released, because this is the only version of obs-websocket that
+  # builds against the new OBS Studio.
+  version = "5.0.0-alpha3";
 
   src = fetchFromGitHub {
     owner = "Palakis";
     repo = "obs-websocket";
     rev = version;
-    sha256 = "sha256-XCiSNWTiA/u+3IbYlhIc5bCjKjLHDRVjYIG5MEoYnr0=";
+    sha256 = "Lr6SBj5rRTAWmn9Tnlu4Sl7SAkOCRCTP6sFWSp4xB+I=";
+    fetchSubmodules = true;
   };
 
+  patches = [
+    # This patch can be dropped when obs-websocket is updated to the
+    # next version.
+    (fetchpatch {
+      url = "https://github.com/obsproject/obs-websocket/commit/13c7b83c34eb67b2ee80af05071d81f10d0d2997.patch";
+      sha256 = "TNap/T8+058vhfWzRRr4vmlblFk9tHMUNyG6Ob5PwiM=";
+      name = "obs-addref-werror-fix.patch";
+    })
+  ];
+
   nativeBuildInputs = [ cmake ];
-  buildInputs = [ qtbase obs-studio asio_1_10 websocketpp ];
+  buildInputs = [
+    qtbase
+    qtsvg
+    obs-studio
+    asio_1_10
+    websocketpp
+    nlohmann_json
+  ];
 
   dontWrapQtApps = true;
 
diff --git a/pkgs/applications/video/peek/default.nix b/pkgs/applications/video/peek/default.nix
index edeb848867f..27064077a9f 100644
--- a/pkgs/applications/video/peek/default.nix
+++ b/pkgs/applications/video/peek/default.nix
@@ -1,5 +1,7 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , fetchFromGitHub
+, fetchpatch
 , nix-update-script
 , meson
 , ninja
@@ -35,6 +37,15 @@ stdenv.mkDerivation rec {
     sha256 = "1xwlfizga6hvjqq127py8vabaphsny928ar7mwqj9cyqfl6fx41x";
   };
 
+  patches = [
+    # Fix compatibility with GNOME Shell ≥ 40.
+    # https://github.com/phw/peek/pull/910
+    (fetchpatch {
+      url = "https://github.com/phw/peek/commit/008d15316ab5428363c512b263ca8138cb8f52ba.patch";
+      sha256 = "xxJ+r5uRk93MEzWTFla88ewZsnUl3+YKTenzDygtKP0=";
+    })
+  ];
+
   nativeBuildInputs = [
     appstream-glib
     desktop-file-utils
diff --git a/pkgs/applications/video/plex-media-player/default.nix b/pkgs/applications/video/plex-media-player/default.nix
index 81b354fe1ff..34b6eb9c286 100644
--- a/pkgs/applications/video/plex-media-player/default.nix
+++ b/pkgs/applications/video/plex-media-player/default.nix
@@ -36,12 +36,16 @@ in mkDerivation rec {
 
   cmakeFlags = [ "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DQTROOT=${qtbase}" ];
 
+  # plexmediaplayer currently segfaults under wayland
+  qtWrapperArgs = [ "--set" "QT_QPA_PLATFORM" "xcb" ];
+
   passthru.updateScript = ./update.sh;
 
   meta = with lib; {
     description = "Streaming media player for Plex";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ b4dm4n ];
     homepage = "https://plex.tv";
+    mainProgram = "plexmediaplayer";
   };
 }
diff --git a/pkgs/applications/video/sub-batch/default.nix b/pkgs/applications/video/sub-batch/default.nix
index fd5b2888d63..1603bdcbb94 100644
--- a/pkgs/applications/video/sub-batch/default.nix
+++ b/pkgs/applications/video/sub-batch/default.nix
@@ -8,16 +8,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "sub-batch";
-  version = "0.4.1";
+  version = "1.0.0";
 
   src = fetchFromGitHub {
     owner = "kl";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-WUW+lOGbZ82NJxmW+Ogxslf3COOp62aZ/08Yn26l4T0=";
+    sha256 = "sha256-N+3KyBlLG90C3D5ivgj6qedtKsUBoBHr89gmxyAIfVI=";
   };
 
-  cargoSha256 = "sha256-m9nBubmuuOcJyegmYGJizY/2b7oamBHKFNIaxOtikcA=";
+  cargoSha256 = "sha256-rjhSosiLIgcSw6OHpFmGNHXGUdf2QsiIXFVgtO9qNY0=";
 
   nativeBuildInputs = [ makeWrapper ];
 
diff --git a/pkgs/applications/video/tartube/default.nix b/pkgs/applications/video/tartube/default.nix
index 74ce4446a19..3b333be7afe 100644
--- a/pkgs/applications/video/tartube/default.nix
+++ b/pkgs/applications/video/tartube/default.nix
@@ -15,13 +15,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "tartube";
-  version = "2.3.332";
+  version = "2.3.367";
 
   src = fetchFromGitHub {
     owner = "axcore";
     repo = "tartube";
     rev = "v${version}";
-    sha256 = "1m7p4chpvbh4mswsymh89dksdgwhmnkpfbx9zi2jzqgkinfd6a2k";
+    sha256 = "sha256-ZoNe3Ibv0adM6Is5cWMqfUrr0U3R951IJFsdEm1bztc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/ustreamer/default.nix b/pkgs/applications/video/ustreamer/default.nix
index 6dc8aa56b5c..f2753affa56 100644
--- a/pkgs/applications/video/ustreamer/default.nix
+++ b/pkgs/applications/video/ustreamer/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ustreamer";
-  version = "4.9";
+  version = "4.11";
 
   src = fetchFromGitHub {
     owner = "pikvm";
     repo = "ustreamer";
     rev = "v${version}";
-    sha256 = "sha256-dYwR+D2g4PxYyhsH9mGwgzTQ2Vw5UpMSomTl828gFvM=";
+    sha256 = "sha256-MTzlhnnDVZzS3lnYe3P/Hi6pi6f4B0+ejmDwV0f9juI=";
   };
 
   buildInputs = [ libbsd libevent libjpeg ];
diff --git a/pkgs/applications/video/vdr/default.nix b/pkgs/applications/video/vdr/default.nix
index 51984cf5f11..5584e63ab44 100644
--- a/pkgs/applications/video/vdr/default.nix
+++ b/pkgs/applications/video/vdr/default.nix
@@ -5,12 +5,12 @@
 }: stdenv.mkDerivation rec {
 
   pname = "vdr";
-  version = "2.6.0";
+  version = "2.6.1";
 
   src = fetchgit {
     url = "git://git.tvdr.de/vdr.git";
     rev = version;
-    sha256 = "sha256-TZm9pN9xtqkKhETsUhIIalK+4xQpFV3TXyWychSoyRk=";
+    sha256 = "sha256-jKuvh1OruPXTBlgLwlwcJdqC8u0WBDr/Un5JUL3U0hw=";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/applications/video/vlc/default.nix b/pkgs/applications/video/vlc/default.nix
index 7aa780f8a7f..a5e65480b2b 100644
--- a/pkgs/applications/video/vlc/default.nix
+++ b/pkgs/applications/video/vlc/default.nix
@@ -10,7 +10,7 @@
 , avahi
 , dbus
 , faad2
-, ffmpeg
+, ffmpeg_4
 , flac
 , fluidsynth
 , freefont_ttf
@@ -100,7 +100,7 @@ stdenv.mkDerivation rec {
     avahi
     dbus
     faad2
-    ffmpeg
+    ffmpeg_4
     flac
     fluidsynth
     fribidi
diff --git a/pkgs/applications/video/xine-ui/default.nix b/pkgs/applications/video/xine-ui/default.nix
index 3d44796f78c..b4f610c7a91 100644
--- a/pkgs/applications/video/xine-ui/default.nix
+++ b/pkgs/applications/video/xine-ui/default.nix
@@ -1,6 +1,8 @@
 { lib
 , stdenv
 , fetchurl
+, fetchpatch
+, autoreconfHook
 , curl
 , libjpeg
 , libpng
@@ -22,7 +24,17 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-sjgtB1xysbEAOeDpAxDMhsjZEDWMU1We2C09WEIB9cU=";
   };
 
+  patches = [
+    (fetchpatch {
+      # Fix build on aarch64
+      name = "xine-ui_FTBS_aarch64.patch";
+      url = "https://salsa.debian.org/debian/xine-ui/-/raw/b2f04f64947a8975a805950e7e67b15cb44007ef/debian/patches/backport/0003-Fix-build.patch";
+      sha256 = "03f8nkm7q11v5vssl1bj500ja4ljz4y752mfk22k2g4djkwimx62";
+    })
+  ];
+
   nativeBuildInputs = [
+    autoreconfHook
     pkg-config
     shared-mime-info
   ];
@@ -57,7 +69,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    homepage = "http://xinehq.de/";
+    homepage = "http://xine.sourceforge.net/";
     description = "Xlib-based frontend for Xine video player";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ AndersonTorres ];
diff --git a/pkgs/applications/video/xplayer/default.nix b/pkgs/applications/video/xplayer/default.nix
index a4b03e91501..9d6a5e18ad5 100644
--- a/pkgs/applications/video/xplayer/default.nix
+++ b/pkgs/applications/video/xplayer/default.nix
@@ -47,7 +47,7 @@ stdenv.mkDerivation rec {
   # the gstreamer toolsdir points to the wrong derivation output
   postPatch = ''
     substituteInPlace configure.ac \
-                      --replace '$gst10_toolsdir/gst-inspect-1.0' '${gstreamer.dev}/bin/gst-inspect-1.0' \
+                      --replace '$gst10_toolsdir/gst-inspect-1.0' '${gstreamer}/bin/gst-inspect-1.0' \
   '';
 
   preBuild = ''