5分钟自建Cobalt视频下载器:Docker部署与API调用完整指南
【免费下载链接】cobaltbest way to save what you love项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt
你想保存一个网上视频,打开下载站先挨一堆弹窗,还得看广告,拿回来还带水印。其实这事可以自己跑一个服务。Cobalt 是一个开源的自托管视频下载器,没有广告、没有跟踪、没有付费墙。贴上链接,拿到文件,完事。
📥 Cobalt 是什么:一个没有广告的开源视频下载器
Cobalt 分两部分:一个你能打开的网页,一个供脚本调用的 REST API。两者共用同一套处理服务。
开箱即用的平台有 20 个,覆盖三种下载模式:视频+音频、仅音频、仅视频。主要平台的情况如下:
| 平台 | 视频+音频 | 仅音频 | 仅视频 | 特点 |
|---|---|---|---|---|
| YouTube | ✅ | ✅ | ✅ | 8K/4K/HDR/VR,多编解码器可选 |
| TikTok | ✅ | ✅ | ✅ | 无水印视频、原始配乐 |
| ✅ | ✅ | ✅ | Reels、照片、多媒体任选 | |
| ✅ | ✅ | ✅ | GIF 与视频 | |
| SoundCloud | ❌ | ✅ | ❌ | 仅音频 |
| Twitch | ✅ | ✅ | ✅ | 短片(clips) |
YouTube 支持得最全:8K、4K、HDR、VR、高帧率,还有多语言配音音轨。TikTok 能下无水印版本。Instagram 的多媒体帖子会让你先选存哪一项,不会一股脑全下。
📥 用 Docker 三步自建 Cobalt 实例
官方推荐 Docker Compose,而且不用克隆整个仓库,只需要一份 compose 文件。
- 建一个配置目录
- 参照示例配置写好
docker-compose.yml,把API_URL和WEB_URL换成你自己的地址 - 启动容器
下面这条命令序列完成建目录和启动(compose 文件内容照示例配置写):
mkdir cobalt && cd cobalt # 在此处创建 docker-compose.yml docker compose up -d有两点值得知道:
- 示例配置里带了 watchtower,它会自动拉取新镜像更新,你不用惦记版本号
- 实例要暴露公网时,前面加一层反向代理(即挡在容器前、负责转发外部请求和处理 HTTPS 的代理组件),配置思路见部署文档
用 Node.js 装一份用于开发
想改源码就走这条路,需要 Node.js 18 以上:
git clone https://gitcode.com/GitHub_Trending/cob/cobalt cd cobalt npm run setup npm startsetup 脚本会把依赖装齐,你只需按提示选启动 API 还是网页。
📥 部署完成后值得调的三个配置
挑一个文件名规则
默认存下来的文件不好归类。Cobalt 提供四种文件名模式(请求里的filenamePattern字段),各取所长:
classic:youtube_MMK3L4W70g4_1920x1080_h264.mp4,ID 开头,方便去重pretty:MV标题 (1080p, h264, youtube).mp4,人读着舒服basic:标题加少量信息nerdy:全量元数据加原始 ID
生成逻辑在 src/modules/processing/createFilename.js,想自定义可以改这里。
挑格式和画质
YouTube 可以用vCodec指定编解码器(h264/av1/vp9),vQuality从 144p 一路开到 max。音频有aFormat(mp3/ogg/wav/opus)和isAudioMuted。TikTok 加isTTFullAudio能拿到视频里的原始配乐,不是混流。
给自己的实例上点保护
实例一旦公开,没人限流就会被刷。Cobalt 内置速率限制(即限制单位时间内的请求次数,防止你的实例被滥用),默认 60 秒内 20 次请求。调RATELIMIT_WINDOW和RATELIMIT_MAX两个环境变量就行。还可以设DURATION_LIMIT卡死单个视频最长时长,出站请求走代理则配置API_EXTERNAL_PROXY。
有些平台内容需要登录态才能取,把 cookie 示例 放到docker-compose.yml同目录,改名cookies.json,按提示填上凭据即可。
📥 视频下载 API:让脚本用上 Cobalt
Cobalt 的 API 就几个端点,最核心的是POST /api/json:发一个链接过去,换回一个可直接下载的文件地址。下面这条 curl 请求一个音频文件:
curl -X POST http://localhost:9000/api/json \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"url":"https://www.youtube.com/watch?v=xxx","isAudioOnly":true}'响应里的status是redirect或stream时,跟着url字段走就是文件本身。遇到多媒体帖子会返回picker数组,你决定存哪一项。GET /api/serverInfo能看到实例版本和状态。完整的请求参数表在 API 文档。
写批量下载脚本的话这个端点足够稳,一个链接列表循环打一遍就能把素材收齐。
Cobalt 的核心就一句话:无广告、可自托管、网页给人用、API 给脚本用的视频下载服务。下一步建议先把它跑在自己的服务器上,拿一个熟悉的平台试一条链接。
【免费下载链接】cobaltbest way to save what you love项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考