Skip to content
forked from ImageOptim/gifski

GIF encoder based on libimagequant (pngquant, gifquant?). Squeezes maximum possible quality from the awful GIF format.

License

Notifications You must be signed in to change notification settings

debiancn/gifski

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gif.ski

Highest-quality GIF encoder based on pngquant.

gifski converts video frames to GIF animations using pngquant's fancy features for efficient cross-frame palettes and temporal dithering. It produces animated GIFs that use thousands of colors per frame.

(CC) Blender Foundation | gooseberry.blender.org

It's a CLI tool, but it can also be compiled as a library for seamelss use in other apps.

Download and install

See releases page for executables.

If you have Rust, you can also get it with cargo install gifski. Run cargo build --release --features=openmp to build from source.

If you have Homebrew, you can also get it with brew install gifski.

Usage

You can use ffmpeg command to convert any video to PNG frames:

ffmpeg -i video.webm frame%04d.png

and then make the GIF from the frames:

gifski -o anim.gif frame*.png

You can also resize frames (with -W <width in pixels> option). If the input was ever encoded using a lossy video codec it's recommended to at least halve size of the frames to hide compression artefacts and counter chroma subsampling that was done by the video codec.

See gifski -h for more options.

The tool optionally supports decoding video directly. Note that pre-built binaries distributed from the website don't support video. It's only enabled if you compile it with --features=video:

gifski -o out.gif video.mp4

License

AGPL 3 or later. Let me know if you'd like to use it in a product incompatible with this license. I can offer alternative licensing options.

Building

  1. Install Rust
  2. Clone the repository: git clone https://github.com/ImageOptim/gifski
  3. In the cloned directory, run: cargo build --release

Enable OpenMP by adding --features=openmp to Cargo build flags (supported on macOS and Linux with GCC). It makes encoding more than twice as fast.

With built-in video support

Install ffmpeg and its dependencies (probably libavformat-dev, libavfilter-dev, libavdevice-dev, libclang-dev, clang).

Compile with cargo build --release --features=video,openmp.

When compiled with video support ffmpeg licenses apply. You may need to have a patent license to use H.264/H.265 video (I recommend using VP9/WebM instead).

Using from C

See gifski.h for the API. To build, run:

cargo build --release

and link with target/release/libgifski.a. Please observe the LICENSE.

About

GIF encoder based on libimagequant (pngquant, gifquant?). Squeezes maximum possible quality from the awful GIF format.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 86.7%
  • C 13.3%