如果平时使用 yt-dlp 下载 B站、YouTube 或其他平台的视频,最大的门槛通常不是下载本身,而是需要记命令、管理下载任务以及查看文件状态。
Vidom 做的事情,就是在 yt-dlp 外面增加一个 Web 管理界面。
部署完成以后,可以直接通过浏览器添加视频地址,并统一查看下载进度、暂停或继续任务、管理历史记录,不需要每次都进入终端输入 yt-dlp 命令。
目前项目支持 YouTube、哔哩哔哩、Vimeo、X、TikTok、小红书、Instagram,以及普通 HTTP 媒体直链。

Vidom 主要解决什么问题?
Vidom 本身并不是一个新的在线视频解析引擎。
它的核心下载能力仍然来自:
- yt-dlp;
- ffmpeg;
- 普通 HTTP 下载。
因此,可以把它理解成:
yt-dlp + 下载队列 + SQLite + Web 管理面板。
相比直接使用 yt-dlp 命令行,Vidom 更适合需要长期下载或者同时管理多个任务的场景。
例如一次加入多个视频以后,可以设置最大并发数,并在网页中查看:
- 当前下载任务;

- 下载百分比;* 实时速度;* 剩余时间;

- 下载历史;* 成功与失败状态。

对于偶尔只下载一个视频的人来说,直接使用 yt-dlp 反而可能更加简单。
Vidom 支持哪些视频来源?
根据现有项目说明,目前内置支持:
| 来源 | 支持情况 |
|---|---|
| YouTube | 支持 |
| 哔哩哔哩 | 支持 |
| Vimeo | 支持 |
| X / Twitter | 支持 |
| TikTok | 支持 |
| 支持 | |
| HTTP 媒体直链 | 支持 |

平台类视频主要交给 yt-dlp 处理。
普通文件直链则可以直接通过 HTTP 下载,并支持 Range 断点续传。
需要说明的是,支持某个平台,并不意味着该平台上的所有内容都可以下载。
会员视频、需要登录的资源、地区限制内容、DRM 内容以及平台主动限制访问的视频,都可能解析失败。
比直接使用 yt-dlp 多了什么?
Vidom 比较有价值的部分并不是“支持多少网站”,因为这些能力本身主要来自 yt-dlp,而是它增加了一层下载管理功能。
任务队列
可以限制同时运行的任务数量,目前提供:
|
|
默认同时下载 3 个任务。
对于网络带宽有限或者同时需要下载大量视频的设备,这比直接批量启动多个 yt-dlp 进程更加容易管理。
暂停、继续和重试
任务支持:
- 暂停;
- 恢复;
- 取消;
- 重试;
- 删除。
恢复下载时会利用 yt-dlp 的断点续传能力,尽量从已经下载的位置继续,而不是重新下载整个文件。
实时进度
前端通过 SSE 接收任务状态,同时保留轮询作为兜底。
页面可以显示:
- 下载百分比;
- 下载速度;
- 已下载大小;
- 剩余时间。
服务重启后恢复任务
如果服务器意外重启,原来处于:
|
|
状态的任务,会重新进入等待队列。
已经完成的任务不会重新下载。
这对于把 Vidom 长期部署在 NAS、小服务器或者 VPS 上比较有意义。
下载历史和统计
Vidom 还提供 Dashboard 和下载历史。
可以查看:
- 今日任务数量;
- 累计下载量;
- 成功率;
- 不同平台占比;
- 每日下载趋势。
历史记录支持关键词搜索、平台筛选以及按照时间或文件大小排序。
如果只是偶尔下载视频,这些功能意义有限;如果把它当作长期运行的下载中心,管理价值会明显一些。
Vidom 的技术结构
项目采用前后端分离结构,但生产环境可以由单个 Node.js 服务提供。
主要技术包括:
| 部分 | 技术 |
|---|---|
| 后端 | Node.js 22+、Express、TypeScript |
| 前端 | React、TypeScript、Vite |
| UI | Tailwind CSS v4 |
| 数据库 | SQLite |
| 视频解析 | yt-dlp |
| 音视频处理 | ffmpeg |
| 自动化测试 | Playwright |
数据库直接使用 Node.js 自带的 node:sqlite。

因此如果按照原始项目设计运行,需要 Node.js 22 或更高版本。
[Windows]本地部署
程序已经打包生成exe可执行文件,双击文件后就能直接使用,无需手动安装各种环境和依赖,做到开箱即用!
