winget install --id=CodeF0x.ffzap -e
ffzap is a simple, fast command-line tool for processing media files with ffmpeg. As it's multithreaded and can run as many tasks in parallel as your system can handle, it's perfect for converting, compressing, or editing audio and video files quickly and efficiently.Because it uses ffmpeg under the hood, it supports any media file processing that ffmpeg can handle.
ffzap is a simple, fast command-line tool for processing media files with ffmpeg. Designed to handle multiple tasks in parallel, it efficiently converts, compresses, or edits audio and video files by leveraging ffmpeg's capabilities.
Key Features:
Audience & Benefit: Ideal for developers, system administrators, and users with large volumes of media files. ffzap saves time by processing multiple files simultaneously without overloading your system, offering flexibility in file organization and compatibility with a wide range of media formats. It can be installed via winget for easy setup.
A multithreaded media processing toolkit built with Rust. ffzap provides both command-line and graphical interfaces for batch processing media files using FFmpeg. If FFmpeg can do it, ffzap can do it - as many files in parallel as your system can handle. It's designed for users who need to process large batches of media files efficiently, whether they prefer command-line tools or graphical interfaces.
Key Features:
For the GUI, head to the latest release, and for the CLI read its docs.
ffzap is organized into three main components:
core/
)The heart of ffzap - a Rust library that provides the core processing functionality.
What it does:
Key Features:
Processor
: Core processing engine with thread managementLogger
: Comprehensive logging system with file outputProgress
: Real-time progress tracking with ETA supportCmdArgs
: Structured command-line argument handlingload_paths
: Utility for loading file paths from various sourcesUsage Example:
use ffzap_core::{CmdArgs, Processor, Logger, Progress, load_paths};
use std::sync::Arc;
// Create processing configuration
let cmd_args = CmdArgs {
thread_count: 2,
ffmpeg_options: Some("-c:v libx265 -preset medium".to_string()),
input: Some(vec!["video1.mp4".to_string(), "video2.mp4".to_string()]),
output: "output/{{name}}_processed.{{ext}}".to_string(),
// ... other options
};
// Set up processing pipeline
let paths = load_paths(&cmd_args);
let progress = Arc::new(Progress::new(paths.len(), false));
let logger = Arc::new(Logger::new(progress.clone()));
let processor = Processor::new(logger, progress);
// Process files
processor.process_files(/* ... */);
Read more about its purpose and usage here.
cli/
)A fast, efficient command-line tool for power users and automation.
What it does:
Key Features:
Usage Examples:
# Basic usage
ffzap -i video1.mp4 video2.mp4 -f "-c:v libx265" -o "{{name}}_encoded.{{ext}}" -t 1
# Batch processing with multiple threads
ffzap --file-list videos.txt -f "-c:v libx265 -preset medium" -o "output/{{name}}.mp4" -t 4
# Complex FFmpeg operations
ffzap -i *.mp4 -f "-vf scale=1920:1080 -c:v libx264 -c:a aac" -o "hd/{{name}}.mp4" -t 2
ui/
)A modern, cross-platform desktop application built with Tauri and TypeScript.
What it does:
Key Features:
Read more about its features and local development here.
┌─────────────────┐ ┌─────────────────┐
│ CLI (cli/) │ │ GUI (ui/) │
│ │ │ │
│ • CLI Wrapper │ │ • GUI Wrapper │
└─────────┬───────┘ └─────────┬───────┘
│ │
└──────────┬───────────┘
│
┌──────────▼──────────┐
│ Core (core/) │
│ │
│ • Processor │
│ • Logger │
│ • Progress │
│ • CmdArgs │
│ • Utilities │
└──────────┬──────────┘
│
┌──────────▼───────────┐
│ FFmpeg Engine │
│ (External Dependency)│
└──────────────────────┘
cargo install ffzap
or download from releasesCLI Installation:
# Via Cargo
cargo install ffzap
# Via Homebrew (macOS/Linux)
brew tap CodeF0x/formulae
brew install ffzap
# Via Winget (Windows)
winget install CodeF0x.ffzap
GUI Installation: Download the latest release from GitHub Releases
# Clone the repository
git clone https://github.com/CodeF0x/ffzap.git
cd ffzap
# Build CLI
cargo build --release -p ffzap
# Build GUI
cargo tauri build
ffzap/
├── core/ # Core processing library
│ ├── src/ # Rust source code
│ └── Cargo.toml # Library dependencies
├── cli/ # Command-line interface
│ ├── src/ # CLI implementation
│ └── Cargo.toml # CLI dependencies
├── ui/ # Graphical user interface
│ ├── src/ # TypeScript frontend
│ ├── src-tauri/ # Tauri backend
│ └── package.json # Node.js dependencies
└── Cargo.toml # Workspace configuration
ffzap is designed for maximum performance:
This project uses a custom license that allows:
Restrictions:
Contributions are welcome! Please feel free to submit Pull Requests or open issues for bugs and feature requests.