拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Cobalt 多音轨下载怎么用?配音音轨获取指南

Cobalt 多音轨下载怎么用配音音轨获取指南【免费下载链接】cobaltbest way to save what you love项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt很多 YouTube 视频带多语言配音普通下载工具却只能拿到默认原声。Cobalt 是一个开源媒体下载服务通过dubLang参数就能实现 YouTube 多音轨下载把指定语言的配音轨挑出来。本文把选轨—请求—渲染这条链路拆开讲清楚顺带给出自托管方法。解决配音总被默认音轨顶掉的问题先说问题一部带德语配音的纪录片大多数工具拿到的是原声——因为它们只取第一条可用音频流。而多音轨视频里原声和配音在 YouTube 返回的流列表中是平级的区别只在元数据标记is_original与audio_track。Cobalt 的做法不复杂请求里带dubLang服务端解析时把命中的配音轨替换进原声轨的位置后面的渲染逻辑完全不变所以对下游是透明的。你现在就可以这样做在 Web 界面的选项面板里YouTube 一栏有配音开关对应存储键ytDub随每次请求提交前端取值逻辑见 src/front/cobalt.js或者直接走 API 传dubLang: true。两条路进入同一个处理流程。跟一次请求看音轨怎么被挑出来按编码器过滤候选流这一步的结果是候选流只剩下能拼进同一个容器的。Cobalt 用youtubei.js的 Innertube 会话调用getBasicInfo拿到streaming_data.adaptive_formats再按vCodec过滤h264 只留avc1/mp4aMP4 容器vp9 只留vp9/opusWebM 容器最后按比特率排序。对照表在 src/modules/processing/services/youtube.js 顶部的codecMatch。原始音轨优先配音轨按语言精确命中选轨核心逻辑节选自同一文件audio adaptive_formats.find(i checkBestAudio(i) i.is_original ); if (o.dubLang) { let dubbedAudio adaptive_formats.find(i checkBestAudio(i) i.language o.dubLang i.audio_track ); if (dubbedAudio) { audio dubbedAudio; isDubbed true; } }说白了默认永远选原声开了dubLang后在带audio_track标记的流里找语言完全相等的那条找到就替换找不到就继续用原声。isDubbed会写进文件名属性youtubeDubName所以下载文件名里会带上语言名。⚠️ 常见卡点语言没命中时不会报错而是静默回退原声。想确认自己是否真的拿到 YouTube 多语言音轨里的配音看文件名里有没有语言名最直观。配置 dubLang 参数指定目标配音语言用 API 请求dubLang 配合 Accept-Language 头按 docs/api.md 的定义dubLang对客户端是布尔值真正的语言来自请求头src/core/api.js 里有request.dubLang request.dubLang ? lang : falselang取Accept-Language头的前两位字母并转小写取不到默认en。一次完整的 YouTube 配音下载请求长这样curl -X POST http://localhost:9000/api/json \ -H Accept: application/json \ -H Content-Type: application/json \ -H Accept-Language: de \ -d {url:https://www.youtube.com/watch?vXXXX,dubLang:true,vCodec:h264}⚠️ 注意Accept和Content-Type两个头是强制的缺了会直接返回参数错误dubLang只对 YouTube 生效其他平台的解析器不读这个字段。用 isAudioOnly 只取配音声音如果只想要配音音频本身比如留一条德配当听力材料请求里加isAudioOnly: true。这条路径跳过视频渲染直接返回配音轨的下载地址音频封装由vCodec决定h264 对应 m4avp9 对应 opus。另外说清楚当前版本一次请求只选一条音轨没有批量下载全部配音的能力想同时拿两种语言就发两条请求。拆一遍从流地址到成品的渲染管线视频路径音画双流音频零转码选好视频流和音频流后API 返回type: render加一个指向/api/stream的签名地址两路流在那里被 ffmpeg 拼成成品。参数写在 src/config.jsonwebm: [-c:v, copy, -c:a, copy], mp4: [-c:v, copy, -c:a, copy, -movflags, faststartfrag_keyframeempty_moov], audio: [-ar, 48000, -ac, 2, -b:a, 320k]这里有个坑要分清视频路径的-c:a copy意味着音频只换容器不重新解码音轨质量等于 YouTube 原始流的水平。纯音频路径统一重编码到 320k走isAudioOnly时则按aFormatmp3/ogg/wav/opus重新编码规则就是上面最后一行audio48kHz、立体声、320kbps。这是有意为之的统一输出保证不同格式之间听感一致。⚠️ 注意/api/streamURL 上的id/sig/exp/sec/iv是一次性签名参数官方文档明确它们是不透明opaque的、版本间会变不要尝试自己拼接这些参数直接消费 API 返回的 URL 即可。5 分钟跑通一个本地实例Docker 起容器照 docs/run-an-instance.md 走把 docs/examples/docker-compose.example.yml 里的默认 URL 换成你自己的域名然后docker compose up -d。容器带 watchtower会随上游自动更新镜像。Node.js 本地开发需要 Node.js 18Cobalt 使用方法就是三条命令git clone https://gitcode.com/GitHub_Trending/cob/cobalt cd cobalt npm run setup npm startAPI 默认监听 9000 端口Web 界面 9001。⚠️ 常见卡点默认限流是 60 秒窗口 20 个请求写批量脚本要自己控速单视频时长上限默认 3 小时DURATION_LIMIT10800直播流会被直接拒绝。实例跑起来后挑一条带配音的 YouTube 视频请求里带上dubLang: true和Accept-Language看下载文件名里多出来的语言名——那就是你真正拿到的配音轨。仓库地址git clone https://gitcode.com/GitHub_Trending/cob/cobaltsetup 完即可开始使用。【免费下载链接】cobaltbest way to save what you love项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门