OpenMontage 实战:基于 LTX-2.3 22B 的 AI 视频生成工具使用指南
【免费下载链接】OpenMontageWorld's first open-source, agentic video production system. 12 production pipelines, 100+ tools, 700+ agent skill and production-knowledge files. Turn your AI coding assistant into a full video production studio.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMontage
本文聚焦 OpenMontage 视频生产体系中基于 Lightricks LTX-2.3 22B DiT 模型的视频生成能力,讲解文本生视频(text-to-video)、图生视频(image-to-video)的命令行用法、全部核心参数、提示词工程规范以及 Modal 云端部署流程。读完本文,你将能够把 LTX-2 作为 b-roll 素材、动画背景、动态肖像与片头片尾的生成引擎,无缝接入 OpenMontage 的剪辑、配音与合成流水线。
快速上手:两条命令生成你的第一段视频
LTX-2.3 是 OpenMontage 工具链中一个 22B 参数的 DiT 视频生成模型,可运行在 Modal 云 GPU(A100-80GB)上,也支持本地 GPU 推理。使用时仅需在.env中配置MODAL_LTX2_ENDPOINT_URL。以下命令来自技能文档 .claude/skills/ltx2/SKILL.md 的 Quick Reference,可直接复制运行:
# 文生视频:一段电影感的日落海景 python3 tools/ltx2.py --prompt "A sunset over the ocean, golden light on waves, cinematic" --output sunset.mp4 # 图生视频:为静态图片添加缓慢镜头漂移 python3 tools/ltx2.py --prompt "Gentle camera drift, soft ambient motion" --input photo.jpg --output animated.mp4 # 自定义分辨率与时长:16:9 宽屏、约 6.7 秒 python3 tools/ltx2.py --prompt "..." --width 1024 --height 576 --num-frames 161 --output wide.mp4 # 快速模式:减少采样步数,缩短出片时间 python3 tools/ltx2.py --prompt "..." --quality fast --output quick.mp4 # 可复现输出:固定随机种子 python3 tools/ltx2.py --prompt "..." --seed 42 --output reproducible.mp4其中tools/ltx2.py是面向 Agent 与开发者暴露的 CLI 入口,其底层调用关系与 OpenMontage 工具注册表中的ltx_video_modal/ltx_video_local两个工具一一对应,下文会从源码层面展开说明。
参数详解:每个命令行开关的含义与约束
技能文档定义了完整的参数表,实际使用中每个参数都会透传到底层推理请求,理解约束条件可以避免大量失败重试:
| 参数 | 默认值 | 说明 |
|---|---|---|
--prompt | (必填) | 视频内容文本描述 |
--input | - | 图生视频的输入图片路径 |
--width | 768 | 视频宽度(必须能被 64 整除) |
--height | 512 | 视频高度(必须能被 64 整除) |
--num-frames | 121 | 帧数,必须满足(n-1) % 8 == 0 |
--fps | 24 | 帧率 |
--quality | standard | standard(30 步)或fast(15 步) |
--steps | 30 | 直接覆盖推理步数 |
--seed | 随机 | 随机种子,用于结果复现 |
--output | auto | 输出文件路径 |
--negative-prompt | 合理默认 | 指定需要规避的内容 |
宽度与高度必须能被 64 整除,这是由 LTX VAE 的空间压缩倍数决定的;帧数约束则来自模型的时间维压缩结构。从源码 tools/video/_shared.py 可以看到,generate_ltx_modal_video会在请求发出前对帧数做归一化修正——若(num_frames - 1) % 8 != 0,会自动回退到最近的合法值((num_frames - 1) // 8) * 8 + 1,避免非法参数打到 Modal 端点。
合法帧数速查表
帧数必须满足(n - 1) % 8 == 0,各档位对应的时长如下(24fps 下计算):
| 帧数 | 约时长 | 典型用途 |
|---|---|---|
| 25 | ~1s | 极短视频片段 |
| 49 | ~2s | 动态背景微动 |
| 73 | ~3s | 短 b-roll |
| 97 | ~4s | 常规转场素材 |
| 121 | ~5s(默认) | 标准片段 |
| 161 | ~6.7s | 较长镜头 |
| 193 | ~8s(实际最长) | 单片段上限 |
源码 tools/video/_shared.py 中维护了LTX2_FRAME_COUNTS映射表,generate_ltx_modal_video支持通过duration_hint(如"5s")直接选择档位。
常用分辨率
| 分辨率 | 比例 | 说明 |
|---|---|---|
| 768x512 | 3:2 | 默认,质量与速度的平衡点 |
| 512x512 | 1:1 | 方形,生成最快 |
| 1024x576 | 16:9 | 宽屏横屏 |
| 576x1024 | 9:16 | 竖屏/短视频 |
源码中的 aspect-ratio 路由逻辑与此一致:当width/height未显式指定时,generate_ltx_modal_video会按aspect_ratio(16:9 / 9:16 / 1:1)分别映射到 1024x576、576x1024、512x512(见 tools/video/_shared.py)。
提示词工程:让 LTX-2 听懂电影语言
LTX-2 对电影化的场景描述响应最佳。技能文档建议从以下维度组织提示词,且总长度控制在 200 词以内:
- 镜头(Camera):"Slow dolly forward"(慢推)、"Aerial drone shot"(无人机航拍)、"Tracking shot"(跟拍)、"Static wide angle"(静态广角)
- 光线(Lighting):"Golden hour"(黄金时刻)、"Cinematic lighting"(电影布光)、"Neon-lit"(霓虹)、"Soft diffused light"(柔和漫射光)
- 运动(Motion):"Timelapse of..."(延时)、"Slow motion"(慢动作)、"Gentle camera drift"(轻微镜头漂移)、"Gradually transitions"(渐进过渡)
- 风格(Style):"Shot on 35mm film"(35mm 胶片)、"Documentary style"(纪录片风格)、"Clean minimal aesthetic"(干净极简美学)
- 负面提示(Negative):模型内部总是隐式规避 "worst quality, blurry, jittery, watermark, text, logo"
仓库中另有专门的提示词指南 skills/creative/prompting/ltx-prompting.md,它给出了更结构化的 LTX 专属六要素框架,与技能文档互补:
- 确立镜头——使用匹配类型的电影摄影术语
- 设定场景——光线、色调、纹理、氛围
- 描述动作——从始至终的自然动作序列
- 定义角色——用身体特征(年龄、发型、服装)而非抽象标签
- 镜头运动——说明运动方式与时机,并描述运动之后出现的内容;注意
dolly(推拉,平移机位)与zoom(变焦,仅改变焦距)属于不同运动族,不可混用 - 描述音频——环境声、音乐、语音或歌唱
严格的"静态镜头"规则
如果提示词中出现 "static camera",则该镜头必须完全没有运动、没有焦点变化、没有变焦。LTX 会按字面意思理解 "static"——其后若再追加任何运动动词,要么被忽略,要么产生镜头自相矛盾的画面故障。请二选一:要么声明静态,要么只声明单一具名运动。
运动后的结果描述
LTX 渲染镜头运动时,描述运动"揭示的结果"比描述运动本身更准确:
- ❌ 不要写:"Camera pans left"
- ✅ 应该写:"Camera pans left to reveal a bustling market square"(镜头左摇,显露出繁忙的集市广场)
音频提示(LTX-2 独有能力)
LTX-2 会同步生成与画面匹配的环境音频,可用具体描述词引导:
| 类别 | 示例 |
|---|---|
| 环境声 | "coffeeshop noise"(咖啡馆嘈杂声)、"wind and rain"(风雨声)、"forest with birdsong"(林间鸟鸣) |
| 人声风格 | "energetic announcer"(激昂播音员)、"resonant voice with gravitas"(浑厚庄重嗓音)、"childlike curiosity"(童真好奇) |
| 音量 | "whisper"(低语)、"mutter"(嘀咕)、"shout"(呼喊)、"scream"(尖叫) |
| 音乐 | "soft acoustic guitar"(轻柔木吉他)、"electronic beat building"(渐进电子节拍) |
对白需要放在引号中,如The narrator says: "Welcome to the future.",并可指定语言/口音,如speaks in British English with a warm tone。
优质提示词示例
# 氛围感 b-roll "Aerial drone shot slowly flying over turquoise ocean waves breaking on white sand, golden hour sunlight, cinematic" # 产品/科技场景 "Close-up of hands typing on a mechanical keyboard, shallow depth of field, soft desk lamp lighting, cozy atmosphere" # 抽象背景 "Dark moody abstract background with flowing blue light streaks, subtle geometric grid, bokeh particles floating, cinematic tech atmosphere" # 动态肖像 "Professional headshot, subtle natural head movement, confident warm expression, studio lighting, shallow depth of field" # 幻灯片/截图动画 "Gentle subtle particle effects floating across a presentation slide, soft ambient light shifts, very slight camera drift"应避免的提示词模式
- 过于模糊:"A cool video"——模型无法据此决策画面构成
- 竞争性想法过多:"A cat riding a skateboard while juggling fire on the moon during a thunderstorm"——多主体+复杂物理会导致画面失焦
- 要求渲染文字/UI:"A website showing the text 'Welcome to our platform'"——模型无法可靠渲染可读文字
ltx-prompting.md进一步提示:超过约 80 词的提示词会使 LTX-2 质量下降,请精选最重要的 5–6 个要素;避免描述内部情绪状态("sad""confused"),改用视觉线索(泪水、佝偻姿态、皱眉);避免复杂物理(爆炸、飞溅);不要堆叠互相冲突的光线描述。
视频生产中的典型应用场景
技能文档给出了四个可直接套用的生产用例:
1. 旁白间的 b-roll 转场镜头
生成 5 秒氛围镜头,穿插在解说场景之间:
python3 tools/ltx2.py --prompt "Futuristic holographic interface, glowing data visualizations, clean workspace, cinematic" --output broll_tech.mp4 python3 tools/ltx2.py --prompt "Aerial view of European city at golden hour, modern architecture" --output broll_europe.mp42. 幻灯片动画背景
把静态幻灯片截图喂给模型,叠加轻微粒子与光效:
python3 tools/ltx2.py --prompt "Gentle particle effects, soft ambient light shifts, very slight camera drift" --input slide.png --output animated_slide.mp43. 动态肖像
让静止的头部特写活起来:
python3 tools/ltx2.py --prompt "Subtle natural head movement, warm expression, professional lighting" --input headshot.png --output animated_portrait.mp44. 品牌片头/片尾
为标题卡生成抽象动态背景(注意追加 "no text" 避免模型生成文字):
python3 tools/ltx2.py --prompt "Dark moody background with flowing blue and coral light streaks, bokeh particles, cinematic tech atmosphere, no text" --output intro_bg.mp4与其他工具的组合工作流
LTX-2 产出的是原始素材片段,需与 OpenMontage 工具链的其余部分组合:
| 工作流 | 工具链 |
|---|---|
| 生成片段 → 超分 | ltx2.py→upscale.py |
| 生成片段 → 接入 Remotion | ltx2.py→ 在 composition 中作为<OffthreadVideo>使用 |
| 生成图片 → 动画化 | flux2.py→ltx2.py --input |
| 生成片段 → 抽取音频 | ltx2.py→ffmpeg -i clip.mp4 -vn audio.wav |
| 生成片段 → 叠加配音 | ltx2.py→ 与qwen3_tts.py输出混音 |
关于生成片段如何接入 Remotion 合成,可参考 remotion-composer/src/CinematicRenderer.tsx;关于多片段拼接与音频混录,可查阅 skills/creative/video-stitching.md 与 tools/audio/audio_mixer.py。
技术规格与已知限制
运行参数
技能文档给出的参考规格(以 Modal A100-80GB 运行为前提):
- 模型:LTX-2.3 22B DiT(Lightricks),bf16 精度
- GPU:Modal 上的 A100-80GB(约 $4.68/小时)
- 推理耗时:约 2.5 分钟/片段(768x512、121 帧、30 步)
- 成本:约 $0.20–0.25/5 秒片段
- 冷启动:约 60–90 秒(需加载约 55GB 权重)
- 输出:H.264 MP4,自带同步环境音,24fps
- 单片段最长:约 8 秒(193 帧)
已知限制(务必在选型前评估)
- 训练数据伪影:约 30% 的生成结果可能带训练数据中的水印/文字,换用不同
--seed重跑即可 - 文字渲染:无法在视频中可靠生成可读文字,请用 Remotion 叠加层代替
- 时长上限:单片段约 8 秒,更长内容需要拼接
- 音频类型:生成的音频仅为环境/氛围音,语音与音乐需使用专门的配音与音乐工具
- 许可:Community License——年收入低于 $1000 万免费,超出需商业授权
在工具注册表中,这两个工具的声明信息也印证了上述约束:ltx_video_modal的stability为 EXPERIMENTAL、determinism为 STOCHASTIC、best_for标注为"自托管云 GPU 渲染,不依赖本地工作站"(见 tools/video/ltx_video_modal.py),并将ltx_video_local、wan_video、hunyuan_video、cogvideo_video列为回退工具;ltx_video_local则定位为"已围绕 LTX 提示词调优的本地工作流"(见 tools/video/ltx_video_local.py)。
部署与设置:从零到可用的四步
技能文档给出了完整的 Modal 部署流程:
# 1. 创建 HuggingFace Modal 密钥(一次性操作) modal secret create huggingface-token HF_TOKEN=hf_your_token # 2. 部署(下载约 55GB 权重,约 10 分钟) modal deploy docker/modal-ltx2/app.py # 3. 将端点 URL 写入 .env echo "MODAL_LTX2_ENDPOINT_URL=https://yourname--video-toolkit-ltx2-ltx2-generate.modal.run" >> .env # 4. 测试 python3 tools/ltx2.py --prompt "A candle flickering on a dark table, cinematic" --output test.mp4重要前提:HuggingFace token 需要 read-access 权限;部署前需接受 Gemma 3 许可协议(google/gemma-3-12b-it-qat-q4_0-unquantized);未认证的下载会受到严重速率限制。
备选:本地 GPU 推理路径
除 Modal 云端外,OpenMontage 还提供本地 LTX 推理工具ltx_video_local。从 tools/video/_shared.py 与 docs/PROVIDERS.md 看,其启用条件为:
export VIDEO_GEN_LOCAL_ENABLED=true uv pip install diffusers transformers accelerate torch pillow requests本地变体ltx2-local的模型为Lightricks/LTX-2,默认 768x512、121 帧、30fps,需约 12GB VRAM(见 tools/video/_shared.py)。设备选择遵循 cuda > mps > cpu 的优先级,bf16 仅在 CUDA 且硬件支持时启用,CPU 退化为 float32(见 tools/video/_shared.py)。
源码级原理:调用链与工具注册
技能文档描述的能力在 OpenMontage 中由两条路径实现,理解调用链有助于排查问题与二次开发:
Modal 云路径:CLI 入口
tools/ltx2.py→ 工具类LTXVideoModal(tools/video/ltx_video_modal.py)→generate_ltx_modal_video(tools/video/_shared.py)。该函数从环境变量读取MODAL_LTX2_ENDPOINT_URL,构造含prompt、width、height、num_frames、fps(固定 24)、steps(默认 30)及内置负面提示 "worst quality, low quality, blurry, distorted, watermark, text, logo" 的 JSON 载荷;图生视频时把本地图片 base64 编码为input_image字段或透传input_image_url。响应既支持直接返回视频字节流,也支持返回video_url后二次下载。本地路径:工具类
LTXVideoLocal(tools/video/ltx_video_local.py)→generate_local_video(tools/video/_shared.py),通过 diffusers 的LTXPipeline在本地 GPU 上执行采样,用export_to_video按模型规定的 fps 写出 MP4。
两个工具在视频路由中的位置可从 tools/video/video_selector.py 看到——路由表将ltx2-local映射到本地引擎,并由 AGENT_GUIDE.md 将ltx2技能登记为视频生成类 Agent 技能之一,与seedance-2-0、gemini-omni、ai-video-gen等并列,Agent 可根据MODAL_LTX2_ENDPOINT_URL是否配置来自动判定该工具是否可用(get_status检查见 tools/video/ltx_video_modal.py)。
结语:把 LTX-2 放进你的视频生产流水线
LTX-2.3 22B 在 OpenMontage 中扮演"低成本、快节奏素材引擎"的角色:单片段约 5 秒、$0.20–0.25 成本、自带环境音、支持图文双输入,非常适合 b-roll、动画背景、动态肖像与片头片尾等不需要精确文本渲染的场景。配合 Remotion 合成、upscale 超分与 TTS 配音工具,即可构建一条从提示词到成片的完整自动化链路。牢记帧数约束、分辨率对齐与"静态镜头"提示词规则,并用--seed处理约 30% 的伪影概率,就能稳定获得可用的生产素材。
【免费下载链接】OpenMontageWorld's first open-source, agentic video production system. 12 production pipelines, 100+ tools, 700+ agent skill and production-knowledge files. Turn your AI coding assistant into a full video production studio.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMontage
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考