From 56cb6ab70fc77e53acc4dcbca8bd51260b9e6ed1 Mon Sep 17 00:00:00 2001 From: yemou Date: Fri, 13 Feb 2026 03:51:03 -0500 Subject: [PATCH] vid2gif: new script to turn a video into gif with ffmpeg --- .nix/vid2gif.nix | 23 +++++++++++++++++++++++ flake.lock | 6 +++--- flake.nix | 4 +++- scritps/vid2gif | 12 ++++++++++++ 4 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 .nix/vid2gif.nix create mode 100755 scritps/vid2gif diff --git a/.nix/vid2gif.nix b/.nix/vid2gif.nix new file mode 100644 index 0000000..5df19d4 --- /dev/null +++ b/.nix/vid2gif.nix @@ -0,0 +1,23 @@ +{ writeScriptBin +, bash +, coreutils +, ffmpeg +, ... +}: + +writeScriptBin "vid2gif" (builtins.replaceStrings + [ + "#!/bin/sh" + "mktemp" + "rm" + "ffmpeg" + ] + [ + "#!${bash}/bin/sh" + "${coreutils}/bin/mktemp" + "${coreutils}/bin/rm" + "${ffmpeg}/bin/ffmpeg" + ] + (builtins.readFile ../scritps/vid2gif) +) + diff --git a/flake.lock b/flake.lock index a653918..1b8772e 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1726062873, - "narHash": "sha256-IiA3jfbR7K/B5+9byVi9BZGWTD4VSbWe8VLpp9B/iYk=", + "lastModified": 1770841267, + "narHash": "sha256-9xejG0KoqsoKEGp2kVbXRlEYtFFcDTHjidiuX8hGO44=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4f807e8940284ad7925ebd0a0993d2a1791acb2f", + "rev": "ec7c70d12ce2fc37cb92aff673dcdca89d187bae", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 0d5138d..6e49bcb 100644 --- a/flake.nix +++ b/flake.nix @@ -17,9 +17,10 @@ prefon = final.callPackage ./.nix/prefon.nix { }; scr = final.callPackage ./.nix/scr.nix { }; thm = final.callPackage ./.nix/thm.nix { }; + vid2gif = final.callPackage ./.nix/vid2gif.nix { }; yemou-scripts = final.symlinkJoin { name = "yemou-scripts"; - paths = [ colorgrab prefon scr thm ]; + paths = [ colorgrab prefon scr thm vid2gif ]; }; }; @@ -29,6 +30,7 @@ prefon = pkgs.prefon; scr = pkgs.scr; thm = pkgs.thm; + vid2gif = pkgs.vid2gif; yemou-scripts = pkgs.yemou-scripts; }); }; diff --git a/scritps/vid2gif b/scritps/vid2gif new file mode 100755 index 0000000..bddffad --- /dev/null +++ b/scritps/vid2gif @@ -0,0 +1,12 @@ +#!/bin/sh +scale=${3:-0.2} +filters="scale=iw*${scale}:-1:flags=lanczos" +palette_file=$(mktemp --tmpdir XXX.png) + +[ -z "$1" ] && exit 1 +[ -z "$2" ] && exit 1 + +ffmpeg -hide_banner -loglevel warning -i "$1" -vf "$filters,palettegen" -update true -y "$palette_file" +ffmpeg -hide_banner -loglevel warning -i "$1" -i "$palette_file" -filter_complex "$filters,paletteuse" "$2" + +rm "$palette_file" -- 2.51.2