SuperAPI AI 工具集

edits-hook-overlay

设计与创作

查看项目

更新于 10-29 10:21

技能介绍

用途:把 Instagram Edits(IG 编辑器)中的原生文字钩子外观——它的字体、逐行圆角框、描边与抗锯齿——批量放到多个视频上,而手机端只需要操作一个 6 秒的模板项目。

主要能力:

  1. 在手机上批量渲染钩子文字。脚本 edits_hooks.py 针对每个钩子文本打开模板、替换文字、导出并下载,从相机胶卷拉取为 hook-NN.mp4,并写出 hook-manifest.json,约每个钩子 40 秒;不会分享或发布,模板会保留最后一个钩子的文字。
  2. 提取文字图层。extract_overlay.py 对黑白双底片段的各半边做多帧中值,抵消 HEVC 噪声,输出整帧 RGBA PNG、裁剪后的 -sprite.png 和含 bbox 与校验项的 .json。为恢复 Instagram 自身的软边缘与半透明,采用差分抠图而非遮罩或色度键:黑底满足 black = a·C,白底满足 white = a·C + (1−a),由此 a = 1 − (white − black),C = black / a。两个底片必须显示相同且静态的文字。
  3. 将图层烧录到视频。apply_overlay.py 按视频宽度与导出宽度的比例缩放,水平居中,用 --center-y 控制文字框中心在画面高度中的比例,用 --start/--end 控制出现时间,用 --trim 截取;可一次处理多个文件。
  4. HDR 处理。HLG 手机素材保持原有像素不被改动,文字图层经 SDR709→HLG2020 LUT(make_hlg_lut.py 生成到缓存目录,--hlg-white 默认 0.91)叠加,输出 HEVC Main10 HLG 并保留源标签;SDR 源输出 H.264,音频直接拷贝。

使用方式:

  • 环境要求:带 Edits 的 iPhone 通过 USB 连接,运行 WebDriverAgent 并端口转发(--wda,默认 http://localhost:8100),屏幕解锁;pymobiledevice3(--pmd3 或 PMD3=)用于列出并拉取相机胶卷;ffmpeg/ffprobe;Python 3 加 numpy 与 Pillow。
  • 一次性手工制作模板:用 scripts/make_plate.sh plate-bw.mp4 生成黑白双底片(黑 3 秒、白 3 秒)并传入手机相册;在 Edits 中新建项目加入该底片,添加文字并设置样式,把文字片段拉伸覆盖整个底片(新文字默认只有 3 秒,只盖住黑底一半),Animation 设为无,重命名项目(每种样式一个模板)。
  • 步骤一:python3 scripts/edits_hooks.py --template "HOOK TEMPLATE black box" --out <project>/exports "..." 按钩子文本批量导出。换行由 \n 指定;全大写更接近原生信息流标题;钩子文案属于公开文案,建议先做文案质检再渲染。
  • 步骤二:python3 scripts/extract_overlay.py <project>/exports/hook-01.mp4 <project>/overlays --name hook-01 提取图层,并检查 recomposite_mean_abs_err_8bit(约 0.01 正常,大于 1 说明底片或文字不一致)与 motion_between_black_frames(大于 3 说明文字有动画,需修模板)。
  • 步骤三:python3 scripts/apply_overlay.py <project>/overlays/hook-01-sprite.png <project>/out video1.mov video2.mp4 … [--center-y 0.165] [--start 0] [--end 3.2] [--trim 8]。
  • 步骤四:在审阅者所用介质上逐帧检查,HDR 素材需用 AVFoundation/Apple 的 SDR 取帧加色彩管理转换,不要直接用 ffmpeg 导出 PNG;框外区域应与源片基本一致;用 video-qa 质检后在 video-review-canvas 交付。

适用场景:需要把同一钩子批量套到多条视频上;每条视频使用不同钩子(一次 edits_hooks.py 调用传全部文本,再按序配对);新增样式(红框、白框、描边)就再建一个模板项目。

限制与注意事项:需要 iPhone、Edits、WebDriverAgent 与 USB 连接;文本片段必须覆盖黑白两个底片,且不能有动画,否则提取会报错;打字过快可能导致 Edits 文本框丢字,需把 WDA 打字频率控制在约 6;LUT 路径含撇号或冒号会破坏 ffmpeg 滤镜解析,脚本会在缓存 LUT 旁以文件名引用;模板名需唯一且网格需回到顶部,脚本会点状态栏先上滚;出现新的 Edits 对话框时等待逻辑需报出缺失的 id。无手机时,步骤二、三可对任何手工制作的静态文字双底片导出使用。HDR 素材不要走 8 位/SDR 路径,也不要对基础画面做色调映射。