summary refs log tree commit diff
path: root/gnu/packages/video.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/video.scm')
-rw-r--r--gnu/packages/video.scm516
1 files changed, 219 insertions, 297 deletions
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index fb01e3f30c..48c7c3a46d 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -24,7 +24,7 @@
 ;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2018-2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2018, 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2018, 2019, 2020 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018, 2019, 2020, 2022 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
@@ -40,7 +40,7 @@
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
-;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
@@ -61,6 +61,7 @@
 ;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
 ;;; Copyright © 2022 Bird <birdsite@airmail.cc>
 ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
+;;; Copyright © 2022 Chadwain Holness <chadwainholness@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -120,6 +121,7 @@
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages crates-graphics)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages dbm)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages dns)
   #:use-module (gnu packages docbook)
@@ -745,6 +747,7 @@ stream decoding")
                           (ncurses (assoc-ref inputs "ncurses")))
                       (setenv "CONFIG_SHELL" (which "bash"))
                       (invoke "./configure"
+                              "--disable-static"
                               (string-append "--prefix=" out)
                               (string-append "--build=" build)
                               (string-append "--with-ncurses="
@@ -760,7 +763,7 @@ old-fashioned output methods with powerful ascii-art renderer.")
 (define-public celluloid
   (package
     (name "celluloid")
-    (version "0.22")
+    (version "0.23")
     (source
      (origin
        (method url-fetch)
@@ -768,7 +771,7 @@ old-fashioned output methods with powerful ascii-art renderer.")
                            "/releases/download/v" version
                            "/celluloid-" version ".tar.xz"))
        (sha256
-        (base32 "18g596ja8g0fy79pmxqdlzqzb0f9xq69ik4bah8g2ppipfvxbpjz"))))
+        (base32 "0x23y09jwkg8wbb0yp5f03sj5hwjg3kyhbbww2y1a0izs1iijbdj"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      (list intltool pkg-config))
@@ -820,7 +823,7 @@ television and DVD.  It is also known as AC-3.")
 (define-public libaom
   (package
     (name "libaom")
-    (version "3.2.0")
+    (version "3.3.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -829,7 +832,7 @@ television and DVD.  It is also known as AC-3.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0fmnbzpl481i7kchx4hbvb507r5pfgyrzfrlrs7jk3bicycm75qv"))))
+                "024vhsx7bw9kajk65hhh5vmqrja0h33rmlcpngsj3yg4p8l29943"))))
     (build-system cmake-build-system)
     (native-inputs
      (list perl pkg-config python)) ; to detect the version
@@ -1077,7 +1080,7 @@ H.264 (MPEG-4 AVC) video streams.")
 (define-public pipe-viewer
   (package
     (name "pipe-viewer")
-    (version "0.1.7")
+    (version "0.2.0")
     (source
      (origin
        (method git-fetch)
@@ -1087,7 +1090,7 @@ H.264 (MPEG-4 AVC) video streams.")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1fh8b77vchpsar88dszsz5h1gzd4jz0v902igp2880vnpvacmfi9"))))
+        (base32 "19qfs0nv7l01468f14a5zbvaiff5hrsk3a4zqknh15014xnvw08s"))))
     (build-system perl-build-system)
     (arguments
      `(#:imported-modules
@@ -1546,58 +1549,56 @@ These tools require a supported graphics chip, driver, and VA-API back end to
 operate properly.")
     (license license:expat)))
 
-(define-public ffmpeg
+(define-public ffmpeg-5
   (package
     (name "ffmpeg")
-    (version "4.4.1")
+    (version "5.0.1")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
-                                 version ".tar.xz"))
-             (sha256
-              (base32
-               "00hfwd8ld6jnd26pl9f0wcd2mag4zacxxgqgabsja2xkkagavnza"))))
+              (method url-fetch)
+              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0yq0jcdc4qm5znrzylj3dsicrkk2n3n8bv28vr0a506fb7iglbpg"))))
     (build-system gnu-build-system)
     (inputs
-     `(("dav1d" ,dav1d)
-       ("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("frei0r-plugins" ,frei0r-plugins)
-       ("gnutls" ,gnutls)
-       ("opus" ,opus)
-       ("ladspa" ,ladspa)
-       ("lame" ,lame)
-       ("libaom" ,libaom)
-       ("libass" ,libass)
-       ("libbluray" ,libbluray)
-       ("libcaca" ,libcaca)
-       ("libcdio-paranoia" ,libcdio-paranoia)
-       ("libdrm" ,libdrm)
-       ("libtheora" ,libtheora)
-       ("libva" ,libva)
-       ("libvdpau" ,libvdpau)
-       ("libvorbis" ,libvorbis)
-       ("libvpx" ,libvpx)
-       ("libx11" ,libx11)
-       ("libx264" ,libx264)
-       ("mesa" ,mesa)
-       ("openal" ,openal)
-       ("pulseaudio" ,pulseaudio)
-       ;; XXX: rav1e depends on rust, which currently only works on x86_64.
-       ;; See also the related configure flag when changing this.
-       ,@(if (string-prefix? "x86_64" (or (%current-target-system)
-                                          (%current-system)))
-             `(("rav1e" ,rav1e))
-             '())
-       ("sdl" ,sdl2)
-       ("soxr" ,soxr)
-       ("speex" ,speex)
-       ("srt" ,srt)
-       ("twolame" ,twolame)
-       ("vidstab" ,vidstab)
-       ("x265" ,x265)
-       ("xvid" ,xvid)
-       ("zlib" ,zlib)))
+     (append
+      ;; XXX: rav1e depends on rust, which currently only works on x86_64.
+      ;; See also the related configure flag when changing this.
+      (if (target-x86-64?) (list rav1e) '())
+      (list dav1d
+            fontconfig
+            freetype
+            frei0r-plugins
+            gnutls
+            opus
+            ladspa
+            lame
+            libaom
+            libass
+            libbluray
+            libcaca
+            libcdio-paranoia
+            libdrm
+            libtheora
+            libva
+            libvdpau
+            libvorbis
+            libvpx
+            libx11
+            libx264
+            mesa
+            openal
+            pulseaudio
+            sdl2
+            soxr
+            speex
+            srt
+            twolame
+            vidstab
+            x265
+            xvid
+            zlib)))
     (native-inputs
      (list bc
            perl
@@ -1606,55 +1607,56 @@ operate properly.")
            speex
            yasm))
     (arguments
-     `(#:test-target "fate"
-       #:configure-flags
-       ;; possible additional inputs:
-       ;;   --enable-avisynth        enable reading of AviSynth script
-       ;;                            files [no]
-       ;;   --enable-libaacplus      enable AAC+ encoding via libaacplus [no]
-       ;;   --enable-libcelt         enable CELT decoding via libcelt [no]
-       ;;   --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
-       ;;                            and libraw1394 [no]
-       ;;   --enable-libfaac         enable AAC encoding via libfaac [no]
-       ;;   --enable-libfdk-aac      enable AAC de/encoding via libfdk-aac [no]
-       ;;   --enable-libflite        enable flite (voice synthesis) support via
-       ;;                            libflite [no]
-       ;;   --enable-libgme          enable Game Music Emu via libgme [no]
-       ;;   --enable-libgsm          enable GSM de/encoding via libgsm [no]
-       ;;   --enable-libiec61883     enable iec61883 via libiec61883 [no]
-       ;;   --enable-libilbc         enable iLBC de/encoding via libilbc [no]
-       ;;   --enable-libmodplug      enable ModPlug via libmodplug [no]
-       ;;   --enable-libnut          enable NUT (de)muxing via libnut,
-       ;;                            native (de)muxer exists [no]
-       ;;   --enable-libopencore-amrnb    enable AMR-NB de/encoding via
-       ;;                                 libopencore-amrnb [no]
-       ;;   --enable-libopencore-amrwb    enable AMR-WB decoding via
-       ;;                                 libopencore-amrwb [no]
-       ;;   --enable-libopencv       enable video filtering via libopencv [no]
-       ;;   --enable-libopenjpeg     enable JPEG 2000 de/encoding via
-       ;;                            OpenJPEG [no]
-       ;;   --enable-librtmp         enable RTMP[E] support via librtmp [no]
-       ;;   --enable-libschroedinger enable Dirac de/encoding via
-       ;;                            libschroedinger [no]
-       ;;   --enable-libshine        enable fixed-point MP3 encoding via
-       ;;                            libshine [no]
-       ;;   --enable-libssh          enable SFTP protocol via libssh [no]
-       ;;                            (libssh2 does not work)
-       ;;   --enable-libstagefright-h264  enable H.264 decoding via
-       ;;                                 libstagefright [no]
-       ;;   --enable-libutvideo      enable Ut Video encoding and decoding via
-       ;;                            libutvideo [no]
-       ;;   --enable-libv4l2         enable libv4l2/v4l-utils [no]
-       ;;   --enable-libvo-aacenc    enable AAC encoding via libvo-aacenc [no]
-       ;;   --enable-libvo-amrwbenc  enable AMR-WB encoding via
-       ;;                            libvo-amrwbenc [no]
-       ;;   --enable-libwavpack      enable wavpack encoding via libwavpack [no]
-       ;;   --enable-libxavs         enable AVS encoding via xavs [no]
-       ;;   --enable-libzmq          enable message passing via libzmq [no]
-       ;;   --enable-libzvbi         enable teletext support via libzvbi [no]
-       ;;   --enable-opencl          enable OpenCL code
-       '("--enable-avresample"
-         "--enable-gpl" ; enable optional gpl licensed parts
+     (list
+      #:test-target "fate"
+      #:configure-flags
+      ;; possible additional inputs:
+      ;;   --enable-avisynth        enable reading of AviSynth script
+      ;;                            files [no]
+      ;;   --enable-libaacplus      enable AAC+ encoding via libaacplus [no]
+      ;;   --enable-libcelt         enable CELT decoding via libcelt [no]
+      ;;   --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
+      ;;                            and libraw1394 [no]
+      ;;   --enable-libfaac         enable AAC encoding via libfaac [no]
+      ;;   --enable-libfdk-aac      enable AAC de/encoding via libfdk-aac [no]
+      ;;   --enable-libflite        enable flite (voice synthesis) support via
+      ;;                            libflite [no]
+      ;;   --enable-libgme          enable Game Music Emu via libgme [no]
+      ;;   --enable-libgsm          enable GSM de/encoding via libgsm [no]
+      ;;   --enable-libiec61883     enable iec61883 via libiec61883 [no]
+      ;;   --enable-libilbc         enable iLBC de/encoding via libilbc [no]
+      ;;   --enable-libmodplug      enable ModPlug via libmodplug [no]
+      ;;   --enable-libnut          enable NUT (de)muxing via libnut,
+      ;;                            native (de)muxer exists [no]
+      ;;   --enable-libopencore-amrnb    enable AMR-NB de/encoding via
+      ;;                                 libopencore-amrnb [no]
+      ;;   --enable-libopencore-amrwb    enable AMR-WB decoding via
+      ;;                                 libopencore-amrwb [no]
+      ;;   --enable-libopencv       enable video filtering via libopencv [no]
+      ;;   --enable-libopenjpeg     enable JPEG 2000 de/encoding via
+      ;;                            OpenJPEG [no]
+      ;;   --enable-librtmp         enable RTMP[E] support via librtmp [no]
+      ;;   --enable-libschroedinger enable Dirac de/encoding via
+      ;;                            libschroedinger [no]
+      ;;   --enable-libshine        enable fixed-point MP3 encoding via
+      ;;                            libshine [no]
+      ;;   --enable-libssh          enable SFTP protocol via libssh [no]
+      ;;                            (libssh2 does not work)
+      ;;   --enable-libstagefright-h264  enable H.264 decoding via
+      ;;                                 libstagefright [no]
+      ;;   --enable-libutvideo      enable Ut Video encoding and decoding via
+      ;;                            libutvideo [no]
+      ;;   --enable-libv4l2         enable libv4l2/v4l-utils [no]
+      ;;   --enable-libvo-aacenc    enable AAC encoding via libvo-aacenc [no]
+      ;;   --enable-libvo-amrwbenc  enable AMR-WB encoding via
+      ;;                            libvo-amrwbenc [no]
+      ;;   --enable-libwavpack      enable wavpack encoding via libwavpack [no]
+      ;;   --enable-libxavs         enable AVS encoding via xavs [no]
+      ;;   --enable-libzmq          enable message passing via libzmq [no]
+      ;;   --enable-libzvbi         enable teletext support via libzvbi [no]
+      ;;   --enable-opencl          enable OpenCL code
+      #~(list
+         "--enable-gpl"                 ;enable optional gpl licensed parts
          "--enable-shared"
          "--enable-frei0r"
          "--enable-fontconfig"
@@ -1670,10 +1672,9 @@ operate properly.")
          "--enable-libmp3lame"
          "--enable-libopus"
          "--enable-libpulse"
-         ,@(if (string-prefix? "x86_64" (or (%current-target-system)
-                                            (%current-system)))
-               '("--enable-librav1e")
-               '())
+         #$@(if (target-x86-64?)
+                '("--enable-librav1e")
+                '())
          "--enable-libsoxr"
          "--enable-libspeex"
          "--enable-libsrt"
@@ -1704,35 +1705,32 @@ operate properly.")
          "--disable-mipsdsp"
          "--disable-mipsdspr2"
          "--disable-mipsfpu")
-       #:phases
-       (modify-phases %standard-phases
-         (replace
-          'configure
-          ;; configure does not work followed by "SHELL=..." and
-          ;; "CONFIG_SHELL=..."; set environment variables instead
-          (lambda* (#:key outputs configure-flags #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out")))
-              (substitute* "configure"
-                (("#! /bin/sh") (string-append "#!" (which "sh"))))
-              (setenv "SHELL" (which "bash"))
-              (setenv "CONFIG_SHELL" (which "bash"))
-              (apply invoke
-                     "./configure"
-                     (string-append "--prefix=" out)
-                     ;; Add $libdir to the RUNPATH of all the binaries.
-                     (string-append "--extra-ldflags=-Wl,-rpath="
-                                    out "/lib")
-                     configure-flags))))
-         (add-before
-          'check 'set-ld-library-path
-          (lambda _
-            ;; Allow $(top_builddir)/ffmpeg to find its dependencies when
-            ;; running tests.
-            (let* ((dso  (find-files "." "\\.so$"))
-                   (path (string-join (map dirname dso) ":")))
-              (format #t "setting LD_LIBRARY_PATH to ~s~%" path)
-              (setenv "LD_LIBRARY_PATH" path)
-              #t))))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            ;; configure does not work followed by "SHELL=..." and
+            ;; "CONFIG_SHELL=..."; set environment variables instead
+            (lambda* (#:key outputs configure-flags #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (substitute* "configure"
+                  (("#! /bin/sh") (string-append "#!" (which "sh"))))
+                (setenv "SHELL" (which "bash"))
+                (setenv "CONFIG_SHELL" (which "bash"))
+                (apply invoke
+                       "./configure"
+                       (string-append "--prefix=" out)
+                       ;; Add $libdir to the RUNPATH of all the binaries.
+                       (string-append "--extra-ldflags=-Wl,-rpath="
+                                      out "/lib")
+                       configure-flags))))
+          (add-before 'check 'set-ld-library-path
+            (lambda _
+              ;; Allow $(top_builddir)/ffmpeg to find its dependencies when
+              ;; running tests.
+              (let* ((dso  (find-files "." "\\.so$"))
+                     (path (string-join (map dirname dso) ":")))
+                (format #t "setting LD_LIBRARY_PATH to ~s~%" path)
+                (setenv "LD_LIBRARY_PATH" path)))))))
     (home-page "https://www.ffmpeg.org/")
     (synopsis "Audio and video framework")
     (description "FFmpeg is a complete, cross-platform solution to record,
@@ -1740,9 +1738,25 @@ convert and stream audio and video.  It includes the libavcodec
 audio/video codec library.")
     (license license:gpl2+)))
 
+(define-public ffmpeg-4
+  (package
+    (inherit ffmpeg-5)
+    (version "4.4.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
+                                 version ".tar.xz"))
+             (sha256
+              (base32
+               "14xadxm1yaamp216nq09xwasxg5g133v86dbb33mdg5di1zrlhdg"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments ffmpeg-5)
+       ((#:configure-flags flags ''())
+        #~(cons "--enable-avresample" #$flags))))))
+
 (define-public ffmpeg-3.4
   (package
-    (inherit ffmpeg)
+    (inherit ffmpeg-4)
     (version "3.4.9")
     (source (origin
              (method url-fetch)
@@ -1752,23 +1766,22 @@ audio/video codec library.")
               (base32
                "0d8nkd9c85rkjlgsq1hidmykkrksi883ygqzhhj6wh4nqflv8vs9"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments ffmpeg)
+     (substitute-keyword-arguments (package-arguments ffmpeg-4)
        ((#:modules modules %gnu-build-system-modules)
         `((srfi srfi-1)
           ,@modules))
        ((#:configure-flags flags)
-        `(fold delete
-               ,flags
-               '("--enable-libdav1d"
-                 "--enable-libaom"
-                 "--enable-librav1e"
-                 "--enable-libsrt")))))
-    (inputs (modify-inputs (package-inputs ffmpeg)
+        #~(fold delete #$flags
+                '("--enable-libdav1d"
+                  "--enable-libaom"
+                  "--enable-librav1e"
+                  "--enable-libsrt")))))
+    (inputs (modify-inputs (package-inputs ffmpeg-4)
               (delete "dav1d" "libaom" "rav1e" "srt")))))
 
 (define-public ffmpeg-2.8
   (package
-    (inherit ffmpeg)
+    (inherit ffmpeg-3.4)
     (version "2.8.18")
     (source (origin
               (method url-fetch)
@@ -1810,15 +1823,14 @@ audio/video codec library.")
              (let* ((dso  (find-files "." "\\.so$"))
                     (path (string-join (map dirname dso) ":")))
                (format #t "setting LD_LIBRARY_PATH to ~s~%" path)
-               (setenv "LD_LIBRARY_PATH" path)
-               #t))))))
-    (inputs (modify-inputs (package-inputs ffmpeg)
-              (delete "dav1d" "libaom" "rav1e" "srt")))))
+               (setenv "LD_LIBRARY_PATH" path)))))))))
+
+(define-public ffmpeg ffmpeg-4)
 
 (define-public ffmpeg-for-stepmania
   (hidden-package
    (package
-     (inherit ffmpeg)
+     (inherit ffmpeg-4)
      (version "2.1.3")
      (source
       (origin
@@ -1830,17 +1842,17 @@ audio/video codec library.")
          (base32 "1by8rmbva8mfrivdbbkr2gx4kga89zqygkd4cfjl76nr8mdcdamb"))
         (file-name (git-file-name "ffmpeg" version))))
      (arguments
-      (substitute-keyword-arguments (package-arguments ffmpeg)
+      (substitute-keyword-arguments (package-arguments ffmpeg-4)
         ((#:configure-flags flags)
-         '(list "--disable-programs"
-                "--disable-doc"
-                "--disable-debug"
-                "--disable-avdevice"
-                "--disable-swresample"
-                "--disable-postproc"
-                "--disable-avfilter"
-                "--disable-shared"
-                "--enable-static"))))
+         #~(list "--disable-programs"
+                 "--disable-doc"
+                 "--disable-debug"
+                 "--disable-avdevice"
+                 "--disable-swresample"
+                 "--disable-postproc"
+                 "--disable-avfilter"
+                 "--disable-shared"
+                 "--enable-static"))))
      (inputs '()))))
 
 (define-public ffmpegthumbnailer
@@ -1874,7 +1886,7 @@ videoformats depend on the configuration flags of ffmpeg.")
 (define-public vlc
   (package
     (name "vlc")
-    (version "3.0.16")
+    (version "3.0.17.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1883,7 +1895,7 @@ videoformats depend on the configuration flags of ffmpeg.")
                     "/vlc-" version ".tar.xz"))
               (sha256
                (base32
-                "1xhhjhwihkz74dag25r5fscvw1v2byy4c8qxaxsw29gncky3bbpz"))))
+                "0510vqf35f0v9c498yki5441aig3fdqq3nv4vsb1vlvki7pr0zkg"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("flex" ,flex)
@@ -2453,7 +2465,7 @@ YouTube.com and many more sites.")
 (define-public yt-dlp
   (package/inherit youtube-dl
     (name "yt-dlp")
-    (version "2022.02.04")
+    (version "2022.05.18")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/yt-dlp/yt-dlp/"
@@ -2461,7 +2473,7 @@ YouTube.com and many more sites.")
                                   version "/yt-dlp.tar.gz"))
               (sha256
                (base32
-                "1qx8sx47lzyrcl00r2657zjaq0mwfbzjyfnv5lr5dlm552f13pf8"))
+                "0wiiwqj8m4z6lladmrsp9354ddwlhn2gf0b39j271001g6fyi82r"))
               (snippet
                '(begin
                   ;; Delete the pre-generated files, except for the man page
@@ -2471,8 +2483,7 @@ YouTube.com and many more sites.")
                                           ;;"yt-dlp.1"
                                           "completions/bash/yt-dlp"
                                           "completions/fish/yt-dlp.fish"
-                                          "completions/zsh/_yt-dlp"))
-                  #t))))
+                                          "completions/zsh/_yt-dlp"))))))
     (arguments
      (substitute-keyword-arguments (package-arguments youtube-dl)
        ((#:tests? _) #t)
@@ -2483,8 +2494,7 @@ YouTube.com and many more sites.")
              (lambda _
                (substitute* "yt_dlp/postprocessor/ffmpeg.py"
                  (("\\.get_param\\('ffmpeg_location'\\)" match)
-                  (format #f "~a or '~a'" match (which "ffmpeg"))))
-               #t))
+                  (format #f "~a or '~a'" match (which "ffmpeg"))))))
            (replace 'build-generated-files
              (lambda _
                ;; Avoid the yt-dlp.1 target, which requires pandoc.
@@ -2496,15 +2506,16 @@ YouTube.com and many more sites.")
                    (("'etc/")
                     (string-append "'" prefix "/etc/"))
                    (("'share/")
-                    (string-append "'" prefix "/share/"))))
-               #t))
+                    (string-append "'" prefix "/share/"))))))
            (delete 'install-completion)
            (replace 'check
              (lambda* (#:key tests? #:allow-other-keys)
                (when tests?
                  (invoke "pytest" "-k" "not download"))))))))
     (inputs
-     `(("python-mutagen" ,python-mutagen)
+     `(("python-brotli" ,python-brotli)
+       ("python-certifi" ,python-certifi)
+       ("python-mutagen" ,python-mutagen)
        ("python-pycryptodomex" ,python-pycryptodomex)
        ("python-websockets" ,python-websockets)
        ,@(package-inputs youtube-dl)))
@@ -2519,103 +2530,6 @@ original project.")
     (properties '((release-monitoring-url . "https://pypi.org/project/yt-dlp/")))
     (home-page "https://github.com/yt-dlp/yt-dlp")))
 
-(define-public youtube-dl-gui
-  (package
-    (name "youtube-dl-gui")
-    (version "0.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "Youtube-DLG" version))
-       (sha256
-        (base32
-         "1bvq2wyn6az59vpdy04dh68fs8m2qzz948xhphibbcpwpcdk00cd"))))
-    (build-system python-build-system)
-    (arguments
-     ;; In Guix, wxpython has not yet been packaged for Python 3.
-     `(#:python ,python-2
-       ;; This package has no tests.
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'patch-source
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; The youtube-dl-gui program lets you configure options.  Some of
-             ;; them are problematic, so we change their defaults.
-             (substitute* "youtube_dl_gui/optionsmanager.py"
-               ;; When this is true, the builder process will try (and fail) to
-               ;; write logs to the builder user's home directory.
-               (("'enable_log': True") "'enable_log': False")
-               ;; This determines which youtube-dl program youtube-dl-gui will
-               ;; run.  If we don't set this, then youtube-dl-gui might download
-               ;; an arbitrary copy from the Internet into the user's home
-               ;; directory and run it, so let's make sure youtube-dl-gui uses
-               ;; the youtube-dl from the inputs by default.
-               (("'youtubedl_path': self.config_path")
-                (string-append "'youtubedl_path': '"
-                               (assoc-ref inputs "youtube-dl")
-                               "/bin'"))
-               ;; When this is True, when youtube-dl-gui is finished downloading
-               ;; a file, it will try (and possibly fail) to open the directory
-               ;; containing the downloaded file.  This can fail because it
-               ;; assumes that xdg-open is in PATH.  Unfortunately, simply
-               ;; adding xdg-utils to the propagated inputs is not enough to
-               ;; make this work, so for now we set the default to False.
-               (("'open_dl_dir': True") "'open_dl_dir': False"))
-             ;; The youtube-dl program from the inputs is actually a wrapper
-             ;; script written in bash, so attempting to invoke it as a python
-             ;; script will fail.
-             (substitute* "youtube_dl_gui/downloaders.py"
-               (("cmd = \\['python', self\\.youtubedl_path\\]")
-                "cmd = [self.youtubedl_path]"))
-             ;; Use relative paths for installing data files so youtube-dl-gui
-             ;; installs the files relative to its prefix in the store, rather
-             ;; than relative to /.  Also, instead of installing data files into
-             ;; $prefix/usr/share, install them into $prefix/share for
-             ;; consistency (see: (standards) Directory Variables).
-             (substitute* "setup.py"
-               (("= '/usr/share") "= 'share"))
-             ;; Update get_locale_file() so it finds the installed localization
-             ;; files.
-             (substitute* "youtube_dl_gui/utils.py"
-               (("os\\.path\\.join\\('/usr', 'share'")
-                (string-append "os.path.join('"
-                               (assoc-ref %outputs "out")
-                               "', 'share'")))
-             #t))
-         (add-after 'install 'create-desktop-file
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (applications (string-append out "/share/applications")))
-               (mkdir-p applications)
-               (call-with-output-file
-                   (string-append applications "/youtube-dl-gui.desktop")
-                 (lambda (file)
-                   (format
-                    file
-                    "[Desktop Entry]~@
-                     Name=Youtube-dl GUI~@
-                     Comment=Graphical interface to download video with youtube-dl~@
-                     Exec=youtube-dl-gui~@
-                     TryExec=youtube-dl-gui~@
-                     Terminal=false~@
-                     Icon=youtube-dl-gui~@
-                     Type=Application~@
-                     Categories=AudioVideo;Audio;Video;Network~%")))
-               #t))))))
-    (native-inputs
-     (list gettext-minimal))
-    (inputs
-     (list python2-twodict python2-wxpython youtube-dl))
-    (home-page "https://github.com/MrS0m30n3/youtube-dl-gui")
-    (synopsis
-     "GUI (Graphical User Interface) for @command{youtube-dl}")
-    (description
-     "Youtube-dlG is a GUI (Graphical User Interface) for
-@command{youtube-dl}.  You can use it to download videos from YouTube and any
-other site that youtube-dl supports.")
-    (license license:unlicense)))
-
 (define-public you-get
   (package
     (name "you-get")
@@ -3136,28 +3050,34 @@ and custom quantization matrices.")
 (define-public streamlink
   (package
     (name "streamlink")
-    (version "2.0.0")
+    (version "3.2.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "streamlink" version))
         (sha256
          (base32
-          "1nv2kj1k42a1b20ws8sdzlxk3wh1qz6pg5mxp75433b3c7lxksn0"))))
+          "09nrspga15svzi0hmakcarbciav0nzf30hg1ff53gia473cd4w4p"))))
     (build-system python-build-system)
-    (home-page "https://github.com/streamlink/streamlink")
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+         (replace 'check
+          (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                  (invoke "python" "-m" "pytest")))))))
     (native-inputs
-     (list python-freezegun python-pytest python-mock
+     (list python-freezegun python-mock python-pytest
            python-requests-mock))
     (propagated-inputs
      (list python-pysocks
            python-websocket-client
-           python-iso3166
-           python-iso639
            python-isodate
+           python-lxml-4.7
+           python-pycountry
            python-pycryptodome
            python-requests
            python-urllib3))
+    (home-page "https://github.com/streamlink/streamlink")
     (synopsis "Extract streams from various services")
     (description "Streamlink is command-line utility that extracts streams
 from sites like Twitch.tv and pipes them into a video player of choice.")
@@ -3210,7 +3130,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 (define-public mlt
   (package
     (name "mlt")
-    (version "7.4.0")
+    (version "7.6.0")
     (source
      (origin
        (method git-fetch)
@@ -3219,7 +3139,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "132y3niv9p1pwms1d5dr0w1jifvr52yfjy6zza3g7qaha0yzfh0c"))))
+        (base32 "1dj7jb5nk0qy28mlw0pcmj4nd607mgx229nhf14gjc0fq9gx71sd"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -3483,7 +3403,7 @@ OBS audio sources.")
 (define-public obs-websocket
   (package
     (name "obs-websocket")
-    (version "4.9.0")
+    (version "4.9.1")
     (source
      (origin
        (method git-fetch)
@@ -3493,7 +3413,7 @@ OBS audio sources.")
              (recursive? #t)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1r47861ma1s3998clahbnbc216wcf706b1ps514k5p28h511l5w0"))))
+        (base32 "0giwhm0rbc578qng4invqqma935zzjlf05msz1gx986aqk654s7k"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ;no tests
@@ -3503,10 +3423,10 @@ OBS audio sources.")
            (lambda* _
              (substitute* "CMakeLists.txt"
                ;; Remove lines that set writeable permissions on outputs.
+               (("PERMISSIONS [^)]*") "")
                (("set\\(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS") "")
-               (("OWNER_READ.*\\)") "")
-               (("PERMISSIONS") ")"))
-             #t)))))
+               ;; Ug^WClever hack to comment out the next line, which is ‘)’.
+               (("(OWNER|GROUP|WORLD)_READ .*") "#")))))))
     (inputs
      (list obs qtbase-5))
     (home-page "https://github.com/Palakis/obs-websocket")
@@ -4102,7 +4022,7 @@ practically any type of media.")
 (define-public libmediainfo
   (package
     (name "libmediainfo")
-    (version "21.03")
+    (version "22.03")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://mediaarea.net/download/source/"
@@ -4110,7 +4030,7 @@ practically any type of media.")
                                   name "_" version ".tar.xz"))
               (sha256
                (base32
-                "1jm4mk539wf3crgpcddgwdixshwdzm37mkb5441lifhcz2mykdsn"))))
+                "1fc0ihj17cdv9zb346llwvbv0hn3sl3ax398ankgp74fcaxvll7w"))))
     ;; TODO add a Big Buck Bunny webm for tests.
     (native-inputs
      (list autoconf automake libtool pkg-config))
@@ -4158,7 +4078,7 @@ MPEG-2, MPEG-4, DVD (VOB)...
 (define-public mediainfo
   (package
     (name "mediainfo")
-    (version "21.03")
+    (version "22.03")
     (source (origin
               (method url-fetch)
               ;; Warning: This source has proved unreliable 1 time at least.
@@ -4169,7 +4089,7 @@ MPEG-2, MPEG-4, DVD (VOB)...
                                   name "_" version ".tar.xz"))
               (sha256
                (base32
-                "07h2a1lbw5ak6c9bcn8qydchl0wpgk945rf9sfcqjyv05h5wll6y"))))
+                "1r1bh1lk2dsiv0j84whgca7qslxbibg6vsih7x5iga2p3lmgjdk2"))))
     (native-inputs
      (list autoconf automake libtool pkg-config))
     (inputs
@@ -4861,7 +4781,7 @@ transitions, and effects and then export your film to many common formats.")
 (define-public shotcut
   (package
     (name "shotcut")
-    (version "22.01.30")
+    (version "22.04.25")
     (source
      (origin
        (method git-fetch)
@@ -4870,7 +4790,7 @@ transitions, and effects and then export your film to many common formats.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0azbzaml743vlpay5dz8i0k66hw4idnambi49wj2yprw7z3skdql"))))
+        (base32 "0ccbx2crqrnhl19d7267xc40vs0cjmps2cnhi1g1l6bqxbi7k88x"))))
     (build-system qt-build-system)
     (arguments
      `(#:tests? #f                      ;there are no tests
@@ -5131,7 +5051,7 @@ transcode or reformat the videos in any way, producing perfect backups.")
 (define-public svt-av1
   (package
     (name "svt-av1")
-    (version "0.9.0")
+    (version "0.9.1")
     (source
      (origin
        (method git-fetch)
@@ -5140,7 +5060,7 @@ transcode or reformat the videos in any way, producing perfect backups.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1mavggl6f7pk7xs22859vm19qp9csjvdcys3b6n2f4pljqkp4qcj"))))
+        (base32 "02fchq2vlxcxzbrss72xl9vrxzysdy39d5i159bmg3qa45ngd2iw"))))
     (build-system cmake-build-system)
     ;; SVT-AV1 only supports 64-bit Intel-compatible CPUs.
     (supported-systems '("x86_64-linux"))
@@ -5418,14 +5338,14 @@ wlroots-based compositors.  More specifically, those that support
 (define-public guvcview
   (package
     (name "guvcview")
-    (version "2.0.6")
+    (version "2.0.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/guvcview/source/guvcview-"
-                                  "src-" version ".tar.gz"))
+                                  "src-" version ".tar.bz2"))
               (sha256
                (base32
-                "11byyfpkcik7wvf2qic77zjamfr2rhji97dpj1gy2fg1bvpiqf4m"))))
+                "108c4g0ns9i1wnxyalmpjqbhlflmrj855vxgggr6qrl6h924w7x2"))))
     (build-system gnu-build-system)
     (arguments
      ;; There are no tests and "make check" would fail on an intltool error.
@@ -5433,11 +5353,13 @@ wlroots-based compositors.  More specifically, those that support
     (native-inputs
      (list pkg-config intltool))
     (inputs
-     (list gtk+
+     (list bdb
+           gtk+
            eudev
+           libjpeg-turbo
            libusb
-           v4l-utils ;libv4l2
-           ffmpeg ;libavcodec, libavutil
+           v4l-utils                    ;libv4l2
+           ffmpeg                       ;libavcodec, libavutil
            sdl2
            gsl
            portaudio