用的完整實(shí)操指南)
Cobalt 視頻下載從 Docker 部署到 API 調(diào)用的完整實(shí)操指南【免費(fèi)下載鏈接】cobaltbest way to save what you love項(xiàng)目地址: https://gitcode.com/GitHub_Trending/cob/cobalt想把一條 1080p 的 YouTube 視頻連同高清畫(huà)質(zhì)一起存下來(lái)通常要在十幾個(gè)第三方站點(diǎn)之間換來(lái)?yè)Q去還躲不開(kāi)廣告和限速。Cobalt 是一個(gè)沒(méi)有廣告、沒(méi)有追蹤器、沒(méi)有付費(fèi)墻的視頻/音頻下載工具支持 YouTube、TikTok、Instagram 等 20 多個(gè)平臺(tái)你可以把它跑在自己的服務(wù)器上把下載行為完全掌握在自己手里。用 Docker 三條命令啟動(dòng) CobaltCobalt 的官方 Docker 包是部署的首選前提是機(jī)器上裝好了 Docker 和 Docker Compose。整個(gè)流程就三步git clone https://gitcode.com/GitHub_Trending/cob/cobalt cd cobalt docker compose up -dcompose 文件可以直接參考倉(cāng)庫(kù)里 examples/docker-compose.example.yml 的樣例注意把默認(rèn)的 URL 換成你自己的域名否則前端請(qǐng)求會(huì)指向別人的實(shí)例。Docker 包內(nèi)置了 watchtower容器會(huì)自動(dòng)拉取新版本不用你手動(dòng)升級(jí)。手動(dòng)安裝只適合本地開(kāi)發(fā)裝好 Node.js 18 以上git clone倉(cāng)庫(kù)后運(yùn)行npm run setup再npm start即可。API 和前端要分開(kāi)部署setup 腳本會(huì)讓你選擇角色。如果實(shí)例要支持需要登錄才能看的內(nèi)容在同目錄放一個(gè) cookies.json樣例見(jiàn) examples/cookies.example.json并通過(guò)COOKIE_PATH指向它。三種下載模式和智能文件名Cobalt 把下載拆成三個(gè)互斥的模式默認(rèn)就是視頻音頻視頻音頻什么都不改直接下原片僅音頻請(qǐng)求里加isAudioOnly: true音頻格式由aFormat指定支持mp3、ogg、wav、opus、best五種默認(rèn)mp3僅視頻加isAudioMuted: true去掉音軌適合只想留畫(huà)面素材的情況。畫(huà)質(zhì)方面vQuality可選 144 到 2160 以及max默認(rèn) 720YouTube 還能用vCodec指定h264、av1、vp9手機(jī)端建議 h264 兼容性最好。個(gè)別平臺(tái)有專屬開(kāi)關(guān)TikTok 的isTTFullAudio能拿到視頻用的原始完整音源tiktokH265決定是否優(yōu)先 1080p 的 HEVC 版本Twitter 的twitterGif控制 GIF 是否真的轉(zhuǎn)成 .gif 文件。文件名由filenamePattern決定四種取值示例長(zhǎng)這樣取值示例文件名classic默認(rèn)youtube_MMK3L4W70g4_1920x1080_h264_mute.mp4prettyLoossemble (???) - Sensitive MV (1080p, h264, mute, youtube).mp4basic標(biāo)題 (1080p, h264)不帶上游平臺(tái)名nerdy標(biāo)題 (1080p, h264, ru, youtube, 視頻ID).mp4生成邏輯在 src/modules/processing/createFilename.js 里標(biāo)題、分辨率、編解碼器、音軌語(yǔ)言都會(huì)被保留素材入庫(kù)后不用二次重命名就能認(rèn)出來(lái)。三個(gè)真實(shí)場(chǎng)景怎么用做課件的老師把網(wǎng)課鏈接貼進(jìn)網(wǎng)頁(yè)aFormat設(shè)成ogg或opus僅音頻模式下拿到的文件體積小方便在教室里反復(fù)播放不需要下載整段視頻。運(yùn)營(yíng)做品牌素材備份品牌官號(hào)發(fā)的每條 Reel 和推文都過(guò)一遍 CobaltfilenamePattern用nerdy文件名里自帶發(fā)布時(shí)間和視頻 ID歸檔進(jìn)網(wǎng)盤(pán)后按項(xiàng)目文件夾存放日后盤(pán)點(diǎn)素材不用回網(wǎng)站翻歷史。剪片的人找參考YouTube 上的剪輯教程用vQuality: 2160拉滿畫(huà)質(zhì)收藏B 站的同類內(nèi)容同樣支持TikTok 的轉(zhuǎn)場(chǎng)片段加isTTFullAudio把背景音樂(lè)整段存下來(lái)后面找原曲方便得多。? Cobalt API 調(diào)用與實(shí)例保護(hù)整個(gè)服務(wù)就是一個(gè) REST 接口前端和 API 分離部署所以任何腳本都能直接調(diào)。最精簡(jiǎn)的調(diào)用長(zhǎng)這樣const res await fetch(http://localhost:9000/api/json, { method: POST, headers: { Accept: application/json, Content-Type: application/json }, body: JSON.stringify({ url: https://www.youtube.com/watch?vxxxxx, vQuality: 1080 }) })請(qǐng)求成功返回status: success和一個(gè)可下載鏈接鏈接參數(shù)帶簽名且有時(shí)效直接當(dāng)下載地址用即可。完整字段說(shuō)明見(jiàn) docs/api.md所有平臺(tái)的具體處理邏輯在 src/modules/processing/services/ 目錄下每個(gè)平臺(tái)一個(gè)文件。實(shí)例要暴露到公網(wǎng)時(shí)重點(diǎn)調(diào)這幾個(gè)環(huán)境變量完整清單在 docs/run-an-instance.mdAPI_PORT9000 API_URLhttps://api.example.com/ RATELIMIT_WINDOW60 RATELIMIT_MAX20 CORS_WILDCARD0 CORS_URLhttps://example.comRATELIMIT_WINDOW和RATELIMIT_MAX控制每個(gè) IP 在一個(gè)時(shí)間窗秒內(nèi)最多請(qǐng)求多少次超了返回 429這是防濫用的第一道閘CORS_WILDCARD設(shè)為 0 后只有CORS_URL指定的域名能調(diào)你的 API。對(duì)外再套一層 nginx 反向代理實(shí)例基本就穩(wěn)了。常見(jiàn)問(wèn)題速查返回 429 限流撞上了速率限制等一個(gè)窗口期默認(rèn) 60 秒再試或調(diào)大RATELIMIT_MAX。提示需要登錄/部分內(nèi)容下不了配置 cookies.json 并用COOKIE_PATH指向它登錄態(tài)只對(duì)需要鑒權(quán)的平臺(tái)生效。端口被占用改API_PORT默認(rèn) 9000和WEB_PORT默認(rèn) 9001即可。YouTube 下出來(lái)只有 720p這是默認(rèn)值在請(qǐng)求里顯式寫(xiě)vQuality: 1080或2160。頁(yè)面里調(diào)用報(bào) CORS 錯(cuò)API 端把CORS_WILDCARD設(shè) 1 全放開(kāi)或設(shè) 0 并用CORS_URL精確放行你的前端域名。把 Cobalt 部署在自己服務(wù)器上等于把下載工具變成了自己的基礎(chǔ)設(shè)施——鏈接貼進(jìn)去文件落下來(lái)剩下的時(shí)間交給創(chuàng)作本身。下載和使用內(nèi)容請(qǐng)遵守各平臺(tái)的條款尊重原作者的版權(quán)素材僅用于你計(jì)劃使用的方式?!久赓M(fèi)下載鏈接】cobaltbest way to save what you love項(xiàng)目地址: https://gitcode.com/GitHub_Trending/cob/cobalt創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考