;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2017 Feng Shu <tumashu@163.com>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017 Chris Marusich <cmmarusich@gmail.com>
+;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
+;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
(define-module (gnu packages video)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
- #:use-module (srfi srfi-26)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (gnu packages cdrom)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cpp)
#:use-module (gnu packages curl)
#:use-module (gnu packages databases)
#:use-module (gnu packages dejagnu)
#:use-module (gnu packages gstreamer)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
+ #:use-module (gnu packages imagemagick)
#:use-module (gnu packages linux)
#:use-module (gnu packages lua)
#:use-module (gnu packages m4)
#:use-module (gnu packages version-control)
#:use-module (gnu packages web)
#:use-module (gnu packages webkit)
+ #:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
(define-public libx264
(package
(name "libx264")
- (version "20161205-2245")
+ (version "20170316-2245")
(source (origin
(method url-fetch)
(uri (string-append "https://download.videolan.org/pub/x264/snapshots/"
"x264-snapshot-" version ".tar.bz2"))
(sha256
(base32
- "0jjzdwag59kqlk09bb2pykm1ss8bw3p9q7bsks2kjgdwbj121a44"))))
+ "1s1nnvl3axz38sv4g09skijl6k9mbbngbb1nsh26w4dr2w2gyzad"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
(define-public x265
(package
(name "x265")
- (version "2.1")
+ (version "2.4")
(source
(origin
(method url-fetch)
"x265_" version ".tar.gz"))
(sha256
(base32
- "0hx6sr9l7586gs4qds2sj0i1m5brxkaqq3cwmibhfb559fpvkz48"))
+ "0afp0xlk0fb4q6j4sh3hyvjnjccdp61sn21zg3fyqvwgswcafalw"))
(modules '((guix build utils)))
(snippet
'(delete-file-recursively "source/compat/getopt"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; tests are skipped if cpu-optimized code isn't built
+ ;; Currently the source code doesn't check for aarch64
+ ,@(if (string-prefix? "aarch64" (or (%current-target-system) (%current-system)))
+ '(#:configure-flags '("-DENABLE_PIC=TRUE"))
+ '())
#:phases
(modify-phases %standard-phases
(add-before 'configure 'prepare-build
(define-public libass
(package
(name "libass")
- (version "0.13.4")
+ (version "0.13.6")
(source (origin
(method url-fetch)
(uri (string-append
version "/libass-" version ".tar.xz"))
(sha256
(base32
- "1dlzkjybnpl2fkvyjq0qblb7qw12cs893bs7zj3rvf8ij342yjnq"))))
+ "0b9cj5xfsa7zwlk5m146fhv102v51iqs3rapq0n2xrz30k8p9a7q"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
(source (origin
(method url-fetch)
(uri (string-append
- "http://download.videolan.org/pub/videolan/libdca/"
+ "https://download.videolan.org/pub/videolan/libdca/"
version "/libdca-" version ".tar.bz2"))
(sha256
(base32
"0hh6a7l8vvccsd5i1fkv9av2gzv9fy8m0b8jpsn5p6hh4bh2586v"))))
(build-system gnu-build-system)
- (home-page "http://www.videolan.org/developers/libdca.html")
+ (home-page "https://www.videolan.org/developers/libdca.html")
(synopsis "DTS Coherent Acoustics decoder")
(description "libdca is a library for decoding DTS Coherent Acoustics
streams.")
(define-public libva
(package
(name "libva")
- (version "1.7.1")
+ (version "1.8.1")
(source
(origin
(method url-fetch)
"https://www.freedesktop.org/software/vaapi/releases/libva/libva-"
version".tar.bz2"))
(sha256
- (base32 "1j8mb3p9kafhp30r3kmndnrklvzycc2ym0w6xdqz6m7jap626028"))))
+ (base32 "0wswfznj93jpnxhc3jwdk5j3pmyki0rs6k9vk4vnzds0dddximf1"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(define-public ffmpeg
(package
(name "ffmpeg")
- (version "3.2.4")
+ (version "3.3.1")
(source (origin
(method url-fetch)
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz"))
(sha256
(base32
- "0ymg1mkg1n0770gmjfqp79p5ijxq04smfrsrrxc8pjc0y0agyf3f"))))
+ "0bwgm6z6k3khb91qh9xv15inykkfchpkm0lcdckkxhkacpyaf0mp"))))
(build-system gnu-build-system)
(inputs
`(("fontconfig" ,fontconfig)
"--enable-libx265"
"--enable-openal"
"--enable-opengl"
- "--enable-x11grab"
"--enable-runtime-cpudetect"
(define-public vlc
(package
(name "vlc")
- (version "2.2.4")
+ (version "2.2.6")
(source (origin
(method url-fetch)
(uri (string-append
version "/vlc-" version ".tar.xz"))
(sha256
(base32
- "1gjkrwlg8ab3skzl67cxb9qzg4187ifckd1z9kpy11q058fyjchn"))
- (modules '((guix build utils)))
- (snippet
- ;; There are two occurrences where __DATE__ and __TIME__ are
- ;; used to capture the build time and show it to the user.
- '(substitute* (find-files "." "help\\.c(pp)?$")
- (("__DATE__") "\"2016\"")
- (("__TIME__") "\"00:00\"")))))
+ "1a22b913p2227ljz89c4fgjlyln5gcz8z58w32r0wh4srnnd60y4"))))
(build-system gnu-build-system)
(native-inputs
`(("git" ,git) ; needed for a test
(define-public mpv
(package
(name "mpv")
- (version "0.23.0")
+ (version "0.25.0")
(source (origin
(method url-fetch)
(uri (string-append
".tar.gz"))
(sha256
(base32
- "1629v5l0rmphxra7chmfm7bnn59zc1mp529b9m2zqzaqf1czxvla"))
+ "1khb7c4fdj1aak46lwyb3lq14w5jpxzws0zp6bdc87ljsvx3yhh7"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system waf-build-system)
(native-inputs
(copy-file (assoc-ref inputs "waf") "waf")
(setenv "CC" "gcc"))))
#:configure-flags (list "--enable-libmpv-shared"
+ "--enable-cdda"
+ "--enable-dvdread"
+ "--enable-dvdnav"
"--enable-zsh-comp"
"--disable-build-date")
;; No check function defined.
(define-public youtube-dl
(package
(name "youtube-dl")
- (version "2017.02.16")
+ (version "2017.05.07")
(source (origin
(method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/"
version ".tar.gz"))
(sha256
(base32
- "1c2rx8hj960wg2sffpvg2513rl9grkwcpn4xk612ibfq4m7h3991"))))
+ "1q3b9xkbk1lmy1wxm1jcnmaj70sdksqbc8zsqxz6b6z4nmv8qc25"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion
(home-page "https://yt-dl.org")
(license license:public-domain)))
+(define-public youtube-dl-gui
+ (package
+ (name "youtube-dl-gui")
+ (version "0.3.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "Youtube-DLG" version))
+ (sha256
+ (base32
+ "0napxwzgls5ik1bxbp99vly32l23xpc4ng5kr24hfhf21ypjyadb"))))
+ (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'"))))))))
+ (inputs
+ `(("python2-wxpython" ,python2-wxpython)
+ ("youtube-dl" ,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")
+ (version "0.4.715")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/soimort/you-get/releases/download/v"
+ version "/you-get-" version ".tar.gz"))
+ (sha256
+ (base32
+ "043122hfh56fbbszp1kwd1f65asgyn60j1ijday93hf2dkhvbrnh"))))
+ (build-system python-build-system)
+ (arguments
+ ;; no tests
+ '(#:tests? #f))
+ (inputs
+ `(("ffmpeg" ,ffmpeg)))
+ (synopsis "Download videos, audios, or images from Web sites")
+ (description
+ "You-Get is a command-line utility to download media contents (videos,
+audio, images) from the Web. It can use either mpv or vlc for playback.")
+ (home-page "https://you-get.org/")
+ (license license:expat)))
+
(define-public libbluray
(package
(name "libbluray")
- (version "0.9.3")
+ (version "1.0.0")
(source (origin
(method url-fetch)
(uri (string-append "https://download.videolan.org/videolan/"
name "-" version ".tar.bz2"))
(sha256
(base32
- "1q1whviqv5sr9nr372h31zwid1rvbfbx3z4lzr8lnj25xha6cdm6"))))
+ "1k3lag4lxi2jjd3zh4wcb5l3hadzm54j5kagh92yzfy76p9svqzp"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--disable-bdjava")
(version "5.0.3")
(source (origin
(method url-fetch)
- (uri (string-append "http://download.videolan.org/videolan/"
+ (uri (string-append "https://download.videolan.org/videolan/"
name "/" version "/"
name "-" version ".tar.bz2"))
(sha256
installed).")
(license license:gpl2+)))
+(define-public dvdauthor
+ (package
+ (name "dvdauthor")
+ (version "0.7.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/dvdauthor/dvdauthor-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1drfc47hikfzc9d7hjk34rw10iqw01d2vwmn91pv73ppx4nsj81h"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("libdvdread" ,libdvdread)
+ ("libpng" ,libpng)
+ ("imagemagick" ,imagemagick)
+ ("libxml2" ,libxml2)
+ ("freetype" ,freetype)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (synopsis "Generates a DVD-Video movie from a MPEG-2 stream")
+ (description "@command{dvdauthor} will generate a DVD-Video movie from a
+MPEG-2 stream containing VOB packets.")
+ (home-page "http://dvdauthor.sourceforge.net")
+ (license license:gpl3+)))
+
(define-public libdvdnav
(package
(name "libdvdnav")
(version "5.0.3")
(source (origin
(method url-fetch)
- (uri (string-append "http://download.videolan.org/videolan/"
+ (uri (string-append "https://download.videolan.org/videolan/"
name "/" version "/"
name "-" version ".tar.bz2"))
(sha256
(method url-fetch)
(uri
(string-append
- "http://download.videolan.org/videolan/libdvdnav/libdvdnav-"
+ "https://download.videolan.org/videolan/libdvdnav/libdvdnav-"
version ".tar.xz"))
(sha256
(base32
(version "1.4.0")
(source (origin
(method url-fetch)
- (uri (string-append "http://download.videolan.org/pub/"
+ (uri (string-append "https://download.videolan.org/pub/"
name "/" version "/"
name "-" version ".tar.bz2"))
(sha256
(base32
"0nl45ifc4xcb196snv9d6hinfw614cqpzcqp92dg43c0hickg290"))))
(build-system gnu-build-system)
- (home-page "http://www.videolan.org/developers/libdvdcss.html")
+ (home-page "https://www.videolan.org/developers/libdvdcss.html")
(synopsis "Library for accessing DVDs as block devices")
(description
"libdvdcss is a simple library designed for accessing DVDs like a block
(define-public vapoursynth
(package
(name "vapoursynth")
- (version "35")
+ (version "37")
(source (origin
(method url-fetch)
(uri (string-append
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0629ys2lf618n9cc644xlvx0vx52v2fp3sx14p4mx5rg9nlasb3n"))))
+ "1g3hc079jw4mz1cmkv2y28pdb556wqc8ql7iravgh1rg8j3f1zi5"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
(define-public v4l-utils
(package
(name "v4l-utils")
- (version "1.10.1")
+ (version "1.12.5")
(source (origin
(method url-fetch)
(uri (string-append "https://linuxtv.org/downloads/v4l-utils"
"/v4l-utils-" version ".tar.bz2"))
(sha256
(base32
- "1h1nhg5cmmzlbipak526nk4bm6d0yb217mll75f3rpg7kz1cqiv1"))))
+ "03g2b4rivrilimcp57mwrlsa3qvrxmk4sza08mygwmqbvcnic606"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
"/lib/udev")
"CXXFLAGS=-std=gnu++11")))
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ `(("perl" ,perl)
+ ("pkg-config" ,pkg-config)))
(inputs
`(("alsa-lib" ,alsa-lib)
("glu" ,glu)
(define-public obs
(package
(name "obs")
- (version "17.0.2")
+ (version "18.0.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/jp9000/obs-studio"
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "02cfhpkcsq718zwhwwsm48gjggf95qr38hqpi0kwrvsy18ll0msm"))))
+ "02pbiyvf5x0zh448h5rpmyn33qnsqk694xxlyns83mdi74savyqw"))))
(build-system cmake-build-system)
(arguments
- `(#:tests? #f ; no tests
- ,@(if (any (cute string-prefix? <> (or (%current-target-system)
- (%current-system)))
- '("arm" "mips"))
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'remove-architecture-specific-instructions
- ;; non-Intel platforms fail to build with the architecture
- ;; specific compiler flags included by default.
- (lambda _
- (substitute* "libobs/CMakeLists.txt"
- (("if\\(NOT MSVC\\)") "if(MSVC)"))
- #t))))
- '())))
+ `(#:tests? #f)) ; no tests
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
from many input sources such as webcams, X11 (for screencasting), PulseAudio,
and JACK.")
(home-page "https://obsproject.com")
+ (supported-systems '("x86_64-linux" "i686-linux"))
(license license:gpl2+)))
(define-public libvdpau
(uri (svn-reference
(url "svn://svn.icculus.org/smpeg/trunk/")
(revision 401))) ; last revision before smpeg2 (for SDL 2.0)
+ (file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"18yfkr70lr1x1hc8snn2ldnbzdcc7b64xmkqrfk8w59gpg7sl1xn"))))
(inputs
`(("libgcrypt" ,libgcrypt)))
(build-system gnu-build-system)
- (home-page "http://www.videolan.org/developers/libbdplus.html")
+ (home-page "https://www.videolan.org/developers/libbdplus.html")
(synopsis "Library for decrypting certain Blu-Ray discs")
(description "libbdplus is a library which implements the BD+ System
specifications.")
(define-public libaacs
(package
(name "libaacs")
- (version "0.8.1")
+ (version "0.9.0")
(source
(origin
(method url-fetch)
(uri (string-append "ftp://ftp.videolan.org/pub/videolan/libaacs/"
version "/" name "-" version ".tar.bz2"))
(sha256
- (base32 "1s5v075hnbs57995r6lljm79wgrip3gnyf55a0y7bja75jh49hwm"))))
+ (base32 "1kms92i0c7i1yl659kqjf19lm8172pnpik5lsxp19xphr74vvq27"))))
(inputs
`(("libgcrypt" ,libgcrypt)))
(native-inputs
`(("bison" ,bison)
("flex" ,flex)))
(build-system gnu-build-system)
- (home-page "http://www.videolan.org/developers/libaacs.html")
+ (home-page "https://www.videolan.org/developers/libaacs.html")
(synopsis "Library for decrypting certain Blu-Ray discs")
(description "libaacs is a library which implements the Advanced Access
Content System specification.")
applications. It is a very powerful and extensible format that can accommodate
practically any type of media.")
(license license:mpl1.1)))
+
+(define-public libmediainfo
+ (package
+ (name "libmediainfo")
+ (version "0.7.95")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://mediaarea.net/download/source/"
+ name "/" version"/"
+ name "_" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1kchh6285b07z5nixv619hc9gml2ysdayicdiv30frrlqiyxqw4b"))))
+ ;; TODO add a Big Buck Bunny webm for tests.
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)
+ ("zlib" ,zlib)
+ ("tinyxml2" ,tinyxml2)
+ ("curl" ,curl)
+ ("libzen" ,libzen)))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; see above TODO
+ #:phases
+ ;; build scripts not in root of archive
+ (modify-phases %standard-phases
+ (add-before 'configure 'pre-configure
+ (lambda _
+ (chdir "Project/GNU/Library")))
+ (add-before 'configure 'autogen
+ (lambda _
+ (zero? (system* "./autogen.sh")))))))
+ (home-page "https://mediaarea.net/en/MediaInfo")
+ (synopsis "Library for retrieving media metadata")
+ (description "MediaInfo is a library used for retrieving technical
+information and other metadata about audio or video files. A non-exhaustive
+list of the information MediaInfo can retrieve from media files include:
+
+@itemize
+@item General: title, author, director, album, track number, date, duration...
+@item Video: codec, aspect, fps, bitrate...
+@item Audio: codec, sample rate, channels, language, bitrate...
+@item Text: language of subtitle
+@item Chapters: number of chapters, list of chapters
+@end itemize
+
+MediaInfo supports the following formats:
+
+@itemize
+@item Video: MKV, OGM, AVI, DivX, WMV, QuickTime, Real, MPEG-1,
+MPEG-2, MPEG-4, DVD (VOB)...
+@item Video Codecs: DivX, XviD, MSMPEG4, ASP, H.264, AVC...)
+@item Audio: OGG, MP3, WAV, RA, AC3, DTS, AAC, M4A, AU, AIFF...
+@item Subtitles: SRT, SSA, ASS, SAMI...
+@end itemize\n")
+ (license license:bsd-2)))
+
+;; TODO also have a GUI version available
+(define-public mediainfo
+ (package
+ (name "mediainfo")
+ (version "0.7.95")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://mediaarea.net/download/source/"
+ name "/" version "/"
+ name "_" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0dy51a3i79jppmg1gi4f6h7jx4hcgnkmfim4d7d3gmnlbkjh8anv"))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)
+ ("zlib" ,zlib)
+ ("libmediainfo", libmediainfo)
+ ("libzen" ,libzen)))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; lacks tests
+ #:phases
+ ;; build scripts not in root of archive
+ (modify-phases %standard-phases
+ (add-before 'configure 'pre-configure
+ (lambda _
+ (chdir "Project/GNU/CLI")))
+ (add-before 'configure 'autogen
+ (lambda _
+ (zero? (system* "./autogen.sh")))))))
+ (home-page "https://mediaarea.net/en/MediaInfo")
+ (synopsis "Utility for reading media metadata")
+ (description "MediaInfo is a utility used for retrieving technical
+information and other metadata about audio or video files. It supports the
+many codecs and formats supported by libmediainfo.")
+ (license license:bsd-2)))