/vfx - 談話頭短片的 VFX 特效包
大型標題會繪製在說話者後方(人物分割),並自動置於頭部上方。完整支援希伯來文 / RTL 由右至左排版。
| 命令 | 作用 |
|---|---|
/vfx strike | 頭部上方出現大字 → 紅線劃掉 → 替換為新詞 |
/vfx echo | 大型標題彈出,伴隨輪廓複製向外爆發 |
/vfx spotlight | 背景變暗,暖光照在說話者身上,並有閃爍霓虹標題 |
/vfx freeze-mark | 凍結畫面 + 閃白 + 推近 + 手繪紅色圓圈圈住臉部(可加標籤) |
/vfx pinned-comment | 頂端彈出「回覆留言」卡片 |
/vfx plan | 一次渲染多種效果 |
/vfx showcase | 將已渲染片段包裝成 Claude-app 風格的 UI:打字命令、「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。 - Showcase(選擇性):
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),檢查(文字可讀、臉部可見、希伯來文由右至左、無裁切),修正後重新渲染。然後以每效果一行的方式交付。