news 2026/9/8 14:39:43

5分钟自建Cobalt视频下载器:Docker部署与API调用完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5分钟自建Cobalt视频下载器:Docker部署与API调用完整指南

5分钟自建Cobalt视频下载器:Docker部署与API调用完整指南

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

你想保存一个网上视频,打开下载站先挨一堆弹窗,还得看广告,拿回来还带水印。其实这事可以自己跑一个服务。Cobalt 是一个开源的自托管视频下载器,没有广告、没有跟踪、没有付费墙。贴上链接,拿到文件,完事。

📥 Cobalt 是什么:一个没有广告的开源视频下载器

Cobalt 分两部分:一个你能打开的网页,一个供脚本调用的 REST API。两者共用同一套处理服务。

开箱即用的平台有 20 个,覆盖三种下载模式:视频+音频、仅音频、仅视频。主要平台的情况如下:

平台视频+音频仅音频仅视频特点
YouTube8K/4K/HDR/VR,多编解码器可选
TikTok无水印视频、原始配乐
InstagramReels、照片、多媒体任选
RedditGIF 与视频
SoundCloud仅音频
Twitch短片(clips)

YouTube 支持得最全:8K、4K、HDR、VR、高帧率,还有多语言配音音轨。TikTok 能下无水印版本。Instagram 的多媒体帖子会让你先选存哪一项,不会一股脑全下。

📥 用 Docker 三步自建 Cobalt 实例

官方推荐 Docker Compose,而且不用克隆整个仓库,只需要一份 compose 文件。

  1. 建一个配置目录
  2. 参照示例配置写好docker-compose.yml,把API_URLWEB_URL换成你自己的地址
  3. 启动容器

下面这条命令序列完成建目录和启动(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 start

setup 脚本会把依赖装齐,你只需按提示选启动 API 还是网页。

📥 部署完成后值得调的三个配置

挑一个文件名规则

默认存下来的文件不好归类。Cobalt 提供四种文件名模式(请求里的filenamePattern字段),各取所长:

  • classicyoutube_MMK3L4W70g4_1920x1080_h264.mp4,ID 开头,方便去重
  • prettyMV标题 (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_WINDOWRATELIMIT_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}'

响应里的statusredirectstream时,跟着url字段走就是文件本身。遇到多媒体帖子会返回picker数组,你决定存哪一项。GET /api/serverInfo能看到实例版本和状态。完整的请求参数表在 API 文档。

写批量下载脚本的话这个端点足够稳,一个链接列表循环打一遍就能把素材收齐。

Cobalt 的核心就一句话:无广告、可自托管、网页给人用、API 给脚本用的视频下载服务。下一步建议先把它跑在自己的服务器上,拿一个熟悉的平台试一条链接。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 1:03:29

百度2019校招移动软研面试题剖析:基础原理与高分答题框架

打开这份“百度2019校招移动软研方向问答题合集”时,你可能会想:都过去这么久了,看这些老古董还有意义吗?我的答案是:意义比想象中大得多。移动开发这个方向,每年校招题目在变化,但底层考察逻辑…

作者头像 李华
网站建设 2026/9/6 11:21:01

异环1.3版本评测:地图翻倍、系统减负,这版本值得回归吗?

最近异环 1.3 版本放出来的信息量不小:地图面积翻倍、载具玩法强化、残虹美术表现提升、娜娜莉和薄荷出了夏日新衣服,还有新角色妮夏登场,系统这一块也在明确做减负。先给一个总判断:如果你之前玩过但中途退坑,这个版本…

作者头像 李华
网站建设 2026/9/5 21:34:27

FreeRTOS 下跑通 BLE 心电采集:任务划分、队列通信与低功耗实战

简介:本资源是一个面向嵌入式开发者的FreeRTOS与蓝牙低功耗(BLE)融合实践项目,聚焦于医疗健康场景下的实时心电图(ECG)数据采集与无线传输,适用于具备C语言基础和STM32/nRF等MCU开发经验的中高级…

作者头像 李华
网站建设 2026/9/4 16:25:06

低成本自建PTP Grandmaster:GNSS驯服与Linux时间同步栈实战

在工业网络、广电音视频、分布式测量和金融交易系统里,PTP(Precision Time Protocol,IEEE 1588)承担着把微秒级时间偏差传递到每台设备的任务。一个 PTP 域中必须有一个最高时间源,叫做 Grandmaster(GM&…

作者头像 李华
网站建设 2026/9/3 18:37:15

小米测开笔试题复盘:从试卷结构到高频考点全解析

2. 试卷结构拆解:小米测开笔试到底在考什么先说结论:2019年小米秋招测试开发笔试题(B),整体风格是**“基础扎实优先,工程思维并重”**,既没有像算法岗那样上来就是Hard级动态规划,也…

作者头像 李华
网站建设 2026/9/3 15:25:52

DBeaver 数据导入避坑指南:3 个关卡快速搞懂 CSV 导入失败

DBeaver 数据导入避坑指南:3 个关卡快速搞懂 CSV 导入失败 【免费下载链接】dbeaver Free universal database tool and SQL client 项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver 用 DBeaver 数据导入一个 10 万行的 CSV 文件,跑到…

作者头像 李华