summary refs log tree commit diff
path: root/gnu/packages/video.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-07-18 16:05:21 +0200
committerLudovic Courtès <ludo@gnu.org>2021-07-18 19:50:01 +0200
commit0e47fcced442d8e7c1b05184fdc1c14f10ed04ec (patch)
tree4ae844bc0ec3c670f8697bdc24362c122fa718ad /gnu/packages/video.scm
parente4b70bc55a538569465bcedee19d1f2607308e65 (diff)
parent8b1bde7bb3936a64244824500ffe60f123704437 (diff)
downloadguix-0e47fcced442d8e7c1b05184fdc1c14f10ed04ec.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/video.scm')
-rw-r--r--gnu/packages/video.scm276
1 files changed, 168 insertions, 108 deletions
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 44d215c69c..3f7d34ef59 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -51,6 +51,8 @@
 ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
 ;;; Copyright © 2021 David Wilson <david@daviwil.com>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -178,6 +180,7 @@
   #:use-module (gnu packages vulkan)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
+  #:use-module (gnu packages wget)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xiph)
@@ -1024,89 +1027,115 @@ H.264 (MPEG-4 AVC) video streams.")
 (@command{mkvmerge}).")
     (license license:gpl2)))
 
-(define-public straw-viewer
+(define-public pipe-viewer
   (package
-    (name "straw-viewer")
-    (version "0.1.3")
+    (name "pipe-viewer")
+    (version "0.1.2")
     (source
      (origin
        (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/trizen/straw-viewer")
-             (commit version)))
+       (uri
+        (git-reference
+         (url "https://github.com/trizen/pipe-viewer")
+         (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1n21byn7hqykpm94jmmnir1fwsskq6dp9wgj0bd2qf0qx5nq33cl"))))
+        (base32 "1d2gfkd3nc0c4ah67250lqskkd85wpljrikw8a378ni398ngaq14"))))
     (build-system perl-build-system)
+    (arguments
+     `(#:imported-modules
+       ((guix build copy-build-system)
+        ,@%perl-build-system-modules)
+       #:modules
+       (((guix build copy-build-system)
+         #:prefix copy:)
+        (guix build perl-build-system)
+        (guix build utils)
+        (srfi srfi-26))
+       #:module-build-flags
+       (list
+        "--gtk3")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* (find-files "." ".*-viewer$")
+               (("'ffmpeg'")
+                (format #f "'~a/bin/ffmpeg'"
+                        (assoc-ref inputs "ffmpeg")))
+               (("'wget'")
+                (format #f "'~a/bin/wget'"
+                        (assoc-ref inputs "wget")))
+               (("'xdg-open'")
+                (format #f "'~a/bin/xdg-open'"
+                        (assoc-ref inputs "xdg-utils")))
+               (("'youtube-dl'")
+                (format #f "'~a/bin/youtube-dl'"
+                        (assoc-ref inputs "youtube-dl"))))))
+         (add-after 'install 'install-xdg
+           (lambda args
+             (apply (assoc-ref copy:%standard-phases 'install)
+                    #:install-plan
+                    '(("share/icons" "share/pixmaps")
+                      ("share" "share/applications"
+                       #:include-regexp ("\\.desktop$")))
+                    args)))
+         (add-after 'install-xdg 'wrap-programs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin-dir (string-append out "/bin/"))
+                    (site-dir (string-append out "/lib/perl5/site_perl/"))
+                    (perl-lib (getenv "PERL5LIB"))
+                    (gi-typelib (getenv "GI_TYPELIB_PATH")))
+               (for-each
+                (cut wrap-program <>
+                     `("PERL5LIB" ":" prefix (,perl-lib ,site-dir))
+                     `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib)))
+                (find-files bin-dir))))))))
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
-       ("perl-test-pod" ,perl-test-pod)))
+       ("perl-test-pod" ,perl-test-pod)
+       ("perl-test-simple" ,perl-test-simple)))
     (inputs
      `(("perl-data-dump" ,perl-data-dump)
+       ("perl-digest-md5" ,perl-digest-md5)
+       ("perl-encode" ,perl-encode)
+       ("ffmpeg" ,ffmpeg)
+       ("perl-file-path" ,perl-file-path)
+       ("perl-file-sharedir" ,perl-file-sharedir)
+       ("perl-getopt-long" ,perl-getopt-long)
+       ("perl-gtk3" ,perl-gtk3)
+       ("perl-http-message" ,perl-http-message)
        ("perl-json" ,perl-json)
+       ("perl-json-xs" ,perl-json-xs)
        ("perl-libwww" ,perl-libwww)
        ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
        ("perl-lwp-useragent-cached" ,perl-lwp-useragent-cached)
-       ("perl-mozilla-ca" ,perl-mozilla-ca)
+       ("perl-memoize" ,perl-memoize)
+       ("perl-mime-base64" ,perl-mime-base64)
+       ("perl-pathtools" ,perl-pathtools)
+       ("perl-scalar-list-utils" ,perl-scalar-list-utils)
+       ("perl-storable" ,perl-storable)
+       ("perl-term-ansicolor" ,perl-term-ansicolor)
        ("perl-term-readline-gnu" ,perl-term-readline-gnu)
+       ("perl-text-parsewords" ,perl-text-parsewords)
+       ("perl-text-tabs+wrap" ,perl-text-tabs+wrap)
        ("perl-unicode-linebreak" ,perl-unicode-linebreak)
-       ("xdg-utils" ,xdg-utils)))
-    ;; Required only when building the graphical interface (--gtk).
-    ;;("perl-file-sharedir" ,perl-file-sharedir)
-    
-    ;; Some videos play without youtube-dl, but others silently fail to.
+       ("perl-uri-escape" ,perl-uri-escape)
+       ("wget" ,wget)
+       ("xdg-utils" ,xdg-utils)
+       ("youtube-dl" ,youtube-dl)))
     (propagated-inputs
-     `(("youtube-dl" ,youtube-dl)))
-    (arguments
-     `(#:modules ((guix build perl-build-system)
-                  (guix build utils)
-                  (srfi srfi-26))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'refer-to-inputs
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "lib/WWW/StrawViewer.pm"
-               (("'youtube-dl'")
-                (format #f "'~a/bin/youtube-dl'"
-                        (assoc-ref inputs "youtube-dl"))))
-             (substitute* "bin/gtk-straw-viewer"
-               (("'xdg-open'")
-                (format #f "'~a/bin/xdg-open'"
-                        (assoc-ref inputs "xdg-utils"))))
-             #t))
-         ;; (add-after 'install 'install-desktop
-         ;;   (lambda* (#:key outputs #:allow-other-keys)
-         ;;     (let* ((out (assoc-ref outputs "out"))
-         ;;            (sharedir (string-append out "/share")))
-         ;;       (install-file "share/gtk-straw-viewer.desktop"
-         ;;                     (string-append sharedir "/applications"))
-         ;;       (install-file "share/icons/gtk-straw-viewer.png"
-         ;;                     (string-append sharedir "/pixmaps"))
-         ;;       #t)))
-         (add-after 'install 'wrap-program
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin-dir (string-append out "/bin/"))
-                    (site-dir (string-append out "/lib/perl5/site_perl/"))
-                    (lib-path (getenv "PERL5LIB")))
-               (for-each (cut wrap-program <>
-                              `("PERL5LIB" ":" prefix (,lib-path ,site-dir)))
-                         (find-files bin-dir))
-               #t))))))
-    (synopsis
-     "Light-weight application for searching and streaming videos from YouTube")
-    (description
-     "Straw-viewer searches for YouTube videos using @uref{https://invidio.us/,
-invidio.us} and plays them locally in a native media player like @command{vlc}
-or @command{mpv}.
-
-You can search for videos, playlists, and/or channels.  The videos are streamed
-directly to the player at the best chosen resolution and with closed captions if
-available.")
-    ;; XXX Add #:module-build-flags '("--gtk") dependencies and this sentence.
-    ;; Both a command-line and a graphical interface are available.
-    (home-page "https://github.com/trizen/youtube-viewer")
-    (license license:perl-license)))
+     `(("dconf" ,dconf)))
+    (home-page "https://github.com/trizen/pipe-viewer")
+    (synopsis "CLI+GUI YouTube Client")
+    (description "Pipe-Viewer is a lightweight application for searching and
+playing videos from YouTube.  It parses the YouTube website directly and relies
+on the Invidious instances only as a fallback method.")
+    (license license:artistic2.0)))
+
+(define-public straw-viewer
+  (deprecated-package "straw-viewer" pipe-viewer))
 
 (define-public x265
   (package
@@ -1211,7 +1240,7 @@ designed to encode video or images into an H.265 / HEVC encoded bitstream.")
 (define-public libass
   (package
     (name "libass")
-    (version "0.15.0")
+    (version "0.15.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1219,7 +1248,7 @@ designed to encode video or images into an H.265 / HEVC encoded bitstream.")
                     version "/libass-" version ".tar.xz"))
               (sha256
                (base32
-                "0cz8v6kh3f2j5rdjrra2z0h715fa16vjm7kambvqx9hak86262cz"))))
+                "0lwfmdizzrr4gcq3fgw4j8g9pkrqgx6h0f3pgrrnxc07s34kkp8w"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")))
@@ -1573,6 +1602,7 @@ operate properly.")
          "--enable-openal"
          "--enable-opengl"
          "--enable-libdrm"
+         "--enable-vaapi"
 
          "--enable-runtime-cpudetect"
 
@@ -1774,7 +1804,7 @@ videoformats depend on the configuration flags of ffmpeg.")
 (define-public vlc
   (package
     (name "vlc")
-    (version "3.0.14")
+    (version "3.0.16")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1783,7 +1813,7 @@ videoformats depend on the configuration flags of ffmpeg.")
                     "/vlc-" version ".tar.xz"))
               (sha256
                (base32
-                "19imhm6wd85nm2r4xwa7g500rmya021aj93b1q33gany6ddkxfa9"))))
+                "1xhhjhwihkz74dag25r5fscvw1v2byy4c8qxaxsw29gncky3bbpz"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("flex" ,flex)
@@ -2288,14 +2318,14 @@ YouTube.com and many more sites.")
 (define-public youtube-dl-gui
   (package
     (name "youtube-dl-gui")
-    (version "0.3.8")
+    (version "0.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Youtube-DLG" version))
        (sha256
         (base32
-         "0napxwzgls5ik1bxbp99vly32l23xpc4ng5kr24hfhf21ypjyadb"))))
+         "1bvq2wyn6az59vpdy04dh68fs8m2qzz948xhphibbcpwpcdk00cd"))))
     (build-system python-build-system)
     (arguments
      ;; In Guix, wxpython has not yet been packaged for Python 3.
@@ -2369,8 +2399,11 @@ YouTube.com and many more sites.")
                      Type=Application~@
                      Categories=AudioVideo;Audio;Video;Network~%")))
                #t))))))
+    (native-inputs
+     `(("gettext-minimal" ,gettext-minimal)))
     (inputs
-     `(("python2-wxpython" ,python2-wxpython)
+     `(("python2-twodict" ,python2-twodict)
+       ("python2-wxpython" ,python2-wxpython)
        ("youtube-dl" ,youtube-dl)))
     (home-page "https://github.com/MrS0m30n3/youtube-dl-gui")
     (synopsis
@@ -2989,35 +3022,27 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 (define-public mlt
   (package
     (name "mlt")
-    (version "6.26.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/mltframework/mlt")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1gz79xvs5jrzqhwhfk0dqdd3xiavnjp4q957h7nb02rij32byb39"))))
-    (build-system gnu-build-system)
+    (version "7.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mltframework/mlt")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13c5miph9jjbz69dhy0zvbkk5zbb05dr3vraaci0d5fdbrlhyscf"))))
+    (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f                      ; no tests
-       #:make-flags '(,(string-append "CC=" (cc-for-target))
-                      ,(string-append "CXX=" (cxx-for-target)))
-       #:configure-flags
-       (list "--enable-gpl3"
-             "--enable-gpl")
+     `(#:tests? #f ;requires "Kwalify"
        #:phases
        (modify-phases %standard-phases
-         (add-after
-             'configure 'override-LDFLAGS
+         (add-before 'configure 'override-LDFLAGS
            (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "config.mak"
-               (("LDFLAGS\\+=")
-                (string-append "LDFLAGS+=-Wl,-rpath="
-                               (assoc-ref outputs "out")
-                               "/lib ")))
-             #t)))))
+             (setenv "LDFLAGS"
+                     (string-append
+                      "-Wl,-rpath="
+                      (assoc-ref outputs "out") "/lib")))))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("alsa-plugins" ,alsa-plugins "pulseaudio")
@@ -3025,7 +3050,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
        ("fftw" ,fftw)
        ("frei0r-plugins" ,frei0r-plugins)
        ("gdk-pixbuf" ,gdk-pixbuf)
-       ("gtk+" ,gtk+-2)
+       ("gtk+" ,gtk+)
        ("libxml2" ,libxml2)
        ("jack" ,jack-1)
        ("ladspa" ,ladspa)
@@ -3054,6 +3079,33 @@ functionality of the system is provided via an assortment of ready to use
 tools, XML authoring components, and an extensible plug-in based API.")
     (license license:lgpl2.1+)))
 
+(define-public mlt-6
+  (package
+    (inherit mlt)
+    (name "mlt")
+    (version "6.26.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mltframework/mlt")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1gz79xvs5jrzqhwhfk0dqdd3xiavnjp4q957h7nb02rij32byb39"))))
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
+                            (assoc-ref %build-inputs "gtk+")
+                             "/lib/gtk-2.0/include")
+             (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
+                            (assoc-ref %build-inputs "glib")
+                            "/lib/glib-2.0/include"))
+       ,@(package-arguments mlt)))
+    (inputs
+     `(("gtk+", gtk+-2)
+       ,@(alist-delete "gtk+" (package-inputs mlt))))))
+
 (define-public v4l-utils
   (package
     (name "v4l-utils")
@@ -3120,23 +3172,27 @@ be used for realtime video capture via Linux-specific APIs.")
 (define-public obs
   (package
     (name "obs")
-    (version "26.1.2")
+    (version "27.0.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/obsproject/obs-studio")
-                    (commit version)))
+                    (commit version)
+                    (recursive? #t)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1k1asqiqw757v59ayx0w029ril947hs0lcp8n91knzjl891fr4nc"))
+                "04fzsr9yizmxy0r7z2706crvnsnybpnv5kgfn77znknxxjacfhkn"))
               (patches
                (search-patches "obs-modules-location.patch"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
        (list (string-append "-DOBS_VERSION_OVERRIDE=" ,version)
-             "-DENABLE_UNIT_TESTS=TRUE")
+             "-DENABLE_UNIT_TESTS=TRUE"
+             ;; Browser plugin requires cef, but it is not packaged yet.
+             ;; <https://bitbucket.org/chromiumembedded/cef/src/master/>
+             "-DBUILD_BROWSER=FALSE")
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'wrap-executable
@@ -3165,18 +3221,22 @@ be used for realtime video capture via Linux-specific APIs.")
        ("ffmpeg" ,ffmpeg)
        ("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
+       ("glib" ,glib)
        ("jack" ,jack-1)
        ("jansson" ,jansson)
        ("libx264" ,libx264)
        ("libxcomposite" ,libxcomposite)
        ("mbedtls" ,mbedtls-apache)
        ("mesa" ,mesa)
+       ("pipewire" ,pipewire-0.3)
        ("pulseaudio" ,pulseaudio)
        ("qtbase" ,qtbase-5)
        ("qtsvg" ,qtsvg)
        ("qtx11extras" ,qtx11extras)
        ("speexdsp" ,speexdsp)
        ("v4l-utils" ,v4l-utils)
+       ("wayland" ,wayland)
+       ("wayland-protocols" ,wayland-protocols)
        ("zlib" ,zlib)))
     (synopsis "Live streaming software")
     (description "Open Broadcaster Software provides a graphical interface for
@@ -4602,9 +4662,10 @@ API.  It includes bindings for Python, Ruby, and other languages.")
                       (setenv "HOME" "/tmp")
                       #t))
                   (add-after 'install 'wrap-program
-                    (lambda* (#:key outputs #:allow-other-keys)
+                    (lambda* (#:key outputs inputs #:allow-other-keys)
                       (let ((out (assoc-ref outputs "out")))
-                        (wrap-qt-program out "openshot-qt"))
+                        (wrap-qt-program "openshot-qt"
+                                         #:output out #:inputs inputs))
                       #t)))))
     (home-page "https://www.openshot.org/")
     (synopsis "Video editor")
@@ -4616,7 +4677,7 @@ transitions, and effects and then export your film to many common formats.")
 (define-public shotcut
   (package
     (name "shotcut")
-    (version "21.03.21")
+    (version "21.06.29")
     (source
      (origin
        (method git-fetch)
@@ -4625,7 +4686,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 "0jb488vynn0vmq22z51bg4hb4617732nva9rg52lzl89v5n8gmsi"))))
+        (base32 "0384iv2129mpalia39x8mn5xlbgx9ip994700jzjjxdqfq23a9qm"))))
     (build-system qt-build-system)
     (arguments
      `(#:tests? #f ;there are no tests
@@ -4654,8 +4715,7 @@ transitions, and effects and then export your film to many common formats.")
                  `("FREI0R_PATH" ":" =
                    (,(string-append frei0r "/lib/frei0r-1/")))
                  `("MLT_PREFIX" ":" =
-                   (,(assoc-ref inputs "mlt")))))
-             #t)))))
+                   (,(assoc-ref inputs "mlt"))))))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)