SkillAgentSearch skills...

8mb.local

a free local self hosted video compressor webui designed for performance and ease of use. inspired by 8mb.video

Install / Use

/learn @JMS1717/8mb.local
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

8mb.local – Self‑Hosted GPU Video Compressor

8mb.local is a self‑hosted, fire‑and‑forget video compressor. Drop a file, choose a target size (e.g., 8MB, 25MB, 50MB, 100MB), and let GPU-accelerated encoding produce compact outputs with AV1/HEVC/H.264. Supports NVIDIA NVENC, Intel/AMD VAAPI (Linux), and CPU fallback. The stack includes a SvelteKit UI, FastAPI backend, Celery worker, Redis broker, and real‑time progress via Server‑Sent Events (SSE).

(Note: Currently experiencing outages)

<p align="center"> <a href="https://www.youtube.com/watch?v=1YDjDtZ21lc"> <img src="https://img.youtube.com/vi/1YDjDtZ21lc/hqdefault.jpg" alt="Video Demo" /> </a> <br/> <b>Video Demo</b> </p> <!-- Merge conflict markers removed; reorganized TOC placement -->

Table of Contents

Screenshots

<br/> <br/> <table valign="top"> <tr> <td align="center"> <b>Main Interface</b><br/> <img src="docs/images/main.png" alt="Main Interface" width="100%"> </td> <td align="center"> <b>GPU Support List</b><br/> <img src="docs/images/gpulist.png" alt="GPU Support List" width="100%"> </td> <td align="center"> <b>Settings Panel</b><br/> <img src="docs/images/settings.png" alt="Settings Panel" width="100%"> </td> </tr> <tr valign="top"> <td align="center"> <b>Live Queue</b><br/> <img src="docs/images/queue.png" alt="Live Queue" width="100%"> </td> <td align="center"> <b>Compressing (Real-time Logs)</b><br/> <img src="docs/images/compressing.png" alt="Compressing with real-time logs" width="100%"> </td> <td align="center"> <b>Encoder Validation Tests</b><br/> <img src="docs/images/encodertests.png" alt="Encoder Validation Tests" width="100%"> </td> </tr> <tr valign="top"> <td align="center"> <b>Job History</b><br/> <img src="docs/images/history.png" alt="Job History" width="100%"> </td> <td align="center"> <b>Advanced Options</b><br/> <img src="docs/images/advanced.png" alt="Advanced Options" width="100%"> </td> <td align="center"> </td> </tr> </table>

Features

  • Multi-vendor GPU support: Auto-detects NVIDIA NVENC, Intel/AMD VAAPI (Linux), or falls back to CPU
  • Robust encoder validation: Tests actual encoder initialization, not just availability listing
  • Automatic CPU fallback: Gracefully handles missing drivers, permission issues, or hardware access problems
  • Drag‑and‑drop UI with helpful presets and advanced options (codec, container, tune, audio bitrate)
  • Configurable codec visibility: Enable/disable specific codecs in Settings page
  • Resolution control: Set max width/height while maintaining aspect ratio
  • Video trimming: Specify start/end times (seconds or HH:MM:SS format)
  • ffprobe analysis on upload for instant estimates and warnings
  • Real‑time progress tracking: Multi-signal progress using actual output size, time processed, bitrate, and wall-clock estimates for smooth, accurate updates
  • Real‑time FFmpeg logs: Streaming logs during compression for instant feedback
  • Live Queue Management: View all active jobs with real-time progress, cancel individual jobs, or clear entire queue
  • One‑click Cancel: Stop an in‑flight encode; worker interrupts FFmpeg immediately
  • Queue Clear: Remove all jobs (cancel running, remove queued/completed) with one click
  • Automatic file size optimization: If output exceeds target by >2%, automatically re-encodes with adjusted bitrate
  • Smart retry notifications: Audio alerts and visual notifications when auto-retry occurs
  • History tracking enabled by default: Recent jobs stored in /app/history.json
  • Auto‑download enabled by default
  • Hardware encoders: AV1, HEVC (H.265), H.264 (GPU-accelerated when available)
  • Software fallback: libx264, libx265, libaom-av1 for CPU-only systems
  • Output container choice: MP4 or MKV, with compatibility safeguards
  • Version tracking: UI displays current version (v125+), backend provides /api/version endpoint

Architecture (technical deep dive)

flowchart LR
  A[Browser / SvelteKit UI] -- Upload / SSE --> B(FastAPI Backend)
  B -- Enqueue --> C[Redis]
  D[Celery Worker + FFmpeg NVENC] -- Progress / Logs --> C
  B -- Pub/Sub relay --> A
  D -- Files --> E[outputs/]
  A -- Download --> B

Intel Arc / Integrated Graphics (Linux)

Intel Arc (e.g., A140, A380) and recent Intel iGPUs are supported via VAAPI and QSV (libmfx) on Linux hosts.

  • Requirements on the host:
    • Linux with Intel GPU and kernel DRM i915/i915k
    • Intel media driver installed on host (usually preinstalled)
    • Docker with --device /dev/dri access
  • Container configuration (already included):
    • FFmpeg built with --enable-vaapi and --enable-libmfx (QSV)
    • Runtime packages: intel-media-driver, libmfx1, libva-utils
    • Environment: LIBVA_DRIVER_NAME=iHD
  • How to run on Linux (bare metal):
    • Uncomment the devices mapping in docker-compose.yml:
      • devices: ["/dev/dri:/dev/dri"]

Limitations:

  • WSL2 (Windows) does not currently expose Intel VAAPI/QSV devices to Linux containers. On Windows, NVIDIA (CUDA/NVENC) is supported; Intel VAAPI/QSV is supported on Linux hosts.

Components

  • Frontend (SvelteKit + Vite): drag‑and‑drop UI, size estimates, SSE progress/logs, final download.
  • Backend API (FastAPI): accepts uploads, runs ffprobe, relays SSE, and serves downloads.
  • Worker (Celery + FFmpeg 6.1.1): executes compression with auto-detected hardware acceleration (NVENC/VAAPI/CPU); parses ffmpeg -progress and publishes updates.
  • Redis (broker + pub/sub): Celery broker and transport for progress/log events.

Data & files

  • uploads/ – incoming files
  • outputs/ – compressed results
  • The backend periodically deletes old files after FILE_RETENTION_HOURS.

Configuration

Environment Variables

  • WORKER_CONCURRENCY - Maximum concurrent compression jobs (default: 4, range: 1-20)
  • BACKEND_HOST - Backend bind address (default: 0.0.0.0)
  • BACKEND_PORT - Backend port (default: 8001)
  • PUBLIC_BACKEND_URL - Frontend API endpoint; leave unset to use same‑origin (recommended)

Codec Visibility Settings

Control which codecs appear in the UI via environment variables or the Settings page:

  • CODEC_H264_NVENC, CODEC_HEVC_NVENC, CODEC_AV1_NVENC - NVIDIA encoders
  • CODEC_H264_QSV, CODEC_HEVC_QSV, CODEC_AV1_QSV - Intel Quick Sync
  • CODEC_H264_VAAPI, CODEC_HEVC_VAAPI, CODEC_AV1_VAAPI - AMD/Intel VAAPI (Linux)
  • CODEC_LIBX264, CODEC_LIBX265, CODEC_LIBAOM_AV1 - CPU encoders

All default to true. The system validates encoder availability at runtime and automatically falls back to CPU if hardware isn't available.

Settings UI

You can manage settings through the web interface at /settings:

  • Authentication: Enable/disable auth, add/change users, change passwords
  • Default Presets: Set default target size, codec, quality, container, etc.
  • Codec Visibility: Enable/disable specific codecs (NVIDIA/Intel/AMD/CPU)
  • GPU Support Reference: View GPU hardware encoding compatibility at /gpu-support
  • No container restart required - changes take effect immediately

Example .env file:

AUTH_ENABLED=false
AUTH_USER=admin
AUTH_PASS=changeme
FILE_RETENTION_HOURS=1
WORKER_CONCURRENCY=4
REDIS_URL=redis://127.0.0.1:6379/0
BACKEND_HOST=0.0.0.0
BACKEND_PORT=8001

Using the app

  1. Drag & drop a video or Choose File.
  2. Pick a target size or enter a custom MB value, click Analyze (auto‑analyzes on drop).

Performance & Concurrency

Multiple Simultaneous Jobs

8mb.local supports running multiple compression jobs in parallel. Configure the maximum number of concurrent jobs via:

  • Settings UI: Navigate to Settings → Worker Concurrency
  • Environment Variable: Set WORKER_CONCURRENCY in your .env file (default: 4)
  • Docker Compose: Add WORKER_CONCURRENCY=10 to environment section

Important: Container restart required after changing concurrency setting.

Hardware-Specific Recommendations

| GPU Model | Recommended Concurrency | Notes | |-----------|------------------------|-------| | Quadro RTX 4000 / RTX 3060+ | 6-10 jobs | Excellent NVENC throughput, handles high concurrency well | | RTX 3090 / 4090 | 8-12 jobs | Top-tier NVENC performance, best for bulk processing | | GTX 1660 / RTX 2060 | 3-5 jobs | Good NVENC performance for mid-range | | GTX 1050 Ti / Entry-level | 2-3 jobs | Basic NVENC, limited parallel capacity | | CPU-only (libx264/libx265) | 1-2 jobs per 4 cores | Very slow, high CPU usage | | Intel/AMD VAAPI | 4-8 jobs | Depends on iGPU/dGPU capabilities |

Performance Considerations

  • NVENC Sessions: Most NVIDIA GPUs support 2-3 native NVENC sessions, but driver patches/Pro GPUs allow unlimited
  • Memory Usage: Each job uses ~200-500MB RAM; monitor total system memory
  • GPU Memory: Each NVENC encode uses ~100-200MB VRAM
  • Disk I/O: Higher concurrency increases disk load; SSD recommended for 6+ concurrent jobs
  • Thermal Throttling: Monitor GPU temps with high concurrency (>80°C may cause slowdowns)

Queue Visualization

The Queue page clearly shows which jobs are running simultaneously:

  • Running jobs: Blue pulsing lightning bolt (⚡), blue border, "RUNNING NOW" indicator
  • Queued jobs: Yellow "Waiting in queue" status
  • Live progress: Real-time progress updates for all running jobs

Start with 4 concurrent jobs and gradually increase while monitoring GPU utilization and job completion times.

Using the app

  1. Drag & drop a video or Choose File. 2

Related Skills

View on GitHub
GitHub Stars805
CategoryDevelopment
Updated4h ago
Forks41

Languages

Python

Security Score

85/100

Audited on Mar 28, 2026

No findings