首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用 WorkBuddy 把 ComfyUI H3 视频流水线沉淀成 Skill:一条可复现的 AI 短片产线

用 WorkBuddy 把 ComfyUI H3 视频流水线沉淀成 Skill:一条可复现的 AI 短片产线

原创
作者头像
用户12816335
发布于 2026-10-13 11:24:59
发布于 2026-10-13 11:24:59
130
举报

一、产线定位:图书馆阅读推广短视频

以图书馆阅读推广短视频这类场景为例,这类 AI 视频产线的需求很具体:

  • 每期 1–3 分钟,多镜头,人物/场景要可控;
  • 动作类镜头(结印、打斗、舞蹈迁移)单段 10–15 秒、24fps;
  • 全流程要可复现——同一套参数,换参考图就能出新片,否则批量产出根本做不过来。

这条产线的最终形态:提示词工程 → 参考图/参考视频分析 → 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

主工作区启动参数(显存吃紧时的关键组合):

代码语言:javascript
复制
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 工作流的关键结构

H3 走 ref2va(参考视频动作迁移)产线,单段 10–15s @ 24fps,面向群舞和动作迁移场景。工作流里三个要点:

  1. GH 变体节点:用 Goohai 兼容包的 MiniMaxH3DualClockT8GH(双时钟 T8),长序列时间戳控制比原版稳;
  2. 三参考图配方:角色 1 + 角色 2 + 背景图(脚本 build_kids_bg.py 定型)。换背景只改 Picture 3,角色不动,一期视频的背景就这样批量换;
  3. 提示词结构:动作序列按"主体 + 动作 + 镜头运动 + 氛围"四段式写,打斗/动作序列拆到 10 秒粒度。提示词工程已沉淀成 h3-prompt-builder Skill,不再每次现编。

四、API 提交:不让手点,全脚本化

UI 里拖节点是给调流程用的,量产必须走 ComfyUI API。把提交流程沉淀成脚本,核心就三段:改 prompt → 提交 → 轮询下载。

代码语言:javascript
复制
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。

五、音画对齐:xfade + adelay 的坑

多段拼片用 ffmpeg xfade 做转场链,音频处理是最大的坑,说清楚:

音频不能顺序 concat,必须按每段在成片里的绝对起点 adelay 定位后 amix。 顺序拼会凭空长出转场重叠的时长——实测 31.2 秒的片子拼完变 36.2 秒,口型/鼓点全错位。

段绝对起点 = Σ(前段时长) − Σ(前面转场时长)。

代码语言:javascript
复制
# 第 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 在产线里的角色

产线里重复的部分全部交给了 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 转换脚本专门处理,这类"最后一公里"脚本最值钱。

七、小结

这条产线的核心不是某个模型,而是把每一期视频的生产过程变成可复现的工艺:

  1. 双工作区隔离重负载(H3 / TTS 分开),启动参数 + pagefile 保稳定;
  2. 三参考图配方 + ref2va,换背景不换角色;
  3. 全 API 脚本化提交,串行批跑;
  4. 音画对齐认准"绝对起点 adelay + amix";
  5. 所有重复流程沉淀成 WorkBuddy Skill,越用越省。

照这套工艺跑通后,可把每一步固化为模板,后续新片只需换参考图与提示词,从立项到成片能压到小时级。欢迎交流,评论区见。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、产线定位:图书馆阅读推广短视频
  • 二、硬件与双工作区架构
  • 三、H3 工作流的关键结构
  • 四、API 提交:不让手点,全脚本化
  • 五、音画对齐:xfade + adelay 的坑
  • 六、WorkBuddy 在产线里的角色
  • 七、小结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档