资讯动态

JZSub架构深度解析:4个脚本+download-manifest.json如何组成一条可靠的视频交付流水线

发布时间:2026/10/17 6:15:37 来源:尧图企业网站定制
AI 技能音视频【免费下载链接】jzsubJZSub — 一条视频链接自动交付最高画质、封面和 GPT 双语字幕 MP4。项目地址https://gitcode.com/gh_mirrors/jz/jzsub点击查看免费下载JZSub 是一个开源的视频下载与双语字幕流水线工具给它一个视频链接它会自动下载最高画质视频、封面并交付烧录好原文中文双语字幕的 MP4。整条视频交付流水线由 4 个 Python 脚本和 1 份download-manifest.json清单驱动——下载、翻译、渲染、烧录、验收每一步都有明确的退出码和校验任何一步失败都能精确定位并续传而不是留给你一个半完成的半成品。左下载后的原片 · 右JZSub 生成并烧录的原文中文双语字幕架构全景4个脚本 1份清单如何分工JZSub 的架构非常克制没有数据库、没有常驻服务只有 4 个各司其职的脚本通过磁盘上的文件尤其是download-manifest.json交接状态阶段脚本职责产物① 下载fetch_video.py探测、下载最高画质视频/封面/原始字幕视频中间文件、MP4、封面、download-manifest.json② 翻译渲染subtitle_pipeline.py锁定原始字幕、分批翻译、渲染双语 SRT/ASSsubtitle-manifest.json、翻译批次、bilingual.ass③ 烧录burn_subtitles.py用 libass 把 ASS 字幕烧进 H.264 MP4双语字幕版「视频名」.mp4④ 验收verify_delivery.py逐项核对交付物不达标就 fail closed完成/未完成的状态报告调度逻辑写在 SKILL.md 中agent 按顺序调用上述脚本用退出码0 完成、3 还有后续阶段决定下一步做什么直到验收脚本返回 0。左无字幕的竖屏原片 · 右JZSub 自适应竖屏布局的双语字幕成片更小字号、更大底部安全区第 1 步fetch_video.py 如何生成 download-manifest.jsonfetch_video.py 是整个流水线的入口一次运行完成这些事探测视频先只取元数据不下载确认是单视频而非播放列表并列出平台可用的字幕轨道下载最高画质用bv*ba/b格式选择器下载最佳视频音频合并为 MKV 中间文件并尝试无损 remux成*.master.mp4不重编码画质零损失静默登录--browser-cookies auto时先匿名下载仅在遇到登录/验证码类失败时才静默读取 Chrome 登录态重试。Cookie 全程直传给 yt-dlp不导出、不打印、不写入清单见 chrome-auth.md保存原始字幕挑选原语言、非机器翻译的字幕轨道自动排除live_chat、弹幕、目标语言轨道等原始文件字节级封存同时派生一份 SRT 供翻译使用两者都用 SHA-256 记录指纹。最后它把以上所有决策写成download-manifest.json。这份清单就是流水线的合同几个关键字段值得新手注意{ deliverable: full, target_language: zh-CN, delivery_names: { bilingual_video: 双语字幕版「视频名」.mp4 }, artifacts: { lossless_mp4_master: { path: …master.mp4 }, subtitle: { …: …, sha256: … } }, execution: { complete: false, next_stage: translation_required } }delivery_names交付文件名由清单统一声明中文交付即封面.jpg和双语字幕版「视频名」.mp4后续脚本不许自己发明文件名——续传和验收都认这份清单artifacts每个产物的路径 SHA-256续传时可验证文件没被改动execution.next_stage下载完成后如果平台有可用字幕脚本返回退出码 3并写入next_stage: translation_required——这不是错误而是接力棒告诉 agent 还有翻译、渲染、烧录要走。封面.jpg由下载阶段直取平台封面并转换为通用 JPEG与视频一起交付。第 2 步subtitle_pipeline.py 如何做到锁死原文的双语翻译这是架构中最精巧的一环。subtitle_pipeline.py 的核心思想是原文不可变译文可重放。prepare准备把来源 SRT 逐字节归档并打上 SHA-256把每条字幕解析成带唯一id的字幕账本cue ledger。原文从这一刻起被哈希锁定后续任何环节都无法篡改它分批翻译字幕被切成每批约 80 条的紧凑批次batch-0001.json…每批只含idsource原文并附带前后 2 条只读上下文让术语、人称在批次边界处依然连贯。agent 通过next-batch命令一次只领一批翻译完写回文件再领下一批直到返回done: true——全程不读取完整字幕清单上下文始终保持很小规则详见 translation-contract.mdrender渲染全部译完后再按句子边界重新分组显示生成 4 个文件原文 SRT、译文 SRT、双语 SRT、以及给烧录用的bilingual.assMiSans Bold 字体原文在上译文在下的底部堆叠布局自动适配 16:9 横屏与竖屏字号。渲染完成后会写出validation.json校验报告逐一记录每个产物的 SHA-256。之后 verify_delivery.py 和烧录脚本都会复核这些指纹。第 3 步burn_subtitles.py 如何失败即关闭地烧录字幕烧录是全流程中最昂贵的一步要完整重编码视频所以 burn_subtitles.py 采用了先验货、后开工、再验收的三段式开工前检查确认 FFmpeg 带 libass 的subtitles滤镜macOS 优先选ffmpeg-full核读validation.json逐字节比对bilingual.ass的 SHA-256 是否与报告一致用fc-list确认 MiSans 字体已安装——字体缺失时默认直接报错--allow-missing-font才允许字体替换防止 libass 静默换字体导致交付物看起来完成烧录过程默认libx264 CRF 18 / preset slow只烧录这一处重编码源视频保持无损进度按每 5% 打印一次例如烧录 [██████████░░░░░░░░░░] 50% 01:11 / 02:23 0.68x产出后验收用 ffprobe 核对成品——必须是 MP4 H.264、分辨率与输入一致、时长漂移不超过 1%、帧率不变、输入有音频则输出必须也有音频。任何一项不过关直接删除半成品文件并报错绝不留一个可能是坏的 MP4 骗过你。第 4 步verify_delivery.py 的 fail closed 验收verify_delivery.py 是整条流水线的验收员它只认一件事清单声明的交付目标是否真的在磁盘上完成了。按deliverable类型full/video/subs/bilingual-subs逐项核对产物是否存在、非空未完成时给出精确的下一步subtitle_prepare_required还没准备字幕→translation_required列出缺失的翻译批次→render_required缺bilingual.ass→burn_required缺烧录成品退出码约定0完成、3还有未完成阶段、2清单本身有问题。这意味着任务完成只有唯一标准——验收脚本返回 0。中间断电、断网重跑对应脚本即可从断点继续因为每步产物都有哈希背书。让流水线可靠的 5 个设计细节 ️退出码即状态机0/2/3 把完成了 / 坏了 / 还有下一步表达得清清楚楚agent 无需猜测哈希锁 原子写入字幕原文、SRT、清单全部 SHA-256 锁定且用临时文件 os.replace原子落盘不存在写到一半的坏文件只读上下文agent 每次只领一小批翻译任务不读完整清单、不读原始日志上下文小而稳定原文永不修改字幕文本被视为不可信数据翻译只能提交idtranslation原文保持字节级不变fail closed失败即关闭烧录失败删成品、字体缺失拒绝开工、时长漂移报错退出——宁可明确失败也不交付一个看似完成的 MP4。快速开始JZSub 安装步骤与依赖清单依赖很简单Python 3.10、yt-dlp、Deno 2.3YouTube 需要、带 libass 的 FFmpeg/ffprobe以及 MiSans Bold 字体macOS 可brew install yt-dlp ffmpeg-full deno。安装到 Codex推荐 npx 一键安装npx skills add pengchujin/jzsub --skill jzsub -g -a codex -y或者手动安装git clone https://gitcode.com/gh_mirrors/jz/jzsub mkdir -p ~/.codex/skills cp -R jzsub/skills/jzsub ~/.codex/skills/之后在新任务中发送$jzsub 视频链接即可。只想下载视频不翻译告诉 agent 用--deliver video或--deliver subs就行。新手常见问题 FAQ ❓Q平台没有字幕怎么办A不会编造字幕。full目标会直接降级交付视频、MP4 和封面清单中标记video_only_completesubs类目标则会明确报错。Whisper 转写是计划中的能力见 TODO.md需要你显式请求才会启用。QB 站会员画质/登录字幕怎么下载A用--browser-cookies chrome走 Chrome 登录态登录过程静默、Cookie 不外泄。注意 Windows 上 Chrome 127 存在 cookie 读取限制见 TODO.md 的说明。Q竖屏短视频字幕会出屏吗A不会。渲染阶段会读取视频分辨率竖屏自动改用更小的 36/40 字号和 120 单位的更大底部安全区横屏保持 42/46 字号双语两行永不重叠。写在最后JZSub 架构最值得学习的不是它能做什么而是它怎么保证做到4 个脚本、1 份清单、退出码状态机、哈希校验与 fail closed——用最朴素的文件交接换来了一条可续传、可审计、不会假完成的视频交付流水线。想深入细节建议按顺序阅读 SKILL.md 中的 8 条不变式Invariants那是整个设计的宪法。平台行为变化格式、字幕、JS 运行时时可查 platform-notes.md。赞分享AI 技能音视频【免费下载链接】jzsubJZSub — 一条视频链接自动交付最高画质、封面和 GPT 双语字幕 MP4。项目地址https://gitcode.com/gh_mirrors/jz/jzsub点击查看免费下载相关推荐ManimGX架构深度解析一个Python场景如何一步步变成MP4视频ManimGX架构深度解析一个Python场景如何一步步变成MP4视频 ManimGX 是一个用 Manim 的 Python API 编写场景、由 Rust10个CI/CD安全最佳实践构建安全可靠的软件交付流水线在现代软件开发中CI/CD持续集成/持续交付已成为SRE站点可靠性工程团队的核心工具。然而随着软件交付速度的提升安全风险也随之增加。本文将为您介绍教程OpenCore Legacy Patcher 3.0 实战老 Mac 装新 macOS 完整路径OpenCore Legacy Patcher 3.0 实战老 Mac 装新 macOS 完整路径 OpenCore Legacy PatcherOCLP桌面应用操作系统固件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑