about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/video
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/video')
-rw-r--r--nixpkgs/pkgs/tools/video/atomicparsley/default.nix32
-rw-r--r--nixpkgs/pkgs/tools/video/bento4/default.nix35
-rw-r--r--nixpkgs/pkgs/tools/video/bento4/libap4.patch5
-rw-r--r--nixpkgs/pkgs/tools/video/dvgrab/default.nix39
-rw-r--r--nixpkgs/pkgs/tools/video/flvtool2/default.nix16
-rw-r--r--nixpkgs/pkgs/tools/video/gopro/default.nix38
-rw-r--r--nixpkgs/pkgs/tools/video/harvid/default.nix42
-rw-r--r--nixpkgs/pkgs/tools/video/mjpegtools/default.nix41
-rw-r--r--nixpkgs/pkgs/tools/video/play-with-mpv/default.nix35
-rw-r--r--nixpkgs/pkgs/tools/video/rav1e/default.nix54
-rw-r--r--nixpkgs/pkgs/tools/video/rtmpdump/default.nix52
-rw-r--r--nixpkgs/pkgs/tools/video/svt-av1/default.nix39
-rw-r--r--nixpkgs/pkgs/tools/video/swfmill/default.nix25
-rw-r--r--nixpkgs/pkgs/tools/video/swftools/default.nix40
-rw-r--r--nixpkgs/pkgs/tools/video/swftools/swftools.patch17
-rw-r--r--nixpkgs/pkgs/tools/video/untrunc-anthwlock/default.nix36
-rw-r--r--nixpkgs/pkgs/tools/video/vcsi/default.nix31
-rw-r--r--nixpkgs/pkgs/tools/video/vnc2flv/default.nix20
-rw-r--r--nixpkgs/pkgs/tools/video/vncrec/default.nix33
-rw-r--r--nixpkgs/pkgs/tools/video/xjadeo/default.nix48
-rw-r--r--nixpkgs/pkgs/tools/video/yamdi/default.nix31
21 files changed, 709 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/video/atomicparsley/default.nix b/nixpkgs/pkgs/tools/video/atomicparsley/default.nix
new file mode 100644
index 000000000000..d07d6e534297
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/atomicparsley/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchFromGitHub, cmake, zlib, Cocoa }:
+
+stdenv.mkDerivation rec {
+  pname = "atomicparsley";
+  version = "20210124.204813.840499f";
+
+  src = fetchFromGitHub {
+    owner = "wez";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-/bkfgIWlQobaiad2WD7DUUrTwfYurP7YAINaLTwBEcE=";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ zlib ]
+                ++ lib.optionals stdenv.isDarwin [ Cocoa ];
+
+  installPhase = ''
+    runHook preInstall
+    install -D AtomicParsley $out/bin/AtomicParsley
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A CLI program for reading, parsing and setting metadata into MPEG-4 files";
+    homepage = "https://github.com/wez/atomicparsley";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ pjones ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/bento4/default.nix b/nixpkgs/pkgs/tools/video/bento4/default.nix
new file mode 100644
index 000000000000..6ee7c844994e
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/bento4/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchFromGitHub
+, cmake
+}:
+stdenv.mkDerivation rec {
+  pname = "bento4";
+  version = "1.6.0-637";
+
+  src = fetchFromGitHub {
+    owner = "axiomatic-systems";
+    repo = "Bento4";
+    rev = "v${version}";
+    sha256 = "0iwqi71nj0iczffvpxmz0prvmmnyiqypfwvzivkh38wl0br82bkp";
+  };
+
+  patches = [ ./libap4.patch ];
+
+  nativeBuildInputs = [ cmake ];
+
+  cmakeFlags = [ "-DBUILD_SHARED_LIBS=ON" ];
+
+  installPhase = ''
+    mkdir -p $out/{lib,bin}
+    find -iname '*.so' -exec mv --target-directory="$out/lib" {} \;
+    find -maxdepth 1 -executable -type f -exec mv --target-directory="$out/bin" {} \;
+  '';
+
+  meta = with lib; {
+    description = "Full-featured MP4 format and MPEG DASH library and tools";
+    homepage = "http://bento4.com";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ makefu ];
+    broken = stdenv.isAarch64;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/bento4/libap4.patch b/nixpkgs/pkgs/tools/video/bento4/libap4.patch
new file mode 100644
index 000000000000..ca2936003b84
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/bento4/libap4.patch
@@ -0,0 +1,5 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -36 +36 @@ endif()
+-add_library(ap4 STATIC ${AP4_SOURCES})
++add_library(ap4 ${AP4_SOURCES})
diff --git a/nixpkgs/pkgs/tools/video/dvgrab/default.nix b/nixpkgs/pkgs/tools/video/dvgrab/default.nix
new file mode 100644
index 000000000000..18088eb6c308
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/dvgrab/default.nix
@@ -0,0 +1,39 @@
+{ fetchFromGitHub, lib, stdenv, libunwind, libraw1394, libjpeg, libiec61883, libdv
+, libavc1394, pkg-config, autoreconfHook }:
+
+stdenv.mkDerivation {
+  name = "dvgrab-2016-05-16";
+
+  src = fetchFromGitHub {
+    # mirror of original project with some build fixes
+    owner = "ddennedy";
+    repo = "dvgrab";
+    rev = "e46042e0c7b3523b6854ee547b0534e8310b7460";
+    sha256 = "17qy76fjpzrbxm4pj0ljx5lbimxryv24fvr13jwkh24j85dxailn";
+  };
+
+  buildInputs = [
+    libunwind libraw1394 libjpeg libiec61883 libdv libavc1394
+  ];
+
+  nativeBuildInputs = [
+    autoreconfHook pkg-config
+  ];
+
+  meta = with lib; {
+    description = "Receive and store audio & video over IEEE1394";
+
+    longDescription = ''
+      dvgrab receives audio and video data from a digital camcorder via an
+      IEEE1394 (widely known as FireWire) or USB link and stores them into
+      one of several file formats. It features autosplit of long video
+      sequences, and supports saving the data as raw frames, AVI type 1,
+      AVI type 2, Quicktime DV, a series of JPEG stills or MPEG2-TS.
+    '';
+
+    homepage = "http://kinodv.org/";
+
+    license = licenses.gpl2Plus;
+    platforms = platforms.gnu ++ platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/flvtool2/default.nix b/nixpkgs/pkgs/tools/video/flvtool2/default.nix
new file mode 100644
index 000000000000..0875b7ee1d1a
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/flvtool2/default.nix
@@ -0,0 +1,16 @@
+{ lib, buildRubyGem, ruby }:
+
+buildRubyGem rec {
+  inherit ruby;
+  name = "${gemName}-${version}";
+  gemName = "flvtool2";
+  version = "1.0.6";
+  source.sha256 = "0xsla1061pi4ryh3jbvwsbs8qchprchbqjy7652g2g64v37i74qj";
+
+  meta = {
+    homepage = "https://github.com/unnu/flvtool2";
+    description = "A tool to manipulate Macromedia Flash Video files";
+    platforms = ruby.meta.platforms;
+    license = lib.licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/gopro/default.nix b/nixpkgs/pkgs/tools/video/gopro/default.nix
new file mode 100644
index 000000000000..a1991772bf10
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/gopro/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenv, fetchFromGitHub
+, ffmpeg
+, imagemagick
+, makeWrapper
+, mplayer
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gopro";
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "KonradIT";
+    repo = "gopro-linux";
+    rev = version;
+    sha256 = "0sb9vpiadrq8g4ag828h8mvq01fg0306j0wjwkxdmwfqync1128l";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 gopro -t $out/bin
+    wrapProgram $out/bin/gopro \
+      --prefix PATH ":" "${lib.makeBinPath [ ffmpeg imagemagick mplayer ]}"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Command line interface for processing media filmed on GoPro HERO 3, 4, 5, 6, and 7 cameras";
+    homepage = "https://github.com/KonradIT/gopro-linux";
+    platforms = platforms.unix;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ jonringer ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/harvid/default.nix b/nixpkgs/pkgs/tools/video/harvid/default.nix
new file mode 100644
index 000000000000..812457f35cbd
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/harvid/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenv, fetchFromGitHub, ffmpeg, libjpeg, libpng, pkg-config }:
+
+stdenv.mkDerivation rec {
+  pname = "harvid";
+  version = "0.8.3";
+
+  src = fetchFromGitHub {
+    owner = "x42";
+    repo = "harvid";
+    rev = "v${version}";
+    sha256 = "0l1plfsfh2ixhlzg3hqqvjj42z7g422718a9kgbh7b4p882n71x7";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ ffmpeg libjpeg libpng ];
+
+  makeFlags = [ "DESTDIR=$(out)" "libdir=\"/lib\"" ];
+
+  postInstall = ''
+    mkdir -p $out/bin
+    mv $out/usr/local/bin/* $out/bin
+    mv $out/usr/local/share $out/
+    rm -r $out/usr
+  '';
+
+  meta = with lib; {
+    description =
+      "Decodes still images from movie files and serves them via HTTP";
+    longDescription = ''
+      harvid's intended use-case is to efficiently provide frame-accurate data
+      and act as second level cache for rendering the video-timeline in Ardour,
+      but it is not limited to that: it has applications for any task that
+      requires a high-performance frame-accurate online image extraction
+      processor.
+    '';
+    homepage = "http://x42.github.io/harvid";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mitchmindtree ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/mjpegtools/default.nix b/nixpkgs/pkgs/tools/video/mjpegtools/default.nix
new file mode 100644
index 000000000000..45f63dc7727d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/mjpegtools/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, fetchurl, gtk2, libdv, libjpeg, libpng, libX11, pkg-config, SDL, SDL_gfx
+, withMinimal ? true
+}:
+
+# TODO:
+# - make dependencies optional
+# - libpng-apng as alternative to libpng?
+# - libXxf86dga support? checking for XF86DGAQueryExtension in -lXxf86dga... no
+
+stdenv.mkDerivation rec {
+  name = "mjpegtools-2.1.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mjpeg/${name}.tar.gz";
+    sha256 = "01y4xpfdvd4zgv6fmcjny9mr1gbfd4y2i4adp657ydw6fqyi8kw6";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ libdv libjpeg libpng ]
+              ++ lib.optionals (!withMinimal) [ gtk2 libX11 SDL SDL_gfx ];
+
+  NIX_CFLAGS_COMPILE = lib.optionalString (!withMinimal) "-I${SDL.dev}/include/SDL";
+
+  postPatch = ''
+    sed -i -e '/ARCHFLAGS=/s:=.*:=:' configure
+  '';
+
+  enableParallelBuilding = true;
+
+  outputs = [ "out" "lib" ];
+
+  meta = with lib; {
+    description = "A suite of programs for processing MPEG or MJPEG video";
+    homepage = "http://mjpeg.sourceforge.net/";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/play-with-mpv/default.nix b/nixpkgs/pkgs/tools/video/play-with-mpv/default.nix
new file mode 100644
index 000000000000..d9ab0493160e
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/play-with-mpv/default.nix
@@ -0,0 +1,35 @@
+{ lib, python3Packages, fetchFromGitHub, fetchurl, youtube-dl, git }:
+
+let
+  install_freedesktop = fetchurl {
+    url = "https://github.com/thann/install_freedesktop/tarball/2673e8da4a67bee0ffc52a0ea381a541b4becdd4";
+    sha256 = "0j8d5jdcyqbl5p6sc1ags86v3hr2sghmqqi99d1mvc064g90ckrv";
+  };
+in
+python3Packages.buildPythonApplication rec {
+  pname = "play-with-mpv";
+  version = "unstable-2020-05-18";
+
+  src = fetchFromGitHub {
+      owner = "thann";
+      repo = "play-with-mpv";
+      rev = "656448e03fe9de9e8bd21959f2a3b47c4acb8c3e";
+      sha256 = "1qma8b3lnkdhxdjsnrq7n9zgy53q62j4naaqqs07kjxbn72zb4p4";
+  };
+
+  nativeBuildInputs = [ git ];
+  propagatedBuildInputs = [ youtube-dl ];
+
+  postPatch = ''
+    substituteInPlace setup.py --replace \
+    '"https://github.com/thann/install_freedesktop/tarball/master#egg=install_freedesktop-0.2.0"' \
+    '"file://${install_freedesktop}#egg=install_freedesktop-0.2.0"'
+  '';
+
+  meta = with lib; {
+    description = "Chrome extension and python server that allows you to play videos in webpages with MPV instead";
+    homepage = "https://github.com/Thann/play-with-mpv";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dawidsowa ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/rav1e/default.nix b/nixpkgs/pkgs/tools/video/rav1e/default.nix
new file mode 100644
index 000000000000..17c1b39a92c7
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/rav1e/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, rustPlatform, fetchurl, fetchFromGitHub, lib, nasm, cargo-c, libiconv }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "rav1e";
+  version = "0.4.1";
+
+  src = stdenv.mkDerivation rec {
+    name = "${pname}-${version}-source";
+
+    src = fetchFromGitHub {
+      owner = "xiph";
+      repo = "rav1e";
+      rev = "v${version}";
+      sha256 = "0jnq5a3fv6fzzbmprzfxidlcwwgblkwwm0135cfw741wjv7f7h6r";
+    };
+
+    cargoLock = fetchurl {
+      url = "https://github.com/xiph/rav1e/releases/download/v${version}/Cargo.lock";
+      sha256 = "14fi9wam9rs5206rvcd2f3sjpzq41pnfml14w74wn2ws3gpi46zn";
+    };
+
+    installPhase = ''
+      mkdir -p $out
+      cp -r ./* $out/
+      cp ${cargoLock} $out/Cargo.lock
+    '';
+  };
+
+  cargoSha256 = "0miq6iiywwbxm6k0alnqg6bnd14pwc8vl9d8fgg6c0vjlfy5zhlb";
+  nativeBuildInputs = [ nasm cargo-c ];
+  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+
+  postBuild = ''
+    cargo cbuild --release --frozen --prefix=${placeholder "out"}
+  '';
+
+  postInstall = ''
+    cargo cinstall --release --frozen --prefix=${placeholder "out"}
+  '';
+
+  meta = with lib; {
+    description = "The fastest and safest AV1 encoder";
+    longDescription = ''
+      rav1e is an AV1 video encoder. It is designed to eventually cover all use
+      cases, though in its current form it is most suitable for cases where
+      libaom (the reference encoder) is too slow.
+      Features: https://github.com/xiph/rav1e#features
+    '';
+    homepage = "https://github.com/xiph/rav1e";
+    changelog = "https://github.com/xiph/rav1e/releases/tag/v${version}";
+    license = licenses.bsd2;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/rtmpdump/default.nix b/nixpkgs/pkgs/tools/video/rtmpdump/default.nix
new file mode 100644
index 000000000000..3f71f8abc5ab
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/rtmpdump/default.nix
@@ -0,0 +1,52 @@
+{ lib, stdenv, fetchgit, fetchpatch, zlib
+, gnutlsSupport ? false, gnutls ? null, nettle ? null
+, opensslSupport ? true, openssl ? null
+}:
+
+# Must have an ssl library enabled
+assert (gnutlsSupport || opensslSupport);
+assert gnutlsSupport -> gnutlsSupport != null && nettle != null && !opensslSupport;
+assert opensslSupport -> openssl != null && !gnutlsSupport;
+
+with lib;
+stdenv.mkDerivation {
+  pname = "rtmpdump";
+  version = "2019-03-30";
+
+  src = fetchgit {
+    url = "git://git.ffmpeg.org/rtmpdump";
+    # Currently the latest commit is used (a release has not been made since 2011, i.e. '2.4')
+    rev = "c5f04a58fc2aeea6296ca7c44ee4734c18401aa3";
+    sha256 = "07ias612jgmxpam9h418kvlag32da914jsnjsfyafklpnh8gdzjb";
+  };
+
+  patches = [
+    # Fix build with OpenSSL 1.1
+    (fetchpatch {
+      url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-video/rtmpdump/files/rtmpdump-openssl-1.1.patch?id=1e7bef484f96e7647f5f0911d3c8caa48131c33b";
+      sha256 = "1wds98pk8qr7shkfl8k49iirxiwd972h18w84bamiqln29wv6ql1";
+    })
+  ];
+
+  makeFlags = [ "prefix=$(out)" ]
+    ++ optional gnutlsSupport "CRYPTO=GNUTLS"
+    ++ optional opensslSupport "CRYPTO=OPENSSL"
+    ++ optional stdenv.isDarwin "SYS=darwin"
+    ++ optional stdenv.cc.isClang "CC=clang";
+
+  propagatedBuildInputs = [ zlib ]
+    ++ optionals gnutlsSupport [ gnutls nettle ]
+    ++ optional opensslSupport openssl;
+
+  outputs = [ "out" "dev" ];
+
+  separateDebugInfo = true;
+
+  meta = {
+    description = "Toolkit for RTMP streams";
+    homepage    = "http://rtmpdump.mplayerhq.hu/";
+    license     = licenses.gpl2;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ codyopel ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/svt-av1/default.nix b/nixpkgs/pkgs/tools/video/svt-av1/default.nix
new file mode 100644
index 000000000000..69ded2307de4
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/svt-av1/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, fetchFromGitHub, cmake, nasm }:
+
+stdenv.mkDerivation rec {
+  pname = "svt-av1";
+  version = "0.8.6";
+
+  src = fetchFromGitHub {
+    owner = "AOMediaCodec";
+    repo = "SVT-AV1";
+    rev = "v${version}";
+    sha256 = "1wzamg89azi1f93wxvdy7silsgklckc754ca066k33drvyacicyw";
+  };
+
+  nativeBuildInputs = [ cmake nasm ];
+
+  meta = with lib; {
+    description = "AV1-compliant encoder/decoder library core";
+    longDescription = ''
+      The Scalable Video Technology for AV1 (SVT-AV1 Encoder and Decoder) is an
+      AV1-compliant encoder/decoder library core. The SVT-AV1 encoder
+      development is a work-in-progress targeting performance levels applicable
+      to both VOD and Live encoding / transcoding video applications. The
+      SVT-AV1 decoder implementation is targeting future codec research
+      activities.
+    '';
+    inherit (src.meta) homepage;
+    changelog = "https://github.com/AOMediaCodec/SVT-AV1/blob/v${version}/CHANGELOG.md";
+    license = with licenses; [
+      bsd2
+      {
+        fullName = "Alliance for Open Media Patent License 1.0";
+        url = "https://aomedia.org/license/patent-license/";
+      }
+    ];
+    platforms = platforms.unix;
+    broken = stdenv.isAarch64; # undefined reference to `cpuinfo_arm_linux_init'
+    maintainers = with maintainers; [ chiiruno ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/swfmill/default.nix b/nixpkgs/pkgs/tools/video/swfmill/default.nix
new file mode 100644
index 000000000000..c5e777f7531e
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/swfmill/default.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv, fetchurl
+, pkg-config, libxslt, freetype, libpng, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  name = "swfmill-0.3.3";
+
+  src = fetchurl {
+    url = "http://swfmill.org/releases/${name}.tar.gz";
+    sha256 = "15mcpql448vvgsbxs7wd0vdk1ln6rdcpnif6i2zjm5l4xng55s7r";
+  };
+
+  # Fixes build with GCC 6
+  NIX_CFLAGS_COMPILE = "-std=c++03";
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ libxslt freetype libpng libxml2 ];
+
+  meta = {
+    description = "An xml2swf and swf2xml processor with import functionalities";
+    homepage = "http://swfmill.org";
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/swftools/default.nix b/nixpkgs/pkgs/tools/video/swftools/default.nix
new file mode 100644
index 000000000000..6867869a0a9d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/swftools/default.nix
@@ -0,0 +1,40 @@
+{ lib, stdenv, fetchurl, freetype, libjpeg, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "swftools";
+  version = "0.9.2";
+
+  src = fetchurl {
+    url = "http://www.swftools.org/${pname}-${version}.tar.gz";
+    sha256 = "1w81dyi81019a6jmnm5z7fzarswng27lg1d4k4d5llxzqszr2s5z";
+  };
+
+  patches = [ ./swftools.patch ];
+
+  buildInputs = [ freetype libjpeg zlib ];
+
+  meta = with lib; {
+    description = "Collection of SWF manipulation and creation utilities";
+    homepage = "http://www.swftools.org/about.html";
+    license = licenses.gpl2Only;
+    maintainers = [ maintainers.koral ];
+    platforms = lib.platforms.unix;
+    broken = true;
+    knownVulnerabilities = [
+      "CVE-2017-10976"
+      "CVE-2017-11096"
+      "CVE-2017-11097"
+      "CVE-2017-11098"
+      "CVE-2017-11099"
+      "CVE-2017-11100"
+      "CVE-2017-11101"
+      "CVE-2017-16711"
+      "CVE-2017-16793"
+      "CVE-2017-16794"
+      "CVE-2017-16796"
+      "CVE-2017-16797"
+      "CVE-2017-16868"
+      "CVE-2017-16890"
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/swftools/swftools.patch b/nixpkgs/pkgs/tools/video/swftools/swftools.patch
new file mode 100644
index 000000000000..c7eb89f9b3e0
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/swftools/swftools.patch
@@ -0,0 +1,17 @@
+--- a/swfs/Makefile.in.orig
++++ b/swfs/Makefile.in
+@@ -41,10 +41,10 @@ install:
+ 	$(INSTALL_DATA) ./PreLoaderTemplate.swf $(pkgdatadir)/swfs/PreLoaderTemplate.swf
+ 	$(INSTALL_DATA) ./tessel_loader.swf $(pkgdatadir)/swfs/tessel_loader.swf
+ 	$(INSTALL_DATA) ./swft_loader.swf $(pkgdatadir)/swfs/swft_loader.swf
+-	rm -f $(pkgdatadir)/swfs/default_viewer.swf -o -L $(pkgdatadir)/swfs/default_viewer.swf
+-	$(LN_S) $(pkgdatadir)/swfs/simple_viewer.swf $(pkgdatadir)/swfs/default_viewer.swf
+-	rm -f $(pkgdatadir)/swfs/default_loader.swf -o -L $(pkgdatadir)/swfs/default_loader.swf
+-	$(LN_S) $(pkgdatadir)/swfs/tessel_loader.swf $(pkgdatadir)/swfs/default_loader.swf
++	rm -f $(pkgdatadir)/swfs/default_viewer.swf # -o -L $(pkgdatadir)/swfs/default_viewer.swf
++	$(LN_S) $(pkgdatadir)/swfs/simple_viewer.swf $(pkgdatadir)/swfs/default_viewer.swf
++	rm -f $(pkgdatadir)/swfs/default_loader.swf # -o -L $(pkgdatadir)/swfs/default_loader.swf
++	$(LN_S) $(pkgdatadir)/swfs/tessel_loader.swf $(pkgdatadir)/swfs/default_loader.swf
+ 		
+ uninstall:
+ 	$(UNINSTALL_DATA) $(pkgdatadir)/swfs/simple_viewer.swf
diff --git a/nixpkgs/pkgs/tools/video/untrunc-anthwlock/default.nix b/nixpkgs/pkgs/tools/video/untrunc-anthwlock/default.nix
new file mode 100644
index 000000000000..4b950fd0f220
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/untrunc-anthwlock/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv, fetchFromGitHub, ffmpeg, libui }:
+
+stdenv.mkDerivation {
+  pname = "untrunc-anthwlock";
+  version = "2020.07.18";
+
+  src = fetchFromGitHub {
+    owner = "anthwlock";
+    repo = "untrunc";
+    rev = "a0bf2e8642ecdb7af5897ed9b0dd30a7d03520ae";
+    sha256 = "14i2lq68q990hnm2kkfamlsi67bcml85zl8yjsyxc5h8ncc2f3dp";
+  };
+
+
+  buildInputs = [ ffmpeg libui ];
+
+  postBuild = ''
+    make untrunc-gui
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -D -t $out/bin untrunc untrunc-gui
+    runHook postInstall
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "Restore a truncated mp4/mov (improved version of ponchio/untrunc)";
+    homepage = "https://github.com/anthwlock/untrunc";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/vcsi/default.nix b/nixpkgs/pkgs/tools/video/vcsi/default.nix
new file mode 100644
index 000000000000..f4f3043f34fb
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/vcsi/default.nix
@@ -0,0 +1,31 @@
+{ lib, python3Packages, ffmpeg }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "vcsi";
+  version = "7.0.13";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "01qwbb2l8gwf622zzhh0kzdzw3njvsdwmndwn01i9bn4qm5cas8r";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    numpy
+    pillow
+    jinja2
+    texttable
+    parsedatetime
+  ];
+
+  doCheck = false;
+  pythonImportsCheck = [ "vcsi" ];
+
+  makeWrapperArgs = [ "--prefix PATH : ${lib.makeBinPath [ ffmpeg ]}" ];
+
+  meta = with lib; {
+    description = "Create video contact sheets";
+    homepage = "https://github.com/amietn/vcsi";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dandellion ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/vnc2flv/default.nix b/nixpkgs/pkgs/tools/video/vnc2flv/default.nix
new file mode 100644
index 000000000000..88ec2f22b89b
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/vnc2flv/default.nix
@@ -0,0 +1,20 @@
+{ lib, fetchurl, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "vnc2flv";
+  version = "20100207";
+
+  src = fetchurl {
+    url = "mirror://pypi/v/vnc2flv/${pname}-${version}.tar.gz";
+    sha256 = "14d4nm8yim0bm0nd3wyj7z4zdsg5zk3d9bhhvwdc36x03r8d0sbq";
+  };
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = {
+    description = "Tool to record VNC sessions to Flash Video";
+    homepage = "http://www.unixuser.org/~euske/python/vnc2flv/";
+    license = lib.licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/vncrec/default.nix b/nixpkgs/pkgs/tools/video/vncrec/default.nix
new file mode 100644
index 000000000000..5a60fc4c5d2e
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/vncrec/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchurl, libX11, xorgproto, imake, gccmakedep, libXt, libXmu
+, libXaw, libXext, libSM, libICE, libXpm, libXp
+}:
+
+stdenv.mkDerivation {
+  name = "vncrec-0.2"; # version taken from Arch AUR
+
+  src = fetchurl {
+    url = "http://ronja.twibright.com/utils/vncrec-twibright.tgz";
+    sha256 = "1yp6r55fqpdhc8cgrgh9i0mzxmkls16pgf8vfcpng1axr7cigyhc";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  nativeBuildInputs = [ imake gccmakedep ];
+  buildInputs = [
+    libX11 xorgproto libXt libXmu libXaw
+    libXext libSM libICE libXpm libXp
+  ];
+
+  makeFlags = [
+    "BINDIR=${placeholder "out"}/bin"
+    "MANDIR=${placeholder "out"}/share/man"
+  ];
+  installTargets = [ "install" "install.man" ];
+
+  meta = {
+    description = "VNC recorder";
+    homepage = "http://ronja.twibright.com/utils/vncrec/";
+    platforms = lib.platforms.linux;
+    license = lib.licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/xjadeo/default.nix b/nixpkgs/pkgs/tools/video/xjadeo/default.nix
new file mode 100644
index 000000000000..bcd6d5601c0f
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/xjadeo/default.nix
@@ -0,0 +1,48 @@
+{ lib, stdenv, autoreconfHook, fetchFromGitHub, ffmpeg, freetype, libGLU
+, libjack2, liblo, libX11, libXv, pkg-config, portmidi, xorg }:
+
+stdenv.mkDerivation rec {
+  pname = "xjadeo";
+  version = "0.8.10";
+
+  src = fetchFromGitHub {
+    owner = "x42";
+    repo = "xjadeo";
+    rev = "v${version}";
+    sha256 = "0dma4cjgbrpy16x63zvfr0xss4lryl0zw7nvixvhq2f6z8day1ds";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+
+  buildInputs = [
+    ffmpeg
+    libjack2
+    libX11
+    xorg.libXext
+    xorg.libXpm
+    # The following are recommended in the README, but are seemingly
+    # unnecessary for a successful build. That said, the result of including
+    # these in the build process is possibly required at runtime in some cases,
+    # but I've not the time to test thoroughly for these cases. Should
+    # consider investigating and splitting these into options in the future.
+    freetype
+    libGLU
+    liblo
+    libXv
+    portmidi
+  ];
+
+  meta = with lib; {
+    description = "The X Jack Video Monitor";
+    longDescription = ''
+      Xjadeo is a software video player that displays a video-clip in sync with
+      an external time source (MTC, LTC, JACK-transport). Xjadeo is useful in
+      soundtrack composition, video monitoring or any task that requires to
+      synchronizing movie frames with external events.
+    '';
+    homepage = "http://xjadeo.sourceforge.net";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mitchmindtree ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/video/yamdi/default.nix b/nixpkgs/pkgs/tools/video/yamdi/default.nix
new file mode 100644
index 000000000000..92737e27ee30
--- /dev/null
+++ b/nixpkgs/pkgs/tools/video/yamdi/default.nix
@@ -0,0 +1,31 @@
+{
+  lib, stdenv,
+  fetchurl,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "yamdi";
+  version = "1.9";
+
+  # Source repo is also available here:
+  # https://github.com/ioppermann/yamdi
+  src = fetchurl {
+    url = "mirror://sourceforge/yamdi/yamdi-${version}.tar.gz";
+    sha256 = "4a6630f27f6c22bcd95982bf3357747d19f40bd98297a569e9c77468b756f715";
+  };
+
+  buildFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
+
+  installPhase = ''
+    install -D {,$out/bin/}yamdi
+    install -D {,$out/share/man/}man1/yamdi.1
+  '';
+
+  meta = with lib; {
+    description = "Yet Another MetaData Injector for FLV";
+    homepage = "http://yamdi.sourceforge.net/";
+    license = licenses.bsd3;
+    platforms = platforms.all;
+    maintainers = [ maintainers.ryanartecona ];
+  };
+}