项目地址:https://github.com/JMS1717/8mb.local?tab=readme-ov-file
8mb.local – 自托管 GPU 视频压缩器
[](https://github.com/JMS1717/8mb.local#8mblocal--selfhosted-gpu-video-compressor)
8mb.local 是一款自托管、即用即弃的视频压缩工具。只需拖放文件,选择目标大小(例如:8MB、25MB、50MB、100MB),即可借助 GPU 加速编码,以 AV1/HEVC/H.264 格式生成紧凑的输出文件。支持NVIDIA NVENC, Intel/AMD VAAPI(Linux),以及CPU回退。该堆栈包含SvelteKit用户界面、FastAPI后端、Celery工作器、Redis代理,以及通过服务器发送事件(SSE)实现的实时进度。
演示:https://video.elhacker.net/
截图
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#screenshots)
主界面
 |
GPU 支持列表
 |
设置面板
 |
实时队列
 |
压缩(实时日志)
 |
编码器验证测试
 |
作业历史
 |
高级选项
 |
|
功能
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#features)
- 多厂商GPU支持:自动检测NVIDIA NVENC、Intel/AMD VAAPI(Linux),或回退至CPU
- 强大的编码器验证:测试实际的编码器初始化,而不仅仅是检查其可用性列表
- 自动CPU回退:可从容应对驱动缺失、权限问题或硬件访问故障
- 拖放式界面,配备实用预设和高级选项(编解码器、容器、调音、音频比特率)
- 可配置的编解码器可见性:在设置页面启用/禁用特定编解码器
- 分辨率控制:在保持宽高比的同时设置最大宽度/高度
- 视频剪辑:指定开始/结束时间(秒或HH:MM:SS格式)
- 上传时进行ffprobe分析,以获取即时估算和警告
- 实时进度跟踪:使用实际输出大小、处理时间、比特率和墙钟估算值进行多信号进度跟踪,实现流畅、准确的更新
- 实时FFmpeg日志:压缩过程中的流式日志,提供即时反馈
- 实时队列管理:查看所有正在运行的任务及实时进度,取消单个任务,或清空整个队列
- 一键取消:停止正在进行的编码;工作人员立即中断FFmpeg
- 清空队列:一键移除所有任务(取消正在运行的任务,移除已排队或已完成的任务)
- 自动文件大小优化:如果输出超出目标超过2%,则自动以调整后的比特率重新编码
- 智能重试通知:自动重试时提供音频警报和视觉通知
- 默认启用历史记录跟踪:最近的作业存储在/app/history.json
- 默认启用自动下载
- 硬件编码器:AV1、HEVC(H.265)、H.264(可用时支持GPU加速)
- 软件回退:适用于纯CPU系统的libx264、libx265、libaom-av1
- 输出容器选择:MP4或MKV,并提供兼容性保障
- 版本跟踪:UI显示当前版本(v125+),后端提供/api/version端点
架构(技术深度解析)
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#architecture-technical-deep-dive)
注(2025年11月):支持RTX 50系列(Blackwell)
RTX 50 系列用户(RTX 5090/5080/5070 Ti 等):
已验证,支持完整NVENC硬件加速!
Docker镜像: jms1717/8mblocal:rtx50-working
分支: rtx50-blackwell
完整设置指南: RTX50-WORKING.md
RTX 50系列关键提示:您必须挂载WSL驱动程序目录:
-v /usr/lib/wsl/drivers:/usr/lib/wsl/drivers:ro
(已在rtx50-blackwell分支的docker-compose.yml中配置)
要求:
- RTX 50系列GPU(Blackwell/SM_100)
- NVIDIA 驱动程序 550.x+(经测试为 581.80)
- Windows 11 WSL2 或支持 CUDA 13 的 Linux
已验证的测试结果:✅ 所有6个编码器均通过(h264_nvenc、hevc_nvenc、av1_nvenc、libx264、libx265、libaom-av1)
其他NVIDIA GPU:
- 主分支:CUDA 12.2 + FFmpeg 6.1.1,驱动程序 535.x+(Turing/Ampere/Ada)
- 如果NVENC不兼容,CPU/VAAPI仍可正常工作
Intel Arc / Integrated Graphics (Linux)
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#intel-arc--integrated-graphics-linux)
通过VAAPI和QSV(libmfx),支持Intel Arc(例如A140、A380)以及近期的Intel集成显卡,适用于Linux主机。
- 主机要求:
- 配备Intel GPU且内核使用DRM i915/i915k的Linux系统
- 主机上已安装Intel媒体驱动程序(通常预装)
- 具备访问权限的Docker
- 容器配置(已包含):
- 使用--enable-vaapi和--enable-libmfx(QSV)编译的FFmpeg
- 运行时软件包:intel-media-driver, libmfx1, libva-utils
- 环境:LIBVA_DRIVER_NAME=iHD
- 如何在Linux上运行(**机):
- 取消注释以下设备映射:
devices: ["/dev/dri:/dev/dri"]
限制:
- 目前,WSL2(Windows)不会向Linux容器公开英特尔VAAPI/QSV设备。在Windows上,支持NVIDIA(CUDA/NVENC);英特尔VAAPI/QSV则在Linux主机上受支持。
组件
- 前端(SvelteKit + Vite):拖放式界面、尺寸估算、SSE 进度/日志、最终下载。
- 后端 API(FastAPI):接受上传、运行 ffprobe、中继 SSE,并提供下载服务。
- Worker(Celery + FFmpeg 6.1.1):使用自动检测的硬件加速(NVENC/VAAPI/CPU)执行压缩;解析并发布更新。
- Redis(代理+发布/订阅):Celery代理及用于进度/日志事件的传输。
数据与文件
- uploads/– 传入文件
- outputs/– 压缩结果
- 后端会定期删除旧文件后FILE_RETENTION_HOURS.
配置
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#configuration)
Environment Variables
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#environment-variables)
- WORKER_CONCURRENCY- 最大并发压缩任务数(默认:4,范围:1-20)
- BACKEND_HOST- 后端绑定地址(默认:0.0.0.0)
- BACKEND_PORT- 后端端口(默认:8001)
- PUBLIC_BACKEND_URL- 前端 API 端点;不设置则使用同源(推荐)
Codec Visibility Settings
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#codec-visibility-settings)
通过环境变量或设置页面控制哪些编解码器显示在UI中:
- CODEC_H264_NVENC, CODEC_HEVC_NVENC, CODEC_AV1_NVENC- NVIDIA编码器
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编码器
默认全部为true。系统会在运行时验证编码器的可用性,如果硬件不可用,则会自动回退到CPU。
Settings UI
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#settings-ui)
您可以通过以下网址的网页界面管理设置:/settings:
- 身份验证:启用/禁用身份验证,添加/更改用户,更改密码
- 默认预设:设置默认目标尺寸、编解码器、质量、容器等
- 编解码器可见性:启用/禁用特定编解码器(NVIDIA/Intel/AMD/CPU)
- GPU支持参考:查看GPU硬件编码兼容性,请访问/gpu-support
- 无需重启容器——更改立即生效
示例.env文件:
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
使用该应用
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#using-the-app)
- 拖放视频或选择文件。
- 选择目标大小或输入自定义MB值,点击分析(拖放时自动分析)。
性能与并发
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#performance--concurrency)
Multiple Simultaneous **s
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#multiple-simultaneous-**s)
8mb.local 支持并行运行多个压缩任务。可通过以下方式配置最大并发任务数:
- 设置界面:导航至设置 → 工作线程并发
- 环境变量:在您的WORKER_CONCURRENCY文件中设置.env(默认:4)
- Docker Compose:添加到环境部分
重要提示:更改并发设置后需重启容器。
Hardware-Specific Recommendations
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#hardware-specific-recommendations)
| GPU型号 |
推荐并发数 |
备注 |
| Quadro RTX 4000 / RTX 3060+ |
6-10个任务 |
出色的NVENC吞吐量,可良好应对高并发 |
| RTX 3090 / 4090 |
8-12个任务 |
顶级NVENC性能,最适合批量处理 |
| GTX 1660 / RTX 2060 |
3-5个任务 |
中端NVENC性能良好 |
| GTX 1050 Ti / 入门级 |
2-3个任务 |
基本NVENC,并行能力有限 |
| 仅CPU(libx264/libx265) |
每4核1-2个任务 |
速度极慢,CPU占用率高 |
| Intel/AMD VAAPI |
4-8个任务 |
取决于集成显卡/独立显卡的能力 |
Performance Considerations
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#performance-considerations)
- NVENC会话:大多数NVIDIA GPU支持2-3个原生NVENC会话,但驱动程序补丁/专业版GPU允许无限制
- 内存使用:每个作业使用约200-500MB RAM;请监控系统总内存
- GPU内存:每个NVENC编码使用约100-200MB VRAM
- 磁盘I/O:更高的并发度会增加磁盘负载;建议6个以上并发作业使用SSD
- 热节流:以高并发方式监控GPU温度(超过80°C可能导致性能下降)
Queue Visualization
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#queue-visualization)
队列页面清晰显示哪些作业正在同时运行:
- 运行中的作业:蓝色脉动闪电(⚡),蓝色边框,“正在运行”指示符
- 已排队的作业:**“正在队列中等待”状态
- 实时进度:所有运行作业的实时进度更新
从4个并发作业开始,逐步增加,同时监控GPU利用率和作业完成时间。
使用该应用
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#using-the-app-1)
- 拖放视频或选择文件。
- 选择目标大小或输入自定义MB值,点击分析(拖放时自动分析)。
- 可选:打开高级选项。
- 视频编解码器:AV1(在较新的RTX上质量最佳)、HEVC(H.265)或H.264(兼容性)。
- 音频编解码器:Opus(默认)或AAC。选择Opus时,MP4会自动回退至AAC。
- 速度/质量:NVENC P1(快)… P7(最佳)。默认为P6。
- 容器:MP4(兼容性最高)或MKV(与Opus配合最佳)。
- 音质:最佳品质(HQ)、低延迟、超低延迟或无损。
- 点击“压缩”并查看进度/日志。使用“取消”可在编码中途停止。完成后将自动开始下载。
编解码器/容器说明
- MP4 + Opus 并未得到广泛支持。如果选择 MP4+Opus,工作人员会自动改用 AAC 以确保兼容性。MKV 则直接支持 Opus。
- MP4 输出包含+faststart以实现更佳的网页播放效果。
- H.264/HEVC 输出设置为兼容的像素格式(yuv420p)和配置文件。
性能提示
- 对于极小的目标,优先选择AV1/HEVC,并将音频比特率保持在96–128 kbps左右。
- 如果对速度有要求,请尝试低/超低延迟音色,并选用更快的预设(P1–P4)。如需最佳音质,请使用HQ搭配P6/P7。
GPU支持提示
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#gpu-support-tips)
Hardware Acceleration Support
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#hardware-acceleration-support)
8mb.local会自动检测并使用可用的硬件加速:
- NVIDIA GPU(NVENC):对AV1、HEVC、H.264提供最佳支持
- AV1需配备RTX 40/50系列显卡,HEVC/H.264需配备GTX 10+系列显卡
- Windows:Docker Desktop + 启用 GPU 的 WSL2;在 WSL2 中安装 NVIDIA 驱动程序和容器工具包
- Linux:安装NVIDIA驱动程序和NVIDIA容器工具包
- 在docker run命令中使用--gpus all标志
- 检查:docker exec 8mblocal bash -c "ffmpeg -hide_banner -encoders | grep -i nvenc"
- 英特尔GPU(快速同步视频 - QSV):对H.264、HEVC、AV1有良好支持(Arc GPU)
- 需要支持QSV的英特尔GPU(大多数第6代及以上酷睿CPU和Arc GPU)
- Linux:确保/dev/dri在容器中可访问
- 在docker run命令中使用--device=/dev/dri:/dev/dri标志
- 检查:docker exec 8mblocal bash -c "ffmpeg -hide_banner -encoders | grep -i qsv"
- AMD GPU(仅限Linux的VAAPI):支持H.264、HEVC、AV1
- Linux:VAAPI(需要Mesa驱动程序和/dev/dri访问权限)
- 在docker run命令中使用--device=/dev/dri:/dev/dri标志
- 建议使用AMD RDNA 2+以获得最佳兼容性
- 检查:docker exec 8mblocal bash -c "ffmpeg -hide_banner -encoders | grep vaapi"
- CPU回退:适用于任何无GPU的系统
- 使用libx264(H.264)、libx265(HEVC)、libaom-av1(AV1)
- 速度较慢但兼容性更广泛
- 若硬件编码器不可用,则自动启用
系统会在运行时验证编码器的可用性,如果硬件不可用,则会自动回退到CPU。您将看到如下日志消息:
- “使用编码器:h264_vaapi(请求:h264_vaapi)” - 硬件正常工作
- “警告:h264_vaapi不可用,正在回退至CPU(libx264)” - CPU回退
- “警告:hevc_nvenc初始化测试失败(驱动程序/库问题),正在回退至CPU” - 硬件已列出但无法初始化
安装
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#installation)
Quick Start with Docker
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#quick-start-with-docker)
运行8mb.local最简单的方式是使用预先构建的Docker镜像。请选择适合您系统的命令:
仅CPU(无GPU)
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#cpu-only-no-gpu)
docker run -d --name 8mblocal -p 8001:8001 -v ./uploads:/app/uploads -v ./outputs:/app/outputs jms1717/8mblocal:latest
NVIDIA GPU(NVENC)
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#nvidia-gpu-nvenc)
docker run -d --name 8mblocal --gpus all -e NVIDIA_DRIVER_CAPABILITIES=compute,video,utility -p 8001:8001 -v ./uploads:/app/uploads -v ./outputs:/app/outputs jms1717/8mblocal:latest
注意:需要设置环境变量以启用NVENC支持。该环境变量会告知NVIDIA容器工具包将视频编码库挂载到容器中。
Intel/AMD GPU(VAAPI - Linux)
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#intelamd-gpu-vaapi---linux)
docker run -d --name 8mblocal --device=/dev/dri:/dev/dri -p 8001:8001 -v ./uploads:/app/uploads -v ./outputs:/app/outputs jms1717/8mblocal:latest
NVIDIA + VAAPI(双GPU - Linux)
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#nvidia--vaapi-dual-gpu---linux)
docker run -d --name 8mblocal --gpus all -e NVIDIA_DRIVER_CAPABILITIES=compute,video,utility --device=/dev/dri:/dev/dri -p 8001:8001 -v ./uploads:/app/uploads -v ./outputs:/app/outputs jms1717/8mblocal:latest
访问网页界面地址:http://localhost:8001
Docker Compose
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#docker-compose)
为便于管理,请使用Docker Compose。创建一个docker-compose.yml文件:
仅CPU
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#cpu-only)
services:
8mblocal:
image: jms1717/8mblocal:latest
container_name: 8mblocal
ports:
- "8001:8001"
volumes:
- ./uploads:/app/uploads
- ./outputs:/app/outputs
- ./.env:/app/.env # Optional: for custom settings
restart: unless-stopped
NVIDIA GPU
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#nvidia-gpu)
services:
8mblocal:
image: jms1717/8mblocal:latest
container_name: 8mblocal
ports:
- "8001:8001"
volumes:
- ./uploads:/app/uploads
- ./outputs:/app/outputs
- ./.env:/app/.env # Optional: for custom settings
restart: unless-stopped
environment:
- NVIDIA_DRIVER_CAPABILITIES=compute,video,utility # Required for NVENC
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
英特尔/AMD VAAPI(Linux)
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#intelamd-vaapi-linux)
services:
8mblocal:
image: jms1717/8mblocal:latest
container_name: 8mblocal
ports:
- "8001:8001"
volumes:
- ./uploads:/app/uploads
- ./outputs:/app/outputs
- ./.env:/app/.env # Optional: for custom settings
devices:
- /dev/dri:/dev/dri
restart: unless-stopped
NVIDIA + VAAPI(双GPU)
[](https://github.com/JMS1717/8mb.local?tab=readme-ov-file#nvidia--vaapi-dual-gpu)
services:
8mblocal:
image: jms1717/8mblocal:latest
container_name: 8mblocal
ports:
- "8001:8001"
volumes:
- ./uploads:/app/uploads
- ./outputs:/app/outputs
- ./.env:/app/.env # Optional: for custom settings
devices:
- /dev/dri:/dev/dri
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]