A modern, high-performance desktop application for Windows that converts images, audio, and video files with an intuitive drag-and-drop interface. Built with Python and PyQt6 following the MVVM design pattern, featuring a beautiful dark theme and optimized conversion engines.
- Supported Input Formats: PNG, JPG, JPEG, BMP, TIFF, GIF, WebP
- Output Formats: PNG, JPG with quality optimization
- Smart Resizing: Optional pixel-based resizing with aspect ratio preservation
- File Size Control: Kilobyte-based size limiting with intelligent compression
- Quality Engine: High-quality conversion using Pillow with optimization algorithms
- Supported Input Formats: WAV, M4A, FLAC, OGG, MP3, AAC, WMA
- Output Format: MP3 with optimized encoding
- Quality Presets: 128kbps (Standard), 192kbps (Good), 256kbps (High), 320kbps (Lossless)
- Fast Processing: Optimized FFmpeg integration
- Supported Input Formats: MKV, MOV, AVI, WebM, FLV, MP4, WMV, M4V
- Output Format: MP4 with H.264/AAC codecs
- Quality Presets: 480p, 720p, 1080p, Original quality
- Speed Optimization: 3-5x faster conversion with hardware acceleration
- Fast Mode: Ultrafast encoding for maximum speed
- Hardware Acceleration: Auto-detects NVIDIA, Intel, and AMD GPU encoding
- Dark Theme: Professional navy-blue color scheme
- Drag & Drop: Intuitive file selection with visual feedback
- Real-time Preview: File information and conversion options
- Progress Tracking: Visual progress bar with real-time updates
- Smart Defaults: Automatic save location in same folder as input
- Error Handling: Clear error messages and validation
- Logo Support: Custom logo integration throughout the interface
-
Python 3.8 or higher
- Download from python.org
- Make sure to check "Add Python to PATH" during installation
-
FFmpeg
- Download from ffmpeg.org
- Extract and place
ffmpeg.exe
in one of these locations:- Project root directory
bin/
directoryresources/
directory- System PATH
-
Clone or Download the Project
git clone <repository-url> cd FormatFusion
-
Create Virtual Environment (Recommended)
python -m venv venv venv\Scripts\activate # On Windows
-
Install Dependencies
pip install -r requirements.txt
-
Verify FFmpeg Installation
- Place
ffmpeg.exe
in the project root directory - Or ensure it's available in your system PATH
- Place
python main.py
- Launch the application
- Drag and drop a file onto the main area, or click to browse
- Select your conversion options
- Click "Convert" and choose output location
- Wait for conversion to complete
-
Install PyInstaller
pip install pyinstaller
-
Create Executable
pyinstaller --onefile --windowed --name FormatFusion main.py
-
Include FFmpeg
pyinstaller --onefile --windowed --name FormatFusion --add-data "ffmpeg.exe;." main.py
Create build.py
for automated building:
import PyInstaller.__main__
import os
# Build executable
PyInstaller.__main__.run([
'--onefile',
'--windowed',
'--name=FormatFusion',
'--add-data=ffmpeg.exe;.',
'--add-data=requirements.txt;.',
'--icon=icon.ico', # Optional: add custom icon
'main.py'
])
FormatFusion/
βββ main.py # Application entry point
βββ requirements.txt # Python dependencies
βββ setup.py # Automated setup script
βββ build.py # Executable build script
βββ README.md # This documentation
βββ ffmpeg.exe # FFmpeg binary (place here)
βββ resources/ # Application resources
β βββ logo.png # Custom logo (optional)
β βββ README.md # Logo setup instructions
βββ temp/ # Documentation and guides
β βββ SETUP_GUIDE.md # Simple setup guide
β βββ VIDEO_OPTIMIZATION.md # Performance details
βββ models/ # Data models (MVVM)
β βββ __init__.py
β βββ file_info.py # File information model
β βββ conversion_options.py # Conversion settings model
βββ viewmodels/ # Business logic (MVVM)
β βββ __init__.py
β βββ main_viewmodel.py # Main view model
βββ views/ # User interface (MVVM)
β βββ __init__.py
β βββ main_window.py # Main window with dark theme
βββ services/ # External services
β βββ __init__.py
β βββ conversion_service.py # Optimized conversion engine
βββ utils/ # Utility functions
βββ __init__.py
βββ file_utils.py # File operation utilities
- 3-5x Faster: Optimized FFmpeg settings with ultrafast presets
- Hardware Acceleration: Auto-detects and uses GPU encoding (NVIDIA, Intel, AMD)
- Fast Mode: Default setting for maximum speed with minimal quality loss
- Smart Fallbacks: Automatic fallback to software encoding if hardware fails
- Intelligent Compression: Smart quality adjustment for file size limits
- Memory Efficient: Optimized Pillow usage with proper resource management
- Batch Processing: Efficient handling of multiple image operations
- Optimized Encoding: Fast MP3 conversion with quality presets
- Stream Processing: Efficient audio stream handling
- Dark Theme: Professional navy-blue color scheme with cyan accents
- Responsive Design: Adapts to different window sizes
- Visual Feedback: Hover effects, progress bars, and status updates
- Custom Logo: Support for custom branding throughout the interface
- Auto Save Location: Defaults to same folder as input file
- File Type Detection: Automatic format recognition and appropriate options
- Progress Tracking: Real-time conversion progress with visual indicators
- Error Recovery: Graceful error handling with helpful messages
FormatFusion follows the Model-View-ViewModel (MVVM) pattern:
- Models: Data structures and business entities (
file_info.py
,conversion_options.py
) - Views: User interface components (
main_window.py
with dark theme) - ViewModels: Business logic and state management (
main_viewmodel.py
) - Services: External dependencies and conversion logic (
conversion_service.py
) - Utils: Helper functions and utilities (
file_utils.py
)
-
"FFmpeg not found" Error
- Ensure
ffmpeg.exe
is in the correct location - Check that the file is not corrupted
- Verify FFmpeg works from command line:
ffmpeg -version
- Ensure
-
"Missing Dependencies" Error
- Run
pip install -r requirements.txt
- Ensure you're using the correct Python version
- Try creating a fresh virtual environment
- Run
-
Conversion Fails
- Check that input file is not corrupted
- Ensure output directory is writable
- Verify file format is supported
-
Application Won't Start
- Check Python version (3.8+ required)
- Verify all dependencies are installed
- Check for antivirus interference
- For large video files, use "Original" quality to avoid re-encoding
- Close other applications during conversion for better performance
- Use SSD storage for faster file I/O
- Update
FileType
enum inmodels/file_info.py
- Add extension mapping in
_detect_file_type()
method - Implement conversion logic in
services/conversion_service.py
- Add UI options in
views/main_window.py
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For issues and questions:
- Check the troubleshooting section
- Search existing issues
- Create a new issue with detailed information
- Initial release
- Image, audio, and video conversion
- Drag-and-drop interface
- MVVM architecture
- Windows executable support