☰
Cobalt 自建视频下载服务部署手册:零广告实例从 0 到验收通过
2026/10/7 1:51:21 网站建设 项目流程

Cobalt 自建视频下载服务部署手册:零广告实例从 0 到验收通过

【免费下载链接】cobaltbest way to save what you love项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt

Cobalt 是一个可自建的免费视频下载服务,开源、无广告、无跟踪器。把链接贴进输入框,直接拿到媒体文件,从找下载站、挨广告到存盘的全套动作,被压缩成"粘贴→保存"。解析和文件合并都在服务端完成,本地无需安装 FFmpeg。

值不值得装:Cobalt 支持哪些平台

先看平台覆盖面再决定:

平台能力要点典型用途
YouTube 长视频、Shorts 短视频与音乐8K/4K 画质、HDR 与 VR、高帧率,H.264/AV1/VP9留档与素材提取
TikTok去水印的视频与轮播图,可保留原始 BGM去水印存档
B 站(.com 与 .tv 两个站点均可识别)视频+音频、纯音频、纯视频均可课程与稿件收藏
Instagram 图文帖与 Reels 短视频多媒体帖子中自由挑选要保存的条目图片+视频混排帖子
X(Twitter)多媒体帖子多选内容推文素材保存
SoundCloud纯音频平台:私有链接可用,文件名带元数据采样与配乐提取

完整清单见 README.md 的支持服务表格:除上表外,Vimeo、Pinterest、VK、Reddit 与 Twitch Clips 等 20 余个平台也都能识别,且各平台配有单独的能力备注。

三个常见使用场景:自媒体创作者把刷到的片段按项目归档;音频创作者从 SoundCloud 提取音轨,文件名自带元数据;小团队自建一套实例,素材集中入库并统一命名。

Cobalt 部署教程:Docker Compose 主路径

官方主路径是 Docker Compose,需要预先安装 Docker 与 Compose 插件。

git clone https://gitcode.com/GitHub_Trending/cob/cobalt cd cobalt cp docs/examples/docker-compose.example.yml docker-compose.yml docker compose up -d

启动前打开docker-compose.yml,把默认的API_URL和WEB_URL替换为你自己的域名或 IP 地址,否则 Web 界面回传下载地址时会指向官方实例而不是你的。实例要暴露到公网时,建议在前面挂一层 nginx 等反向代理,做法见 docs/run-an-instance.md。

验收标准:

  1. 在浏览器访问http://localhost:9001,页面能正常打开(Web 默认 9001、API 默认 9000)。
  2. 粘贴一个视频链接并点击保存,本地出现下载动作,说明实例跑通。

如果不用 Docker:Node 18 以上即可,跑 setup 脚本选择 api 或 web,再用npm start启动。详见 docs/run-an-instance.md。

Cobalt 日常使用:三种下载模式与下载 API 用法

粘贴链接后,可选三种下载模式:

  • 视频+音频(默认):服务端借助 FFmpeg 将画面流与音轨合并为单一文件;
  • 仅音频:只取音轨;
  • 仅视频:只留画面。

转码与合成都跑在服务端,本机无需任何转换工具。

REST API 可以把这套流程接进脚本,个人项目免费开放:向/api/json发 POST,请求体带url与downloadMode,返回 JSON 里按status判断结果——redirect或stream时url字段即文件直链,picker表示需先从多媒体帖子中选条目。请求需带Accept与Content-Type: application/json两个头,字段说明见 docs/api.md。

curl -X POST https://your-api.example.com/api/json \ -H "Accept: application/json" -H "Content-Type: application/json" \ -d '{"url":"https://www.bilibili.com/video/BVxxxx","downloadMode":"video"}'

遇到问题怎么办:Cobalt 常见问题 FAQ

现象:连续下载多次后被拒,返回 rate-limit

  • 原因:限流窗口默认 60 秒、上限 20 次(RATELIMIT_WINDOW与RATELIMIT_MAX),公共实例更严。
  • 解法:批量任务拉开请求间隔;自建实例则把这两个变量调高即可。

现象:老版本 Firefox 中"粘贴"按钮点不动

  • 原因:125 版以前的 Firefox 不开放网页剪贴板读取权限。
  • 解法:将 Firefox 升到 125 及以上;旧版本在about:config把dom.events.asyncClipboard.readText置为true。图文步骤见 docs/troubleshooting.md。

现象:某些链接提示需要登录,或返回空结果

  • 原因:部分平台要求账号处于登录状态,才能读取相应内容。
  • 解法:在docker-compose.yml所在目录放一个cookies.json(格式参考 docs/examples/cookies.example.json),用COOKIE_PATH环境变量指向它,重启容器后生效。

Cobalt 调参与二次开发:环境变量与新增平台

常用环境变量(完整清单在 docs/run-an-instance.md):

变量默认值用途
API_PORT/WEB_PORT9000 / 9001两个服务的监听端口
RATELIMIT_WINDOW/RATELIMIT_MAX60 / 20限流窗口(秒)与每窗口上限
DURATION_LIMIT10800允许下载的视频时长上限(秒)
COOKIE_PATH未启用指向 cookies 文件,供需登录态的平台使用
FREEBIND_CIDR未启用每个下载随机分配出口 IP,仅 Linux

二次开发的入口很简单:在 src/modules/processing/services/ 目录加一个平台文件,负责该平台的请求与解析;再到 src/modules/processing/match.js 登记 URL 匹配规则。目录里每个平台一个文件,拿现有实现当模板改最省力。

先跑通上面的最小实例:9001端口能看到页面、一个真实链接能完整下载。之后针对实际用途调参——批量跑就放宽限流,素材偏长就调大DURATION_LIMIT,有需登录态的平台就配好cookies.json。排障步骤都写在 docs/troubleshooting.md,遇到报错先查那里。

【免费下载链接】cobaltbest way to save what you love项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询