2026-02-05 00:17:09 -05:00
2026-02-05 00:15:54 -05:00
2026-02-05 00:17:09 -05:00
2026-02-05 00:15:54 -05:00
2026-02-05 00:15:54 -05:00
2026-02-05 00:15:54 -05:00

AVIF Maker

A native GUI application to convert images and videos to AVIF format.

Features

  • Drag and drop files or use the file picker
  • Batch conversion - queue multiple files
  • Animated AVIF - convert GIFs and videos to animated AVIF
  • Alpha channel support - preserves transparency from GIF, PNG, and video sources
  • Configurable quality - separate quality controls for color and alpha
  • Speed/quality tradeoff - encoder speed setting from 0 (best) to 10 (fastest)
  • Lossless mode - perfect quality output

Supported Input Formats

Format Decoder Alpha Support Notes
GIF gif crate 1-bit Animated, frame delays
PNG/APNG image crate Full Static images
JPEG image crate N/A No alpha
WebP image crate Full Static only
MP4/MOV/WebM ffmpeg-sidecar Codec-dependent Requires ffmpeg in PATH

Build Requirements

macOS

# Install dependencies
brew install libavif ffmpeg

# Build and run
cargo build --release
./target/release/avif-maker

Linux (Ubuntu/Debian)

# Install dependencies
sudo apt install libavif-dev ffmpeg

# Build and run
cargo build --release
./target/release/avif-maker

Windows

Use vcpkg or pre-built binaries for libavif and FFmpeg.

# With vcpkg
vcpkg install libavif ffmpeg

# Set environment variables
$env:VCPKG_ROOT = "C:\path\to\vcpkg"

# Build
cargo build --release

Usage

  1. Add files - Drag and drop files onto the window, or click to browse
  2. Configure settings - Adjust quality, speed, and output options in the left panel
  3. Convert - Click "Convert All" to process the queue
  4. Access outputs - Click "Open" or "Show in Finder" on completed files

Settings

  • Quality (0-100): Higher = better quality, larger file. Default: 75
  • Alpha Quality (0-100): Separate quality for transparency. Default: 90
  • Speed (0-10): 0 = slowest/best quality, 10 = fastest. Default: 6
  • Lossless: Perfect quality at the cost of file size
  • FPS Override: Override detected framerate for video inputs
  • Output Directory: Save to same folder as source, or a custom folder

Test Files

Three test files are included:

  • Highlander-IMustFlip.mp4 - Video (tests ffmpeg decoder)
  • Highlander-IMustFlipSmaller-OG.gif - Animated GIF without transparency
  • BTS-240-art.gif - Animated GIF with transparency (1-bit alpha)

Architecture

avif-maker/
├── src/
│   ├── main.rs                 # Application entry point
│   ├── app.rs                  # Main application state
│   ├── decoder/
│   │   ├── mod.rs              # Decoder trait and dispatch
│   │   ├── gif.rs              # GIF decoder (pure Rust)
│   │   ├── image.rs            # PNG/JPEG/WebP decoder
│   │   └── video.rs            # FFmpeg-based video decoder
│   ├── encoder/
│   │   ├── mod.rs
│   │   └── avif.rs             # libavif encoder wrapper
│   └── ui/
│       ├── mod.rs
│       ├── drop_zone.rs        # Drag-and-drop area
│       ├── settings.rs         # Settings panel
│       └── queue.rs            # Job queue display
└── Cargo.toml

License

MIT

Description
No description provided
Readme 129 KiB
v0.1.1 Latest
2026-02-05 13:51:22 -06:00
Languages
Rust 94.6%
Shell 5.4%