You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A high-performance FFmpeg wrapper for video and image compression, written in Rust. CompressCLI streamlines encoding workflows with an interactive wizard, GPU-accelerated batch processing, and smart caching — with sensible defaults for both quick one-off conversions and large-scale pipelines.
Features
Interactive Mode — Run compresscli with no arguments for a guided, step-by-step wizard.
Auto Detection — compresscli auto <path> routes files or directories to the correct pipeline automatically.
Performance & Caching — Signature-based caching skips unchanged files; CPU-bound work is offloaded via spawn_blocking.
GPU Acceleration — Hardware encoding via NVIDIA NVENC, Apple VideoToolbox, Intel QSV, AMD AMF, and Linux VAAPI (--gpu), with automatic fallback to software encoding.
Video Compression — H.264, H.265, VP9, and AV1 codecs, with format conversion across .mp4, .mkv, and .webm.
Image Compression — JPEG, PNG, WebP, and AVIF optimization with fine-grained quality and format control.
Batch Processing — Recursive, parallelized processing across entire directories.
Presets — Built-in quality tiers (ultrafast → veryslow) plus fully custom presets via config.
Progress Tracking — Real-time progress bars, spinners, and compression statistics.
Dry Run — Preview any operation before touching a file.
Note: Animated GIFs are not supported. Multi-frame GIFs are rejected outright to prevent silent frame loss — convert to a video format (WebM/MP4) first.
Usage Tips
Run compresscli with no arguments for guided prompts.
Use --dry-run before any destructive batch operation.
Use --jobs N to tune parallelism for available CPU/GPU resources.
Run compresscli info to verify FFmpeg and GPU acceleration availability.
Troubleshooting
Issue
Resolution
FFmpeg not found
Linux/macOS: sudo apt install ffmpeg or brew install ffmpeg. Windows: use the .msi installer, which bundles FFmpeg.
Permission errors
Use --overwrite, or redirect output with --output-dir ./output.
Memory pressure
Reduce --jobs or switch to a faster preset.
FPS value rejected
Default max_fps is 240.0. Raise it in config.yaml under default_settings if needed.
Output file larger than input
Expected for already-compressed sources. CompressCLI reports the increase explicitly (e.g. "file increased by 3%") rather than a misleading reduction figure.
License
Licensed under the MIT License — see LICENSE for details.
Acknowledgments
Rust — high-performance systems programming language