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.localREADME
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
- Features
- Screenshots
- Architecture
- Installation
- Usage
- Configuration
- Reverse Proxy Configuration
- Troubleshooting
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/versionendpoint
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/driaccess
- Container configuration (already included):
- FFmpeg built with
--enable-vaapiand--enable-libmfx(QSV) - Runtime packages:
intel-media-driver,libmfx1,libva-utils - Environment:
LIBVA_DRIVER_NAME=iHD
- FFmpeg built with
- How to run on Linux (bare metal):
- Uncomment the devices mapping in
docker-compose.yml:devices: ["/dev/dri:/dev/dri"]
- Uncomment the devices mapping in
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 -progressand publishes updates. - Redis (broker + pub/sub): Celery broker and transport for progress/log events.
Data & files
uploads/– incoming filesoutputs/– 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 encodersCODEC_H264_QSV,CODEC_HEVC_QSV,CODEC_AV1_QSV- Intel Quick SyncCODEC_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
- Drag & drop a video or Choose File.
- 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_CONCURRENCYin your.envfile (default: 4) - Docker Compose: Add
WORKER_CONCURRENCY=10to 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
- Drag & drop a video or Choose File. 2
Related Skills
node-connect
339.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
prose
339.3kOpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
sonoscli
339.3kControl Sonos speakers (discover/status/play/volume/group).
