Wan2.2 首尾帧生视频:控制开头和结尾
上一课的图生视频解决了「开头」:照片当首帧,画面从它动起来。但结尾呢?全凭模型自由发挥。这一课把最后一块控制权补上——Wan2.2 首尾帧生视频(FLF2V,First-Last-Frame-to-Video):首帧、尾帧各传一张图,开头结尾都锁定,中间的变化过程交给模型补全。
变身、开花、使用前后对比,这类「起点和终点都明确」的视频正是它的主场。
省事的一点是:模型一个都不用新下。官方模板 video_wan2_2_14B_flf2v 用的就是上一课那套 14B I2V 双专家权重(高噪 + 低噪),加 umt5 文本编码器和 wan_2.1_vae——官方教程原话:首尾帧工作流使用的模型位置与 I2V 节相同。真正要学的只有两样:一个新节点 WanFirstLastFrameToVideo,和一个新思路——提示词写「变化过程」。
学完你能做什么
- 加载官方 Wan2.2 14B FLF2V 模板,上传首帧、尾帧两张图,生成 640×640、81 帧、约 5 秒的首尾帧过渡视频
- 说得出这一课和图生视频的本质区别:
WanFirstLastFrameToVideo多锁一个end_image - 按规则改参数:宽高步长 16、帧数取 4n+1,显存富余时升到 720P 左右
- 用 Ctrl+B 在 20 步标准版和 4 步 Lightning LoRA 加速版之间切换
- 写出描述「从首帧到尾帧怎么变」的提示词,而不是只描述一张图
你现在的困境
- 想做「变身」「前后对比」这类视频,两张关键帧都画好了,就缺把中间补起来的一段
- 文生视频控制不了结尾,图生视频又只能锁定开头,结尾全凭模型心情
- 拿上一课的工作流硬改:
WanImageToVideo只锁首帧,没有接尾帧的输入
什么时候用这一招
当你需要:
- 在两张关键帧之间补一段平滑过渡:变身、转场、产品使用前后
- 视频的开头和结尾都精确对上你给的图
- 复用上一课的 I2V 模型文件,一个大权重都不用新下
而且不想:
- 反复抽卡,等模型碰巧生成你想要的结尾
- 换新模型:FLF2V 用的就是 Wan2.2 14B I2V 那套双专家权重
🎒 开始前的准备
- 跑通了Wan2.2 14B 图生视频:上一课的四个模型文件已归位——
wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors、wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors、umt5_xxl_fp8_e4m3fn_scaled.safetensors、wan_2.1_vae.safetensors - ComfyUI 0.3.31 以上(官方模板库对这个模板标注的最低版本)
- 准备两张图:首帧和尾帧,比例保持一致(原因见踩坑提醒);没有素材就先用模板自带的示例图
- 显存心里有数:官方在 RTX 4090D 24GB、640×640 下测得占用 84%;模板默认小尺寸就是为低显存准备的,先跑通再改大
核心思路
三句话讲清这一课的新东西:
- FLF2V = 首尾两帧都锁定的图生视频。 上一课的
WanImageToVideo只把首帧编码进条件;WanFirstLastFrameToVideo把首帧、尾帧分别固定在 latent 的开头和结尾,中间帧由模型按提示词插值补全——所以这类视频也叫首尾帧插值视频。 - 模型零新增。 官方教程明说:首尾帧工作流的模型位置与 I2V 节相同。上一课下载的四个文件原样复用,想加速再补两个可选 LoRA。
- 提示词从「描述画面」变成「描述过程」。 模板示例写的是「冰晶小猫被惊醒、渐渐长出色彩毛发变成巨兽」——起点、过程、终点一句写全。
| 图生视频(上一课) | 首尾帧生视频(本课) | |
|---|---|---|
| 节点 | WanImageToVideo | WanFirstLastFrameToVideo |
| 锁定的帧 | 首帧 1 张 | 首帧 + 尾帧共 2 张 |
| 提示词 | 描述这段视频的画面 | 描述从首帧到尾帧的变化过程 |
| 模型文件 | wan2.2_i2v_* 双专家 | 同左,完全复用 |
新节点的参数规则(源码 schema 定死):width / height 步长 16,length 步长 4(合法值 4n+1:49、81、121……),batch_size 默认 1。
跟我做
第 1 步:加载 Wan2.2 首尾帧模板
为什么:官方模板把两套完整工作流(20 步标准版 + Lightning 加速版)和全部默认参数都配好了,从模板起步不会漏节点、不会填错参数。
- 打开模板库(Browse Templates),搜索「Wan2.2 14B FLF2V」(英文界面模板名 Wan 2.2 14B First-Last Frame to Video)
- 点击加载
你应该看到:
画布分成两大组:Default workflow(默认启用)和 Enable lightning lora version(默认旁路)
每组都按 Step 1 Load models → Step 2.1 Upload start_image → Step 2.2 Upload end_image → Step 3 Video size & length → Step 4 Prompt 摆好
四个模型加载器(两个 Load Diffusion Model、Load CLIP、Load VAE)里的文件名和上一课完全相同
画布上还有 Model Links、VRAM Usage 几个便签,没有任何红节点
模板加载完成,画布无红节点
第 2 步:上传首帧和尾帧两张图
为什么:这两张图就是视频的第一帧和最后一帧,模型的一切生成都被约束在这两点之间。
- 在 Step 2.1 - Upload start_image 分组的 Load Image 节点里上传首帧
- 在 Step 2.2 - Upload end_image 分组的 Load Image 节点里上传尾帧
- 没有素材?模板自带示例图
video_wan2_2_14B_flf2v_start_image.png和video_wan2_2_14B_flf2v_end_image.png,官方教程页可以直接下载
你应该看到:两个 Load Image 节点里各出现一张图,分别连向 WanFirstLastFrameToVideo 的 start_image 和 end_image 输入。
- 首帧、尾帧各就各位
⚠️ 两张图会被缩放到节点尺寸
WanFirstLastFrameToVideo 会把两张图都按节点的 width / height 双线性缩放、居中处理后编码。两张图比例不一致会被拉伸变形——先统一比例,或按图片比例改节点宽高。
第 3 步:设置视频尺寸和帧数
为什么:模板默认 640×640 是官方为低显存用户准备的小尺寸;规则之内随便改,规则之外会出问题。
WanFirstLastFrameToVideo 的四个参数:
| 参数 | 模板默认 | 规则 | 说明 |
|---|---|---|---|
| width | 640 | 步长 16 | 要 16 的倍数 |
| height | 640 | 步长 16 | 要 16 的倍数 |
| length | 81 | 步长 4,取 4n+1 | 81 帧 ÷ 16fps ≈ 5 秒 |
| batch_size | 1 | — | 一次生成几条 |
- 先用默认 640×640、81 帧跑通
- 显存富余再改大:官方教程的建议是「分辨率 720P 左右」,比如 1280×720(都是 16 的倍数)
- 时长在 length 里改(49 约 3 秒、121 约 7.5 秒),帧率在 CreateVideo 节点改(模板设 16)
你应该看到:参数框里的数值按步长增减,不会出现 641 这种值。
- 记住两条规则:宽高 16 的倍数、帧数 4n+1
第 4 步:写「变化过程」提示词并生成
为什么:首尾帧已经把起点终点定死了,提示词的任务是告诉模型中间怎么变。
- 在 CLIP Text Encode (Positive Prompt) 节点里写变化过程。模板自带的示例:
冰晶组成的小猫突然被惊醒,愤怒的它抬头,渐渐长出色彩毛发变成为
一个巨兽,像发现危险一样呲牙,瞪大眼睛一句话写全了起点(冰晶小猫)、过程(惊醒、长出色彩毛发)、终点(呲牙瞪眼的巨兽)——照这个结构写你自己的两张图之间的变化。
- 负向提示词保持模板自带的中文段落不变(和上一课 I2V 模板里的完全相同):
展开看模板自带的负向提示词
色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,
整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,
画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,
静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走- 确认采样参数是模板默认:两个 KSampler 各 20 步、cfg 4、euler + simple,高噪模型跑 0–10 步、低噪模型跑 10–20 步;两个 ModelSamplingSD3 的 shift 都是 8
- 按
Ctrl+Enter运行
你应该看到:两个 KSampler 先后各跑 10 步;输出视频的第一帧、最后一帧和你上传的两张图对得上,中间是提示词描述的变化过程。视频由 SaveVideo 节点存进输出目录的 video/ 子目录,640×640、81 帧、16fps,约 5 秒。
- 输出视频的首帧、尾帧与上传的两张图一致
第 5 步:切换 4 步 Lightning LoRA 加速版(可选)
为什么:20 步标准版在 RTX 4090D 上首次生成约 536 秒;模板自带的 Lightning LoRA 版只要 4 步,参考耗时约 108 秒——试构图时快得多。
- 先下载两个加速 LoRA(各 1.14 GB)放进
models/loras/:wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors、wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors(Hugging Face 和 ModelScope 的 Wan_2.2_ComfyUI_Repackaged 仓库都有) - 框选 Default workflow 组,按
Ctrl+B旁路 - 框选 Enable lightning lora version 组,按
Ctrl+B启用 - 确认 Lightning 组的参数:两个 LoRA 强度都是 1,ModelSamplingSD3 的 shift 是 5,两个 KSampler 各 4 步、cfg 1,高噪跑 0–2 步、低噪跑 2–4 步
- 注意:Lightning 组有自己的一套 Load Image 和提示词节点——切过去后,要在这组里重新上传你的首帧尾帧、粘贴提示词(它默认带着自己的英文示例)
- 运行
你应该看到:采样只走 4 步(高噪 2 + 低噪 2),出片明显变快;输出还是 640×640、81 帧、16fps。
- 两组工作流会互相切换,且同一时间只有一组启用
⚠️ 加速的代价是动态
模板便签原话:使用 Wan2.2 Lightning LoRA 会损失一部分视频动态,但能缩短生成时间。试构图用 4 步版,正式出片切回 20 步标准版。
💡 切换后检查另一组的状态
模板便签特意提醒:启用一组后,别忘了用 Ctrl+B 把另一组旁路,否则两组会同时跑;也可以试试部分执行(partial execution)功能。
检查点 ✅
- 首尾帧视频跑通:开头结尾与两张上传图一致,中间过渡平滑
- 说得出
WanFirstLastFrameToVideo和WanImageToVideo的区别:多了end_image - 知道宽高步长 16、length 取 4n+1,会自己改分辨率和时长
- 会用 Ctrl+B 切换 20 步标准版 / 4 步 Lightning 版,并确认另一组已旁路
- 提示词写的是「变化过程」,包含起点、过程、终点
踩坑提醒
❌ 两张图比例不一致,出来变形
节点会把两张图都按 width / height 双线性缩放、居中后再编码,比例不同就被拉伸。
正确做法:两张图先统一比例;或者按图片比例改节点宽高——比如两张都是 3:4 竖图,就设 576×768 这类 16 倍数的 3:4 尺寸。
❌ 启用了 Lightning 组,忘了旁路标准组
模板里是两套完整工作流。模板便签原话提醒过:不想两组同时跑,启用一组后别忘了把另一组 Ctrl+B 旁路。
正确做法:切换后扫一眼画布,确认只有一组是启用状态。
❌ 帧数填 80、宽高填 641
length 步长 4、合法值是 4n+1(49、81、121……);width / height 步长 16。界面上按步长走不会错,从别的节点传值进来时要自己守规则。
正确做法:帧数在 49 / 81 / 121 里挑,宽高在 16 的倍数里挑;640×640 是模板默认,1280×720 是 720P 的合法组合。
❌ 下错权重:FLF2V 用的是 I2V 的文件
首尾帧模板加载的是 wan2.2_i2v_*_14B_fp8_scaled 两个文件,不是Wan2.2 14B 文生视频课的 wan2.2_t2v_*。官方教程原话:首尾帧工作流使用的模型位置与 I2V 节相同。
正确做法:四个加载器逐个核对文件名,和上一课图生视频完全一致。
进阶技巧(可选)
给提示词加一段「一致性约束」
模板 Lightning 组自带的英文示例提示词分两段:第一段写变化过程(梵高自画像风格的大胡子男人,慢慢变成宇航员——胡须一根根淡出、草帽融成头盔、背景笔触渐变成星空);第二段专门约束镜头和一致性(机位固定、轻微慢推、光线柔和、构图居中不变)。
首尾帧视频尤其怕镜头乱动——照这个结构,给你的提示词也加一段一致性约束。
变化方向随便定
起点和终点没有固定套路:拆箱视频可以「完好包装 → 手里拿着的产品」,也可以反过来拍「还原过程」。两张图在 Load Image 里的位置对调就行。
想要更长的叙事
Wan2.2 的单段视频到此为止。想要多镜头叙事和更长篇幅,看 LTX-2.5:多镜头叙事、4K HDR 与 DFR——LTX-2.5 同样提供首尾帧(FLF2V)工作流模板。
本课小结
✅ 这一课给视频补上了「结尾控制权」,Wan2.2 首尾帧生视频跑通:
- ✅ 首尾帧生视频:
WanFirstLastFrameToVideo上传首帧、尾帧两张图,中间由模型按提示词补全 - ✅ 模型零新增:复用上一课 I2V 的双专家权重,只多两个可选加速 LoRA
- ✅ 参数规则:宽高步长 16、length 取 4n+1;默认 640×640、81 帧、16fps 约 5 秒
- ✅ 双速出片:20 步标准版(参考耗时约 536 秒)↔ 4 步 Lightning 版(约 108 秒),Ctrl+B 切换
关键配置字段回顾:
| 字段 | 推荐值 | 说明 |
|---|---|---|
| Load Diffusion Model ×2 | wan2.2_i2v_high/low_noise_14B_fp8_scaled.safetensors | 与图生视频课相同 |
| Load CLIP | umt5_xxl_fp8_e4m3fn_scaled.safetensors | type 选 wan |
| Load VAE | wan_2.1_vae.safetensors | |
| WanFirstLastFrameToVideo | 640×640 / length 81 / batch 1 | 宽高步长 16,length 取 4n+1 |
| KSampler ×2 | 20 步 / cfg 4 / euler + simple | 高噪 0–10 步,低噪 10–20 步 |
| ModelSamplingSD3 ×2 | shift 8(Lightning 组为 5) | |
| CreateVideo | fps 16 | 81 帧 ≈ 5 秒 |
| Lightning LoRA ×2 | 强度 1,4 步 / cfg 1 | 默认旁路,Ctrl+B 启用;高噪 0–2、低噪 2–4 步 |
下一课预告
Wan2.2 到这里收尾,下一课换一个自带声音的模型:LTX-2/2.3:一次生成带声音的视频。你会学到:
- LTX-2 的六种工作流:T2V、I2V、FLF2V、IA2V、IC-LoRA、ID-LoRA
- 音画同步的视频生成是什么体验
- 蒸馏版 8 步、CFG=1 的加速玩法
附录:源码参考
点击展开查看源码位置
更新时间:2026-11-06(模板库模板 video_wan2_2_14B_flf2v,官方标注最低 ComfyUI 版本 0.3.31)
| 内容 | 位置 |
|---|---|
| 官方教程(Wan2.2,含 FLF2V 节) | https://docs.comfy.org/tutorials/video/wan/wan2_2 |
| 工作流模板 JSON | https://github.com/Comfy-Org/workflow_templates/blob/main/templates/video_wan2_2_14B_flf2v.json |
| 权重仓库(Hugging Face) | https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged |
| 权重仓库(ModelScope 镜像) | https://modelscope.cn/models/Comfy-Org/Wan_2.2_ComfyUI_Repackaged |
WanFirstLastFrameToVideo 节点源码 | comfy_extras/nodes_wan.py(L188 起,参数步长 L198–L201) |
WanImageToVideo 节点源码 | comfy_extras/nodes_wan.py(L18 起) |
本页参数(640×640 / length 81 / fps 16、20 步 cfg 4 euler + simple、高噪 0–10 / 低噪 10–20、shift 8、Lightning 4 步 cfg 1 / shift 5、模型文件名与大小、RTX 4090D 参考耗时与显存占用)均核对自模板 JSON video_wan2_2_14B_flf2v.json 的实际节点值与内置便签;720P 建议与「模型位置与 I2V 相同」来自官方教程;节点参数步长核对自 comfy_extras/nodes_wan.py 源码。