用途
open-video 是构建在开源视频模型之上的自主导演层,目标是把一个概念、脚本或创意变成一部完成的影片。它补足了 ComfyUI 缺少的智能体能力:连贯性规划、生成结果评审与修正、多镜头拼接。需要明确的是,它不是视频引擎(引擎是 ComfyUI),也不是模型(MiniMax H3、Wan2.2、LTX 等是后端),而是驱动这些组件的大脑。
主要能力
- 模型无关核心(core/):包含规划器(连贯性设定)、撰写器、校验器、评审循环、拼接器、选择器和参考包构建器。
- 可插拔后端(backends/<model>/):当前基线为 MiniMax H3,官方称其为排名第一的开源模型、在 Arena 上与闭源模型相当、原生支持立体声音频;规划中的后端包括 Wan2.2(物理表现)和 LTX-2.3(速度)。
- 引擎适配器(engines/comfyui/):通过 HTTP API 驱动 ComfyUI。
- 多镜头长片管线:每生成一个镜头后评审、提取末帧,作为下一镜头的首帧进行衔接,最后用 ffmpeg 拼接,并处理跨镜头音频连续性。
- 自动评审:配置 OPEN_VIDEO_VLM_URL、OPEN_VIDEO_VLM_MODEL(以及可选的 OPEN_VIDEO_VLM_KEY)指向任意 OpenAI 兼容视觉端点后,系统会抽取帧,对照提示意图与质量要求自动评分并诊断,输出 PASS / REFINE / FAIL 判定及问题清单。
- 提示词校验:生成前的硬性关卡,检查三字段结构、时长、模式匹配、参考素材数量、切镜时间等。
- 逐镜头回执:保存提示词、种子、设置、评审结论和抽取的帧。
使用方式
启动引擎:先启动 ComfyUI(默认地址 http://127.0.0.1:8188):
cd /path/to/ComfyUI && python main.py --lowvram --use-sage-attention # H3 默认参数
健康检查:curl -s http://127.0.0.1:8188/system_stats,或在 Python 中调用 ComfyUIAdapter(server="http://127.0.0.1:8188").health()。
单镜头生成(Python API):
from open_video.backends.h3.backend import H3Backend
from open_video.core.backend import ShotRequest
from open_video.engines.comfyui.adapter import ComfyUIAdapter
engine = ComfyUIAdapter(server="http://127.0.0.1:8188")
backend = H3Backend()
req = ShotRequest(prompt=<3-field prompt string>, mode="t2v",
width=1344, height=768, duration_s=10.0, seed=0)
result = backend.generate(req, engine=engine) # → ShotResult(ok, video_path, receipt)
命令行:open-video "<concept>" --duration 10 --model h3 --json。超过约 15 秒会触发多镜头 v0 模板路径;15 秒以内的单镜头会原样使用你的提示词,这是 v0.0.1 中可靠的路线。
基线脚本:
- 单镜头:
scripts/h3_agent.py --request "<simple NL>" --duration 5 --width 1344 --height 768(使用--prompt传入完整三字段提示词可获最佳质量;--first-frame/--last-frame用于 I2V/FL2VA)。 - 校验:
scripts/validate_prompt.py(退出码 0 表示无问题,1 表示有问题)。 - 多镜头长片:
scripts/h3_multishot.py --plan library/plans/multishot_demo.json --out output/long_demo.mp4,示例计划位于library/plans/multishot_demo.json,格式为{"shots": [{"prompt_file": "...", "duration": 10, "first_frame": null}, …]}。
提示词结构:H3 使用三字段格式,依次为 instruction line(仅 I2V/FL2VA/L2VA 需要,且后接空行)、integrated_multimodal_description、overall_soundscape、non_diegetic_music。镜头描述需在 Shot 1 先声明风格;后续镜头使用严格递增的切镜时间;对白以 <d>[lang] 原文</d> 表示并保持稳定的说话人编号。详细语法见 backends/h3/PROMPT_GRAMMAR.md。
模式由输入自动推导:T2V/T2VA(纯文本)、I2V/I2VA(一张首帧图)、FL2VA(首尾两张图,多镜头衔接链模式)、L2VA(尾帧参考图)、R2V/Ref2VA(参考视频/音频,用于身份、风格、运动或声音)。
适用场景
- 需要多镜头、跨镜头连贯的长片式内容创作。
- 希望从概念直接得到成片、且需要自动评审与迭代修正的流程。
- 已部署 ComfyUI 和开源视频模型、希望在其上增加规划与衔接能力的用户。
限制
- 单镜头时长硬性限制为 4–15 秒,无法单片超过 15 秒。
- 帧数须落在 17k+5 网格上(24fps),如 5、22、39、56 等,不能传任意帧数。
- 本地分辨率短边上限为 768(原生画布 768×1344),需为 32 的倍数;2K 仅能通过 API 放大,不可本地实现。
- 参考素材上限:图片 ≤9、视频 ≤3、音频 ≤3、合计 ≤12。
- 量化:建议使用 INT8 ConvRot(约 21 GB,RTX 5090 已验证);RTX 5090 上应避免 NVFP4(ComfyUI issue #14157)。其他选项包括 NF4(约 8 GB,显存需求最低)、W4 ConvRot(约 10 GB)、BF16(约 62 GB,仅多 GPU)。
- 音频为 32 kHz 立体声,CFG 蒸馏(无负面提示词、无引导系数)。
- 已知问题:远景人脸失真、ref2va 下 2K 放大失败、ref2va 持续噪点、AMD/Apple Silicon 仅部分支持、提示词元数据被嵌入输出文件。
- v0.0.1 中多分钟成片仍属部分实现;如追求可靠的高质量单镜头,官方建议使用 skill/h3-video。
- 评审在未配置视觉端点环境变量时只是直接通过的占位,此时必须人工检查帧。
扩展后端
添加新模型(如 Wan2.2、LTX)无需修改核心:复制 templates/model_backend.py 到 backends/<model>/backend.py,实现 ModelBackend 抽象类,包括 capabilities、prompt_guide/craft_prompt、constraints、generate/_build_workflow、default_settings、duration_to_length/resolution_for,并补充 workflows/ 下的引擎 JSON 与 PROMPT_GRAMMAR.md。backends/h3/backend.py 是完整的参考实现。