以图书馆阅读推广短视频这类场景为例,这类 AI 视频产线的需求很具体:
这条产线的最终形态:提示词工程 → 参考图/参考视频分析 → ComfyUI H3 图生视频 → ffmpeg 拼片音画对齐 → 成片,中间所有重复步骤由 WorkBuddy 脚本化、Skill 化。
单卡 32GB 是硬约束,H3(长视频人物替换/动作迁移)和生图、TTS 不能挤一个进程,所以跑双工作区:
工作区 | 路径/端口 | 职责 | 关键组件 |
|---|---|---|---|
主工作区 | 本地 ComfyUI,默认端口 | H3 图生视频 + Wan2.1 14B | Goohai 兼容包(GH 变体节点 MiniMaxH3DualClockT8GH) |
副工作区 | E:\minimaxH3_aisee\ComfyUI,端口 8199 | 配音 + 深度估计实验 | IndexTTS-2.5(小珠光 Comfyui-indextts25-xzg 节点)、Depth Anything v3 |
主工作区启动参数(显存吃紧时的关键组合):
python main.py --auto-launch --preview-method auto \
--use-sage-attention --disable-smart-memory --cuda-malloc--use-sage-attention:注意力量化,长序列下省出一截显存;--disable-smart-memory:关闭智能显存管理,峰值更可预测;--cuda-malloc:原生分配器,配合下面的 pagefile 设置防 OOM 崩溃。系统侧还有一招:D 盘 pagefile 初始 32GB / 上限 64GB。ComfyUI、Wan2.1 14B、DaVinci Resolve、剪映、Adobe 同时开时,物理内存 96GB 也会见底,pagefile 是最后一道防线。
H3 走 ref2va(参考视频动作迁移)产线,单段 10–15s @ 24fps,面向群舞和动作迁移场景。工作流里三个要点:
MiniMaxH3DualClockT8GH(双时钟 T8),长序列时间戳控制比原版稳;build_kids_bg.py 定型)。换背景只改 Picture 3,角色不动,一期视频的背景就这样批量换;h3-prompt-builder Skill,不再每次现编。UI 里拖节点是给调流程用的,量产必须走 ComfyUI API。把提交流程沉淀成脚本,核心就三段:改 prompt → 提交 → 轮询下载。
import json, time, uuid, requests, shutil
BASE = "http://127.0.0.1:8188"
CLIENT_ID = str(uuid.uuid4())
def submit(workflow: dict, prompt_text: str):
# 1. 定位 CLIPTextEncode 节点,替换提示词
for node in workflow.values():
if node.get("class_type") == "CLIPTextEncode":
node["inputs"]["text"] = prompt_text
# 2. 提交到队列
r = requests.post(f"{BASE}/prompt", json={
"prompt": workflow, "client_id": CLIENT_ID})
r.raise_for_status()
return r.json()["prompt_id"]
def wait(prompt_id: str, timeout=1800):
# 3. 轮询历史,拿到输出文件
t0 = time.time()
while time.time() - t0 < timeout:
h = requests.get(f"{BASE}/history/{prompt_id}").json()
if prompt_id in h:
for nid, out in h[prompt_id]["outputs"].items():
for f in out.get("gifs", []) + out.get("images", []):
src = f"{f['subfolder']}/{f['filename']}"
dst = f"./out/{prompt_id}_{f['filename']}"
shutil.copy(src, dst)
return dst
time.sleep(10)
raise TimeoutError(prompt_id)实测:单段 10s 渲染 9 分 32 秒,VRAM 峰值 33.2GB——已经超过 32GB 物理显存,靠的就是 pagefile + --disable-smart-memory 的组合才没崩。批量化提交时记得串行,别并发,显存和 pagefile 都扛不住两路 H3。
多段拼片用 ffmpeg xfade 做转场链,音频处理是最大的坑,说清楚:
音频不能顺序 concat,必须按每段在成片里的绝对起点 adelay 定位后 amix。 顺序拼会凭空长出转场重叠的时长——实测 31.2 秒的片子拼完变 36.2 秒,口型/鼓点全错位。
段绝对起点 = Σ(前段时长) − Σ(前面转场时长)。
# 第 k 段音频的绝对起点(毫秒)
abs_start_ms=$(( (sum_prev_durations - sum_prev_transitions) * 1000 ))
ffmpeg -i seg_k.mp4 -i seg_k_audio.wav -filter_complex \
"[1:a]adelay=${abs_start_ms}|${abs_start_ms}[a${k}]" ...
# 所有 [a1][a2]...[aN] 一起 amix,再与 concat 后的视频流合流另一个小坑:drawtext 的 fontfile=/textfile= 相对路径是相对 ffmpeg 进程 cwd,subprocess 调用必须显式传 cwd=,字体路径写绝对路径(fontfile='C\:/Windows/Fonts/msyh.ttc')。
产线里重复的部分全部交给了 WorkBuddy,两种形态:
1. 参数化脚本(一次性任务脚本化):API 提交、拼片、批量换背景(build_kids_bg.py:换背景只改 Picture 3)。
2. Skill 沉淀(重复流程方法论化):
Skill | 作用 |
|---|---|
douyin-video-prompt-extract | 反推参考视频的提示词与结构——先分析再产出 |
h3-prompt-builder / h3-prompt-writing | 动作序列提示词工程 |
king-hu-wuxia / iwai-aesthetic-prompts | 影像美学风格库(雾气、留白;赛璐璐) |
comfyui-h3-depth-ref2va | H3 深度参考 + ref2va 组合工艺 |
comfyui-vram-oom-debug | 显存崩溃排查 SOP |
排障时常见的几个坑:副工作区 venv 可能是坏链接,真实 Python 可能在其他目录(例如 E:\minimaxH3_aisee\python);jieba 要升级 setuptools 84.0.0;openai-whisper 用 --no-deps 装避免锁死 tensorboard 2.19.0——这些坑建议全部记进 Skill,下次遇到直接调 SOP,不用重新查。
还有个细节:工作流从 UI 改成 API 批量跑时,情感节点的 mode. 前缀、verify_hashes 布尔字段在 JSON 里和 UI 显示不一致,写了个 UI→API 转换脚本专门处理,这类"最后一公里"脚本最值钱。
这条产线的核心不是某个模型,而是把每一期视频的生产过程变成可复现的工艺:
照这套工艺跑通后,可把每一步固化为模板,后续新片只需换参考图与提示词,从立项到成片能压到小时级。欢迎交流,评论区见。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。