/vfx - 讲话人物视频特效包
大标题会绘制在说话者身后(通过人物分割实现)并自动放置在头部上方。完全支持希伯来语/RTL 书写方向。
| 命令 | 功能说明 |
|---|---|
/vfx strike | 头部上方显示大字 -> 红线划过 -> 替换为新词 |
/vfx echo | 大标题弹出,并伴随轮廓回声副本爆发散开 |
/vfx spotlight | 背景变暗,说话者身上打出暖色灯光,加上闪烁霓虹标题 |
/vfx freeze-mark | 冻结画面 + 闪光 + 放大 + 脸部周围手绘红圈(可选标签) |
/vfx pinned-comment | 顶部弹出“回复评论”卡片 |
/vfx plan | 在一次渲染中组合多个特效 |
/vfx showcase | 将渲染好的剪辑包装成 Claude-app 界面:带打字动画的命令、“Edited with /vfx X” 标题、打字音效+特效音效、结尾行动号召按钮 |
输入要求
- 视频(竖屏 9:16 讲话人物视频效果最佳),以及每个特效所需的精确文字和时间点。
切勿自行编造用户未提供的文字;如果缺失信息请询问一次。时间点可以来自触发词(参见
words)。 - 输出文件保存在源文件旁边,命名为
<原文件名>_vfx.mp4。
一次性设置
- 脚本位于本文件旁边的
scripts/vfx.py和scripts/compose.py(请使用完整路径调用它们)。 - 需要
ffmpeg、Node/npm(字体和分割模型会通过npm pack自动下载到 ~/.cache/vfx)以及pip install numpy pillow fonttools python-bidi ai-edge-litert "opencv-python-headless<5"。 可选安装:pip install rembg onnxruntime(可提供更干净的发丝边缘,自动使用),pip install faster-whisper(用于获取单词时间点)。
工作流程
- 使用
ffprobe检查剪辑。如果头部上方空间不足,标题会自动降到底部三分之一处;建议重新构图。 - 从语音获取时间点:
python3 scripts/vfx.py words clip.mp4 --lang he-> 输出行格式:{word,start,end}。 - 渲染:
Strike 变体(仅在 plan.json 中):python3 scripts/vfx.py strike in.mp4 out.mp4 --text "משעמם" --swap "מרתק" --at 2.1 --strike-at 2.8 --swap-at 3.3 python3 scripts/vfx.py echo in.mp4 out.mp4 --text "IN-APP BROWSER" --at 5 --dur 2.5 python3 scripts/vfx.py spotlight in.mp4 out.mp4 --text "AI SLOP" --at 13 --dur 2.5 python3 scripts/vfx.py freeze-mark in.mp4 out.mp4 --at 9.5 --hold 1.5 --label "תסתכלו כאן" python3 scripts/vfx.py pinned-comment in.mp4 out.mp4 --user someone --text "..." --at 17 --dur 4 python3 scripts/vfx.py plan in.mp4 out.mp4 plan.json # [{"fx":"strike","text":..,"at":..}, ...]"front_first": true将第一个词放在人脸上方(在说话者前面),而替换词放在头部后方(例如“מלפנים” -> “מאחור”);"overlap": 0.45可让更多内容隐藏在头部后面。 Echo 变体(仅在 plan.json 中):"linger": true让轮廓副本停留在屏幕上(微微呼吸动画)直到特效结束。 选项:--y(固定标题高度,占画幅的百分比;如果头部遮挡文字可调高此值),--color, freeze-mark 的--x --y --r用于圈出其他对象,--seg fast|quality,--crf。 - 展示模式(可选):
python3 scripts/compose.py fx.mp4 final.mp4 schedule.json{"intro": 2.4, "cta": 3.2, "cmds": [{"cmd": "strike", "send": 0.0, "desc": "说出来,划掉它,替换它", "sfx": [["swish", 0.9], ["pop", 1.5]]}, {"cmd": "echo", "send": 2.75, "desc": "大标题,回声爆发", "sfx": [["boom", 2.8]]}], "cta_lines": ["想要这个技能包", "5 个命令的特效?"], "cta_button": "回复 \"技能\""}send= 命令发送时的剪辑时间点(将每个特效的at设置在该时间点后约 0.05 秒)。第一个命令会在介绍部分被逐字打出。 音效:key, send, whoosh, swish, pop, boom, shutter, power, ding, chime。 - 验证:为每个特效截取 2-3 帧(
ffmpeg -ss T -i out.mp4 -frames:v 1 f.png),检查它们(文字可读,人脸可见,希伯来语从右到左正确,无被裁切),如有问题修改后重新渲染。然后每个特效给出最终交付物。