YouTube 视频字幕烧录器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_9e3b7930/youtube-subtitle-burner。
技能介绍
要解决什么问题
把 YouTube 英文视频做成带中文硬字幕的成片时,常见坑有三类:用 -f best 只下到 360p;用 VTT 解析字幕会因 rolling cues 丢掉段首,画面字幕整体晚 2 秒以上;用 ffmpeg subtitles/ass 在部分环境(如 macOS + ffmpeg 8.x)不渲染,或 PIL 直绘出现锯齿、逐帧写 raw 临时文件把磁盘撑爆。
技能如何工作
整条链路是:下载 → 时间轴 → 翻译 → 烧录。
- 下载:用
bestvideo+bestaudio分流合并,避免误选低清单流。 - 时间轴(关键):字幕必须用
--sub-format json3,从 word-level 的tOffsetMs聚合成句段 JSON(start/end/text_zh_src);按句号/问号/感叹号或约 5 秒间隔分组,首段从 0 秒起算。 - 翻译:批量调用 LLM(如每批 20 条),译文短、适合字幕(约 ≤20 字/段),去掉
[music]等标签,专有名词保留英文。 - 烧录:不用 ffmpeg 字幕滤镜,而用 PIL 逐帧绘制黄底黑字条;2× 超采样(大图渲染 + LANCZOS 缩回)减轻锯齿;流式管道(decode → PIL → encode)避免 1080p 长片产生数十 GB 临时 raw 文件。横竖屏字号、边距等参数在 SKILL 中有对照表;烧录前可先做 10~15 秒预览。
适用边界与注意点
- 大陆网络需为
yt-dlp配置可用代理(如 Clash Verge fake-ip 场景要显式--proxy)。 - 字体依赖 macOS 路径
STHeiti Medium.ttc(PIL 下 PingFang 不可用时的替代方案)。 - 同步问题几乎都可追溯到 VTT 误用;磁盘问题来自 非流式 的逐帧落盘方案。
使用场景
- 从 YouTube 下载英文教程或访谈,提取 json3 字幕时间轴并译成中文,烧录为带黄底黑字硬字幕的 MP4 供内部分享。
- 官方字幕用 VTT 导入后片头总慢两秒时,改用 json3 词级时间戳聚句,再批量 LLM 翻译后走 PIL 烧录对齐画面。
- 竖屏 1080×1920 素材需要加大底部边距的中文字幕,先导出 10~15 秒预览确认字号与配色,再跑完整流式烧录。
- macOS 上 ffmpeg subtitles 滤镜不渲染时,用 bestvideo+bestaudio 下载源片,PIL 2× 超采样逐帧绘制字幕避免锯齿。
适合人员
- 负责把国外 YouTube 课程片段做成中文硬字幕成片、要在团队内反复复现下载与烧录流程的课程运营
- 在大陆用 Clash 等代理跑 yt-dlp、想把英文 vlog 转成中文网盘或社群可播素材的独立视频创作者
- 熟悉 Python 与 uv 跑 PEP 723 脚本、需要流式 decode→PIL→encode、避免 1080p 长片写满磁盘的工程师
- 只负责把 json 里 text_zh_src 批量译成 text_zh、再交给 burn 脚本合成画面的字幕翻译协作者