Skip to content

chinnsenn/FFmpeg-GUI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

55 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FFmpeg GUI

FFmpeg GUI Version License Platform

A powerful and user-friendly FFmpeg GUI application

δΈ­ζ–‡θ―΄ζ˜Ž β€’ Features β€’ Installation β€’ Usage β€’ Development β€’ Contributing


Features

🎬 Format Conversion

  • Support for 50+ video/audio format conversions
  • Quick presets (Web optimized, High quality, Fast conversion, etc.)
  • Custom codecs, bitrates, resolutions
  • Batch conversion support

πŸ—œοΈ Video Compression

  • Multiple compression presets (Light, Medium, Heavy compression)
  • CRF quality control (6 quality levels)
  • Target file size compression
  • H.265/HEVC efficient compression

πŸ“‹ Task Management

  • Task queue system
  • Real-time progress display (speed, ETA, FPS, bitrate)
  • Pause/resume/cancel tasks
  • Batch processing management

πŸ”§ Other Features

  • FFmpeg automatic detection and download
  • File drag-and-drop upload
  • Media information preview
  • Dark/light theme toggle (system-aware)
  • Detailed error messages
  • Comprehensive logging system

Installation

Download the latest version for your platform:

Available platforms:

  • macOS: DMG and ZIP packages (Apple Silicon & Intel)
  • Windows: EXE installer (x64 & ARM64)
  • Linux: AppImage and .deb packages

πŸ’‘ macOS users: If you encounter security warnings, you may need to remove the quarantine attribute:

sudo xattr -r -d com.apple.quarantine /Applications/FFmpeg\ GUI.app

Usage

Quick Start

1. First Launch

The app will automatically detect FFmpeg. If not installed, it will prompt to download (automatically downloaded to app data directory).

2. Format Conversion

  1. Click the "Convert" tab
  2. Drag & drop or select files to convert
  3. Choose output format
  4. (Optional) Adjust encoding parameters or select presets
  5. Click "Start Conversion"

3. Video Compression

  1. Click the "Compress" tab
  2. Upload video file
  3. Select compression mode:
    • Quick Presets: Choose predefined schemes
    • CRF Quality: Select quality level
    • Target Size: Set target file size
    • Custom: Manual parameter configuration
  4. Click "Start Compression"

4. View Task Queue

  1. Click the "Queue" tab
  2. View all task statuses
  3. Manage tasks (pause, resume, cancel)
  4. View real-time progress information

Documentation


Tech Stack

  • Framework: Electron 38 + React 19 + TypeScript 5
  • Build Tool: Vite 7
  • UI Framework: Tailwind CSS 4 + ShadCN UI
  • Router: React Router 7
  • Testing: Vitest + Testing Library
  • Packaging: Electron Builder

Development

Prerequisites

  • Node.js >= 18.x LTS
  • npm >= 8.x
  • Git

Install Dependencies

git clone https://github.com/chinnsenn/FFmpeg-GUI.git
cd FFmpeg-GUI
npm install

Development Mode

# Start development server with hot reload
npm run dev

Build

# Type checking
npm run type-check

# Run tests
npm test

# Build app (with installers)
npm run build

# Build directory only (quick test)
npm run build:dir

Project Structure

FFmpeg-GUI/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main/              # Electron main process
β”‚   β”‚   β”œβ”€β”€ ffmpeg/        # FFmpeg related functions
β”‚   β”‚   β”œβ”€β”€ ipc/           # IPC handlers
β”‚   β”‚   └── utils/         # Utility functions
β”‚   β”œβ”€β”€ renderer/          # React renderer process
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ components/  # React components
β”‚   β”‚       β”œβ”€β”€ pages/       # Page components
β”‚   β”‚       β”œβ”€β”€ router/      # Routing configuration
β”‚   β”‚       └── lib/         # Utility libraries
β”‚   └── shared/            # Shared code and types
β”‚       β”œβ”€β”€ constants.ts   # Constant definitions
β”‚       β”œβ”€β”€ types.ts       # TypeScript types
β”‚       └── format-presets.ts  # Format presets
β”œβ”€β”€ build/                 # Build resources
β”œβ”€β”€ docs/                  # Documentation
β”œβ”€β”€ release/               # Build output
└── dist-electron/         # Compiled output

Testing

# Run all tests
npm test

# Test coverage
npm run test:coverage

# Test UI
npm run test:ui

Related Documentation


Contributing

Contributions are welcome! Please check the Contributing Guide for information on how to participate in the project.

Development Process

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'feat: Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Create a Pull Request

Commit Convention

Follow Conventional Commits:

feat: New feature
fix: Bug fix
docs: Documentation update
style: Code formatting (no functional changes)
refactor: Refactoring
test: Testing related
chore: Build/tool related

Roadmap

  • Basic framework setup
  • FFmpeg integration
  • Format conversion functionality
  • Video compression functionality
  • Task queue management
  • Real-time progress display
  • Performance optimization
  • Error handling and logging
  • Unit testing
  • Multi-platform packaging
  • Modern Minimalist UI refactor
  • Dark mode support
  • Release v1.0.0

Current Progress: 21/22 tasks completed (95%)


License

This project is licensed under the MIT License - see the LICENSE file for details


Acknowledgements

  • FFmpeg - Powerful multimedia processing tool
  • Electron - Cross-platform desktop app framework
  • React - User interface library
  • ShadCN UI - Beautiful UI components

Contact


About

FFmpeg GUI powered by Electron via Claude Code

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •