Skip to content

A modern web application for optimizing video files with lossless compression. Perfect for reducing file sizes while maintaining visual quality.

Notifications You must be signed in to change notification settings

FPMedia/video-optimiser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Video Optimizer - Lossless Compression Web App

Video Optimizer

Tech Stack

Python Flask FFmpeg HTML5 CSS3 JavaScript Werkzeug python-dotenv

Additional Technologies

  • H.264 Codec - Video compression standard
  • AAC Audio - Audio compression
  • UUID - Unique file identification
  • Threading - Background processing
  • Subprocess - FFmpeg integration

A modern web application for optimizing video files with lossless compression. Perfect for reducing file sizes while maintaining visual quality.

Features

  • 🎬 Drag & Drop Upload: Easy file upload with drag-and-drop interface
  • πŸ”„ Real-time Progress: Live progress tracking during optimization
  • πŸ“Š File Size Comparison: Shows original vs optimized file sizes
  • 🎯 Lossless Compression: Uses H.264 with CRF 18 for visually lossless quality
  • πŸ“± Responsive Design: Works on desktop and mobile devices
  • πŸ—‚οΈ Multiple Formats: Supports MP4, AVI, MOV, MKV, WMV, FLV, WebM, M4V
  • ⚑ Background Processing: Non-blocking video optimization
  • 🧹 Auto Cleanup: Automatically removes old files

Installation

Prerequisites

  1. Python 3.7+ installed on your system
  2. FFmpeg installed and available in your PATH

Install FFmpeg

Ubuntu/Debian:

sudo apt update
sudo apt install ffmpeg

macOS (using Homebrew):

brew install ffmpeg

Windows:

Download from FFmpeg official website or use Chocolatey:

choco install ffmpeg

Install Python Dependencies

  1. Clone or download this repository
  2. Navigate to the project directory
  3. Install Python dependencies:
pip install -r requirements.txt

Usage

Starting the Application

  1. Run the Flask application:
python app.py
  1. Open your web browser and go to:
http://localhost:5000

Using the Application

  1. Upload Video: Drag and drop your video file onto the upload area or click to browse
  2. Monitor Progress: Watch the real-time progress bar and status updates
  3. Download Result: Once optimization is complete, click the download button to get your optimized video

Optimization Settings

The application uses the following FFmpeg settings for optimal compression:

  • Video Codec: H.264 (libx264)
  • Preset: veryslow (best compression)
  • CRF: 18 (visually lossless quality)
  • Audio Codec: AAC
  • Audio Bitrate: 128k
  • Web Optimization: Fast start enabled

File Structure

optimiser/
β”œβ”€β”€ app.py              # Main Flask application
β”œβ”€β”€ requirements.txt    # Python dependencies
β”œβ”€β”€ README.md          # This file
β”œβ”€β”€ templates/
β”‚   └── index.html     # Web interface
β”œβ”€β”€ uploads/           # Temporary upload directory
└── output/            # Optimized video output directory

Technical Details

Compression Algorithm

The application uses FFmpeg with the following optimization strategy:

  1. H.264 Codec: Industry standard for video compression
  2. CRF 18: Constant Rate Factor ensures visually lossless quality
  3. Veryslow Preset: Maximizes compression efficiency
  4. AAC Audio: Efficient audio compression
  5. Fast Start: Optimizes for web streaming

Performance

  • Processing Speed: Depends on video length and system performance
  • Compression Ratio: Typically 20-60% size reduction
  • Quality: Visually lossless (CRF 18)
  • Memory Usage: Minimal, processes files in chunks

Supported Video Formats

  • MP4 (recommended)
  • AVI
  • MOV
  • MKV
  • WMV
  • FLV
  • WebM
  • M4V

Troubleshooting

Common Issues

  1. FFmpeg not found: Ensure FFmpeg is installed and in your system PATH
  2. Large file uploads: The application handles large files, but upload time depends on your internet connection
  3. Processing errors: Check that your video file is not corrupted and is in a supported format

Error Messages

  • "No file selected": Make sure you've selected a video file
  • "Invalid file type": Ensure your file is in a supported format
  • "Optimization failed": Check your video file for corruption

Development

Running in Development Mode

python app.py

The application runs on http://localhost:5000 with debug mode enabled.

Customizing Optimization Settings

You can modify the FFmpeg parameters in the optimize_video function in app.py:

cmd = [
    'ffmpeg', '-i', input_path,
    '-c:v', 'libx264',           # Video codec
    '-preset', 'veryslow',        # Compression preset
    '-crf', '18',                 # Quality setting (lower = better quality)
    '-c:a', 'aac',                # Audio codec
    '-b:a', '128k',               # Audio bitrate
    '-movflags', '+faststart',    # Web optimization
    '-y',                         # Overwrite output
    output_path
]

License

This project is open source and available under the MIT License.

Contributing

Feel free to submit issues, feature requests, or pull requests to improve this application.

About

A modern web application for optimizing video files with lossless compression. Perfect for reducing file sizes while maintaining visual quality.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published