
简介面向视频创作者、AI工作流爱好者与数字内容设计师这份资源提供LTX2.3在ComfyUI中利用首尾帧生成视频的完整工作流。它基于ComfyUI可视化节点界面整个流程直观清晰使用者无需具备专业动画或编程基础只需指定开始帧与结束帧即可自动完成中间帧插值、过渡效果与基础后期处理从而输出连贯视频尤其适合希望快速生成动态素材、缺少专业动画制作经验的用户。压缩包为zip格式包含1个json工作流文件体积约3KB文件精炼、导入方便可在ComfyUI中直接拖拽使用无需额外安装复杂依赖。目前已有623人浏览学习。通过该json用户不仅能掌握LTX2.3输入首尾帧生成视频的节点连接逻辑还可按需调整帧率、分辨率及输出格式或在此基础上扩展批处理等自动化流程减少从零搭建工作流的重复劳动非常适合个人创作者与小型团队快速产出视频素材避免手动逐帧生成的繁琐环节。1. 从两张图到一段视频LTX2.3 首尾帧工作流要解决什么问题手里只有两张图——一张起点、一张终点想让模型把中间的过渡动作补出来这是首尾帧视频生成最常见的诉求。LTX2.3 是当前社区里较新的视频生成模型在 ComfyUI 里可以把这两张图当作条件约束生成一段两端严格对齐、中间自由发挥的视频。这个工作流能处理产品 360° 展示、角色动画过渡、分镜运镜验证适合已经在用 ComfyUI、想从图生视频升级到双端可控的人。它比纯文生视频多一个“锚点”比普通图生视频多一个“终点约束”代价是节点链路长一点、参数敏感一点。2. 认识 LTX2.3为什么首尾帧生成和文生视频是两条路线2.1 首尾帧条件的本质扩散模型在潜空间里做双向插值LTX2.3 属于基于 Transformer 架构的扩散式视频生成模型和早期逐帧生成的模型最大的区别在于它不是对每一帧单独去噪而是把整段视频的帧序列打包成潜空间张量在潜空间里一次性完成去噪。这个“打包”动作里帧与帧之间共享了时序注意力所以模型天然能感知“第 0 帧是什么、最后一帧是什么”。首尾帧条件进入模型的路径通常是把两张输入图分别用 VAE 编码成潜空间向量再按 batch 维度拼接成一个含 N 帧的潜空间序列其中第 0 个位置是首帧编码、第 N-1 个位置是尾帧编码中间位置留空由模型补全。训练阶段模型见过大量“从 A 状态到 B 状态”的视频推理时拿到两端锚点就在潜空间里做双向插值——不是简单线性过渡而是带着运动先验去补中间内容。这里最容易误解的一点是首尾帧不是“两张图叠在一起当输入”而是“两端锚点各占一个帧位”。所以你调整总帧数时实际上是在调整中间待补全帧的数量帧数越多模型需要脑补的内容越长运动连贯性和细节保真度都会下降。2.2 三种生成路线的选择你手里有什么数据就选哪条路文生视频、图生视频、首尾帧生成在 ComfyUI 里的节点链路完全不同选错路线会导致工作流怎么调都不对。文生视频只需要文本条件模型从头生成所有帧适合没有具体画面参考的场景图生视频只锁首帧适合从一个确定的画面出发让模型自由推进首尾帧生成锁两端适合需要“从一张图变到另一张图”的确定性过渡。路线条件输入可控性适合场景翻车风险文生视频文本提示词低画面全靠模型脑补概念演示、氛围片段构图不可控图生视频首帧图像 文本中开头确定结尾漂人物微动、镜头推进尾帧容易跑偏首尾帧生成首帧图 尾帧图 文本高两端严格锚定形态过渡、运镜衔接中间过渡容易穿模实际使用中如果两张输入图风格差异很大首尾帧生成的中间帧会出现“变形”而不是“渐变”这是模型在强行补全时产生的自然现象不算故障。想要渐变效果反而要让两张图尽量保持风格一致比如同一场景不同机位、同一人物不同姿态。2.3 LTX2.3 在 ComfyUI 里以什么形态存在LTX2.3 模型在 ComfyUI 里通常以 safetensors 格式存放可能是完整检查点含 VAE 和文本编码器也可能拆分成单独的 diffusion model 文件。加载它的节点不是普通 checkpoint 加载器而是 LTX 系列专用的加载节点这类节点在 custom_nodes 里跟着插件包一起安装。节点名称不同分支会略有差异但输入输出口大同小异模型输入接 load 节点视觉条件输入接首尾帧 latent文本条件输入接 CLIP 编码。这里要特别留意LTX2.3 的节点和旧版 LTXV 节点的接口不是完全兼容的。如果你导入的工作流 JSON 里写的是新版节点但本机装的是旧版节点包画布上会出现一堆红色报错节点最直接的排查方式是看控制台日志报的是“node type not found”还是“input mismatch”前者是缺插件后者是版本不对。3. 环境准备与模型放置整合包还是官方 Desktop显存不够怎么办3.1 安装顺序本体、Manager、LTX2.3 定制节点缺一不可常见做法是先装 ComfyUI 本体再用 ComfyUI Manager 安装 LTX2.3 相关节点包。如果你用的是秋叶一键整合包本体和 Manager 通常已经就位直接进 Manager 搜 LTX 关键词就能看到对应的节点包一键安装后重启即可。官方 Desktop 版本则要自己先装 Manager再装节点包路径略多两步但更新更主动。安装顺序不能乱先保证 Manager 可用再去装节点包最后才放模型文件。因为节点包装好后会在 custom_nodes 目录创建自己的文件夹某个节点包在安装时会打印模型放置路径提示。如果先放模型再装节点模型路径提示会被覆盖掉你只能回头翻源码找路径提示。我个人更推荐整合包起步理由只有一个它会把 Python 环境和依赖锁在一个目录里LTX2.3 这类新模型节点依赖的特定库版本冲突概率低。官方 Desktop 升级频繁但节点包的作者往往跟不上更新速度经常出现“Desktop 升完级节点包报错”的尴尬局面。3.2 模型文件到底放哪个文件夹checkpoints、diffusion_models 与自定义节点目录文件夹路径放什么加载方式ComfyUI/models/checkpoints完整检查点含 VAE/CLIP/UNet 打包CheckpointLoaderSimpleComfyUI/models/diffusion_models单独的 diffusion model 文件DiffusionModelLoaderComfyUI/models/vaeVAE 权重VAELoaderComfyUI/models/text_encoders独立的 CLIP/T5 文本编码器CLIPLoaderLTX2.3 如果你拿到的是拆分版就把 diffusion model 放 diffusion_models 文件夹、VAE 放 vae 文件夹、文本编码器放 text_encoders 文件夹三个缺一个都跑不起来。拿到的是打包检查点就直接放 checkpoints但这意味着加载时会把不用的组件一起读进显存8GB 显存机器上不划算。节点包附带的工作流示例 JSON 里通常已经写好了模型文件名你导入后只要把文件名改成自己实际下载的文件名即可。这里有个常被忽略的坑文件名不能带空格和中文否则部分加载器解析路径会失败报 file not found而实际上文件就在那儿。3.3 显存不够的阶梯式方案从 fp8 到 CPU offload显存是首尾帧工作流最大的门槛。24GB 显存可以比较舒服地跑 768x768、120帧以内的生成12GB 显存建议用 fp8 量化版模型分辨率降到 640 以下8GB 显存基本只能跑 512 短片段还要配合 CPU offload 和低帧数。显存推荐模型格式分辨率参考帧数参考必开项24GBfp16/fp8768x76860–120无12GBfp8640x64040–80模型 offload8GBfp8 低量化512x51220–40模型 offload 虚拟内存调大ComfyUI 提供模型 offload 选项在设置里把“Offload model to CPU when unused”打开能让部分层在采样间隙回到内存。代价是每步采样都要在 CPU/GPU 之间搬运权重速度会慢 20% 到 50%但能保住不崩。如果开 offload 依然爆显存先确认 Windows 虚拟内存设置。ComfyUI 的模型加载和数据传输吃的是物理显存但 CPU 内存不够时系统会直接杀进程把虚拟内存调到 32GB 以上能避开很多莫名崩溃。提示先用低分辨率小帧数跑通全流程再逐步加分辨率。直接拉满高参数任何报错都难以定位是显存问题还是工作流问题。4. 搭建首尾帧工作流节点连线、关键参数和一份能跑的 JSON 模板4.1 工作流骨架从加载图片到潜空间、采样、解码、合成视频一条完整的 LTX2.3 首尾帧视频生成工作流核心节点链路如下两张 Load Image 节点分别加载首帧图与尾帧图两张图各自经过 VAE Encode 编码成潜空间 latent两个 latent 按 batch 维度拼接组成首尾帧条件文本条件经 CLIP 编码控制中间过渡的内容风格首尾帧条件 文本条件一起进入 LTX2.3 采样节点KSampler 去噪完成后输出 latentlatent 经 VAE Decode 还原成图像序列Video Combine 节点把图像序列合成为 mp4 视频节点与节点之间靠连线传递数据区分两类连线模型类连线模型、CLIP、VAE和条件类连线图像、latent、文本。拿到的 workflow JSON 拖进画布后如果显示断线通常是插件不匹配导致节点类型缺失而不是连线本身画错。4.2 一份裁剪后的 workflow JSON看懂结构就能自己改下面是一份裁剪后的工作流 JSON 骨架。它省略了布局坐标和部分默认参数保留了节点类型、输入输出连接关系适合用来理解播放链路也适合直接作为修改模板。实际运行时请以你自己的整合包中导入后的节点为准。{ 1: { class_type: LoadImage, inputs: { image: first_frame.png } }, 2: { class_type: LoadImage, inputs: { image: last_frame.png } }, 3: { class_type: VAEEncode, inputs: { pixels: [1, 0], vae: [5, 0] } }, 4: { class_type: VAEEncode, inputs: { pixels: [2, 0], vae: [5, 0] } }, 5: { class_type: VAELoader, inputs: { vae_name: ltx2_vae.safetensors } }, 6: { class_type: LTX2_3Conditioning, inputs: { first_latent: [3, 0], last_latent: [4, 0], text: a smooth transition between two scenes, clip: [7, 0], positive: [] } }, 7: { class_type: CLIPLoader, inputs: { clip_name: ltx2_text_encoder.safetensors, type: ltx2 } }, 8: { class_type: KSampler, inputs: { model: [9, 0], positive: [6, 0], negative: [6, 1], latent_image: [6, 2], steps: 30, cfg: 4.0, sampler_name: euler, scheduler: simple, denoise: 1.0 } }, 9: { class_type: LTX2_3ModelLoader, inputs: { model_name: ltx2_3_fp8.safetensors } }, 10: { class_type: VAEDecode, inputs: { samples: [8, 0], vae: [5, 0] } }, 11: { class_type: VHS_VideoCombine, inputs: { images: [10, 0], frame_rate: 24, format: mp4 } } }逻辑说明节点 1 和 2 是输入图片源节点 3 和 4 分别把首帧、尾帧编码成 latent节点 6 是 LTX2.3 专有条件入口把首尾帧 latent 和文本条件拼在一起后输出三路数据——positive 条件、negative 条件、初始 latent。KSampler 接收这三路后开始去噪最终采样结果经节点 10 解码回图像序列节点 11 负责按时序合成为视频文件。参数说明KSampler 里的 steps 控制去噪步数首尾帧场景建议 25 到 40 步太低会出现画面颗粒感明显、运动不连贯。cfg 是提示词引导强度首尾帧两端锚定已经很明确cfg 不需要太高4 到 6 之间比较稳太高会让中间帧出现夸张变形。sampler_name 用 euler 比较稳scheduler 用 simple 在视频生成里是常见组合。denoise 固定 1.0因为首尾帧工作流是从纯噪声开始的完整采样调低 denoise 反而会让结果残留噪声。4.3 没有现成模板时用 ComfyUI API 从 Python 侧驱动全流程工作流 JSON 是静态的但很多场景需要动态替换图片、动态改提示词、批量跑多组首尾帧。这时候可以直接用 Python 脚本请求 ComfyUI 的 API 接口把同一个工作流模板跑多遍。下面的代码演示了上传两张图、提交 prompt、轮询结果并下载视频的完整闭环。import json import time import urllib.request import urllib.parse # 工作流 JSON 先手动导出再在脚本里修改图片名和提示词 with open(ltx2_3_workflow.json, r, encodingutf-8) as f: workflow json.load(f) # 动态替换首帧尾帧文件名和提示词 workflow[1][inputs][image] batch_001_start.png workflow[2][inputs][image] batch_001_end.png workflow[6][inputs][text] car transforms into a spaceship server http://127.0.0.1:8188 payload json.dumps({prompt: workflow}).encode(utf-8) # 提交任务 req urllib.request.Request( f{server}/prompt, datapayload, headers{Content-Type: application/json}, ) resp urllib.request.urlopen(req) prompt_id json.loads(resp.read())[prompt_id] print(task id:, prompt_id) # 轮询历史接口直到任务完成 while True: req urllib.request.Request(f{server}/history/{prompt_id}) history json.loads(urllib.request.urlopen(req).read()) if prompt_id in history and history[prompt_id].get(outputs): print(done) break time.sleep(3) # 从输出里找到视频文件名并下载 outputs history[prompt_id][outputs] for node_id, output in outputs.items(): for file_info in output.get(gifs, []) output.get(videos, []): filename file_info[filename] subfolder file_info.get(subfolder, ) url f{server}/view?filename{urllib.parse.quote(filename)} if subfolder: url fsubfolder{urllib.parse.quote(subfolder)} urllib.request.urlretrieve(url, foutput_{filename}) print(saved:, filename)逻辑说明脚本先读取手动导出的工作流 JSON改掉首帧、尾帧图片路径和提示词然后通过 POST /prompt 提交任务。ComfyUI 返回一个 prompt_id随后脚本每隔 3 秒查询一次 /history 接口直到该 id 出现在历史中且包含输出。最后从输出节点的 gifs 或 videos 字段里解析出文件名拼出下载地址。参数说明server 地址默认为本机 8188 端口如果你自定义过端口就改这里。轮询间隔 3 秒适合单个任务批量跑时建议改成 5 秒避免请求太频繁拖慢服务端。输出类型字段 gifs 和 videos 取决于 Video Combine 节点的输出类型设置如果你的工作流输出的是图片序列就需要改成 images 字段。5. 避坑排查首尾帧工作流最常见的 5 个翻车现场5.1 首尾帧完全没生效生成结果像纯文生视频现象指定的尾帧被忽略画面结尾和首帧毫无关系感觉像跑了个文生视频。原因最常出现在条件节点接线错误。首尾帧 latent 没有真正传给采样节点KSampler 拿到的 latent_image 是空白 latent或者条件节点的 positive 输出没有携带视觉信息。还有一种可能是 cfg 值过高文本条件压过了视觉锚点。解决先在 ComfyUI 画布上右键点击条件节点查看其输出是否包含首尾帧 latent接着把 cfg 降到 3 左右若尾帧开始生效说明是引导权重失衡最后确认 Workflow 里 KSampler 的 latent_image 连线不是来自空白 Latent 节点而是来自条件节点的 latent 输出。5.2 中间帧穿模严重两张图差异大时出现背景扭曲现象首尾帧各自正常但中间帧出现物体穿插、背景闪烁、人脸变形。原因这是扩散模型的物理先验不足造成的。模型在补全 30 帧以上的中间过渡时如果两张图场景结构差异太大它会在潜空间里找一个“最短路径”而这个路径往往不是物理合理的平滑变形。解决先降低帧数到 20 帧左右确认问题是否缓解其次在两段图片生成时尽量保持构图一致比如主体位置居中、背景色接近最终方案是把一张图做关键帧拆分例如先做首帧到中间帧再做中间帧到尾帧分两段生成后拼接每段的过渡压力都会小很多。5.3 导入工作流 JSON 后画布一片红现象从分享链接或本地拖入 JSON画布上节点全部显示红色完全无法执行。原因JSON 里引用的节点类型在当前环境不存在通常是 LTX2.3 定制节点包没装或者装了旧版节点。也有小概率是导入的 JSON 版本是付费/定制版引用了私有节点。解决打开 ComfyUI 控制台窗口看红色错误信息报“node type not found: xxx”就装对应插件。装好后重启 ComfyUI 再导入。如果装完还红确认节点包版本与 ComfyUI 本体版本是否兼容必要时在 Manager 里把节点包升级到最新。5.4 爆显存到崩溃跑长视频时直接闪退连报错都没有现象生成到一半进程消失ComfyUI 窗口直接关闭没有红色报错信息。原因Windows 下虚拟内存设置不足。生成长视频时模型权重、中间 latent、视频解码数组同时在内存和显存之间搬运物理内存不够时系统强制杀进程。注意这不是 ComfyUI 自己报错而是操作系统的内存保护机制。解决先去系统设置把虚拟内存调到 32GB 或以上再回来重试。如果仍然崩溃改用分帧生成一次只生成 40 帧把 80 帧视频拆两段跑再把两段视频在后期里拼接。这是纯显存限制下的妥协方案但稳定性能接受。5.5 生成视频出现鬼影和闪烁物体边缘发糊现象画面内容能看但物体边缘有半透明残影明亮区域闪烁明显。原因步数不足或使用了不适合视频生成的采样器组合。LTX2.3 这类扩散视频模型对采样器比较敏感dpmpp 系列在某些步数下容易出现高频抖动表现在画面里就是边缘鬼影。解决先提高 steps 到 40 步如果鬼影减轻说明是步数问题保持 40 步即可。若 40 步仍闪烁把 sampler_name 从 dpmpp_2m 改成 eulerscheduler 改成 simple牺牲部分细节换取稳定。更彻底的做法是按上述配置生成两次取平均但代价是时间翻倍。注意闪帧问题如果只在首尾帧附近出现要检查输入图片分辨率是否与模型预设分辨率差距过大。VAE 编码在极端宽高比下会产生网格状伪影把图片预处理到接近模型训练分辨率会显著改善。6. 进阶把首尾帧工作流做成可复用模板的几个习惯工作流跑通只是第一步真正能提高生产价值的是把零散的节点排布沉淀为可复用模板。我一般会在工作流里把固定参数和可变参数分开Steps、CFG、Sampler 这类调参项集中放在画布左侧并加上文本标注节点首帧图、尾帧图、提示词这三项放在画布最上方用醒目的 Load Image 节点作为入口。这样每次换素材只需要改最上面三个节点不需要在几十个节点里找参数。批量场景建议配合 Python API 跑用脚本一次读入 start_list.txt 和 end_list.txt 中配对好的图片路径循环替换文件名提交任务。跑完以后把生成的 mp4 文件名回写到 CSV方便后期检查和筛选。这个流程一点都不复杂但能让你从“手动拖图、手动改提示词、手动点执行”里解脱出来。验证工作流是否稳定我有个自己的习惯固定同一对首尾帧把 Steps 从 20 逐步加到 50 步每次只加 5 步记录画面稳定性和单条视频耗时。这样画出一条“步骤数-稳定性”曲线找一个性价比最高的落点。别迷信某组参数每个场景素材不同最稳的参数往往需要自己用肉眼排雷。做首尾帧越久越觉得这个方向真正值钱的是对“两端锚定”的理解——模型能力只是基础把中间过渡拆得足够细、让每段生成压力变小才是稳定出片的关键路径。希望帮到你。本文还有配套的精品资源点击获取