字幕与花字 · Subtitles & Text Effects
该技能属于 ecommerce-video-skills,用于为带货短视频生成字幕与花字。一份 ASS 文件可同时放置四种样式:Sub(底部字幕)、Hook(弹出式大花字)、Tag(左上角贴纸)、CTA(行动号召按钮)。核心脚本为 scripts/make_subs.py。
用途
为短视频生成 ASS/SRT 字幕与花字,涵盖大标题弹出、关键词高亮、贴纸标签、行动号召按钮,并自动避开平台底部/右侧 UI 安全区,用 ffmpeg/libass 烧录。
输入
可接收时间轴 JSON(由 ffmpeg-auto-assemble 自动生成 build/timing.json),也可自行编写。示例结构包含 size 与 cues 数组,每条 cue 含 start、end、text、style 字段,style 可为 Hook、Sub、Tag、CTA。
标记语法
关键词:将关键词换成高亮色(默认暖黄)。
反引号包裹的多行文本:用于步骤类内容展示。
使用步骤
- 每条字幕 ≤ 14 个汉字(1080 宽约一行),超过用 | 拆分。
- 每条只高亮 1 个关键词;花字 ≤ 10 字,只在钩子和关键卖点使用。
- 生成命令:python scripts/make_subs.py build/timing.json -o build/subs.ass --srt build/subs.srt
- 烧录命令:ffmpeg -i in.mp4 -vf "ass=build/subs.ass" -c:a copy out.mp4
- 平台若支持上传字幕文件(如 YouTube / 部分广告平台),同时交付 .srt。
安全区(经验值,以真机为准)
底部约 20%:标题文案、商品卡、购物车,字幕 MarginV 默认 26% 高度。 右侧约 15%:点赞/评论/分享按钮,左右边距 70px,重要信息别贴右边。 顶部约 8%:状态栏/搜索,Hook 放在 13% 高度处。 可用 python skills/platform-spec-export/scripts/export_platform.py video.mp4 --safe-preview safe.png(在仓库根目录运行)叠加检查。
样式定制
编辑 make_subs.py 里的 header():字号按画面高度比例计算(9:16 / 1:1 / 16:9 都适用),颜色为 ASS &HAABBGGRR。字体自动探测(Noto Sans CJK SC / 思源黑体 / 苹方 / 微软雅黑),也可用 --font "思源黑体 CN" 指定。
提示词模板
把口播稿拆成短视频字幕:每条 ≤14 字,超过用 | 分段;每条最多 1 个关键词用 加粗;另外为钩子镜头和最强卖点各写 1 条 ≤10 字的花字。输出 JSON cues(start/end 先留空)。口播稿:{…}
检查清单
字幕不压商品主体、不进底部 20% / 右侧按钮区。 每屏最多 2 行;关键词高亮 ≤ 1 个。 错别字/品牌拼写检查;数字与配音一致。 中文字体已安装(否则会出现方框)。
常见问题与修复
中文显示成方框:安装 CJK 字体(apt install fonts-noto-cjk)或用 --font 指定已安装字体。 No such filter: 'ass':ffmpeg 未编译 libass,换官方/发行版完整版 ffmpeg。 路径含冒号报错(Windows):用相对路径或把 C: 写成 C:;脚本已自动转义。 字幕和声音不同步:用真实配音时长生成 timing(assemble.py 已自动处理)。 字幕太小:调 header() 中 sub = round(h * 0.037) 的系数。