用途:把荒诞解说广告(约38秒、9:16)的各场景 i2v 片段,按实测 VO 窗口重新定时、统一重编码、拼接,并加真实产品图尾卡、旁白/配乐混音与字幕,输出成品 mp4。该能力仅为免费的组装阶段;关键帧、i2v 视频、VO 和音乐等生成工作在上游配方中完成,以文件形式传入。
主要能力:逐场景重定时到实测 VO 窗口(若 VO 较长则 tpad 克隆,否则 trim);每段统一重编码为 libx264 -crf 18 -pix_fmt yuv420p -r 30,避免帧率不一致导致 concat 丢帧;用 concat 解复用器拼接各段与尾卡;build_endcard.py 用 PIL 把真实产品照合成为品牌尾卡(字标、产品线、声明行、CTA 胶囊),compose.py 对尾卡做 1.00→1.04 的 Ken-Burns 推近;VO 总线 loudnorm I=-14 TP=-1.5,音乐总线 loudnorm I=-26 TP=-3 后 volume=0.62,amix normalize=0 混音,成片约 -14.5..-13.5 LUFS,音乐在旁白下避让;make_captions.py 生成 libass .ass 字幕(每场景一条,Arial 64 白字、6px 描边、MarginV=330,起点为 scene_start+0.08s,尾卡不显示),compose.py 最后烧录字幕。
使用方式:脚本为 Python+ffmpeg+PIL,无 bash、无付费调用。先运行 scripts/build_endcard.py 生成尾卡图片,再运行 scripts/make_captions.py 生成字幕,最后运行 scripts/compose.py 输出成片。全部输入通过 --config 指定 config.json 与运行时工作目录,无硬编码路径。config.json 包含 scenes[](id、clip、target_sec、vo、caption、atempo)、end_card(product_image、image、dwell_sec、zoom_to、wordmark、product_line、claims、cta、background)、brand_palette、music_bed、music_volume(默认0.62)、atempo(默认关闭,参考运行 VO 偏慢时用1.3)、captions_ass、caption_style。
适用场景与限制:用于该荒诞解说广告格式的免费迭代组装,可先免费反复剪片,只重跑有问题的付费片段。限制:不执行任何付费生成调用;尾卡必须使用真实产品照合成,禁止 AI 卡通瓶;所有品牌文字(字标、声明、CTA)须用 PIL 绘制,AI 只画世界与角色;target_sec 必须是实测 VO 时长;拼接前必须统一 30fps 重编码;尾卡不叠字幕;完成后需 QC 成品(剪影、单一旁白、母题出现≥3次、无 AI 品牌文字、真实产品尾卡、时长与窗口总和误差在 ±0.1 秒内)。