ComfyUI-FramePackWrapper_Plus 插件保姆级教程
1. 插件简介
插件地址: https://github.com/ShmuelRonen/ComfyUI-FramePackWrapper_Plus
ComfyUI-FramePackWrapper_Plus 是一个超级强大的视频生成插件,就像给你的 ComfyUI 装上了一个专业的视频制作工厂。这个插件能做什么呢?
- 图片转视频:给它一张图片,它就能生成一段流畅的视频,就像让静态照片活起来
- 时间轴控制:可以在不同时间点设置不同的描述,就像给视频写剧本一样
- LoRA 支持:可以加载各种风格模型,让视频呈现不同的艺术效果
- F1 采样器:使用最新的 F1 技术,生成的视频更流畅、质量更高
- 长视频生成:不像其他插件只能生成几秒钟,这个可以生成任意长度的视频
- 智能分辨率:自动找到最适合的视频尺寸,避免变形
这个插件基于 FramePack 项目,专门为 HunyuanVideo 模型优化,就像是专门为某种高级相机设计的镜头一样。
2. 如何安装
第一步:下载插件
# 进入你的 ComfyUI 插件目录
cd ComfyUI/custom_nodes
# 下载插件
git clone https://github.com/ShmuelRonen/ComfyUI-FramePackWrapper_Plus.git
第二步:安装依赖包
# 进入插件目录
cd ComfyUI-FramePackWrapper_Plus
# 安装必需的包
pip install -r requirements.txt
第三步:下载模型文件
你需要下载以下模型文件:
主要模型:
- FramePackI2V_HY_fp8_e4m3fn.safetensors - 优化版本(文件较小)
- FramePackI2V_HY_bf16.safetensors - 高质量版本
必需组件:
- CLIP Vision: sigclip_vision_384
- 文本编码器和VAE: HunyuanVideo_repackaged
3. 节点详细解析
3.1 DownloadAndLoadFramePackModel 节点
这个节点就像一个智能下载管家,它会自动从网上下载模型文件并加载到内存中,省去你手动下载的麻烦。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | lllyasviel/FramePackI2V_HY | lllyasviel/FramePackI2V_HY | 选择要下载的模型,就像选择要用哪个画家的风格 | 指定要从HuggingFace下载的预训练模型ID | 目前只有一个选项,直接用默认值就行 |
| base_precision | base_precision | fp32/bf16/fp16 | bf16 | 设置计算精度,就像调节画笔的精细度 | 设置模型权重的数据类型,影响显存占用和计算精度 | bf16 最省显存且效果好,fp32 最精确但占用显存多 |
| quantization | quantization | disabled/fp8_e4m3fn/fp8_e4m3fn_fast/fp8_e5m2 | disabled | 压缩模型大小的方法,就像把大文件压缩成小文件 | 模型量化方法,可以减少显存占用但可能影响质量 | 显存不够时可以选择 fp8_e4m3fn,正常情况用 disabled |
| attention_mode | attention_mode | sdpa/flash_attn/sageattn | sdpa | 注意力计算方式,就像大脑思考问题的不同方法 | 选择注意力机制的实现方式,影响速度和显存占用 | sdpa 兼容性最好,flash_attn 速度更快但需要特定环境 |
| compile_args | compile_args | FRAMEPACKCOMPILEARGS对象 | None | 编译优化设置,就像给程序装上加速器 | PyTorch编译优化参数,可以提升推理速度 | 可选参数,不连接就用默认设置 |
3.2 LoadFramePackModel 节点
这个节点就像一个本地模型管家,负责加载你已经下载好的模型文件,比自动下载节点更灵活。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | 文件列表 | 根据你的文件 | 选择本地模型文件,就像从书架上选一本书 | 从diffusion_models文件夹中选择模型文件 | 选择你下载的 FramePackI2V_HY 模型文件 |
| base_precision | base_precision | fp32/bf16/fp16 | bf16 | 设置计算精度,和上面节点一样的作用 | 设置模型权重的数据类型 | bf16 是最佳平衡选择 |
| quantization | quantization | disabled/fp8_e4m3fn/fp8_e4m3fn_fast/fp8_e5m2 | disabled | 模型压缩方式,和上面节点一样 | 模型量化方法 | 显存紧张时选择 fp8_e4m3fn |
| load_device | load_device | main_device/offload_device | main_device | 选择模型加载到哪个设备,就像选择把东西放在桌上还是抽屉里 | 控制模型初始化时的设备位置 | main_device 速度快,offload_device 省显存 |
| attention_mode | attention_mode | sdpa/flash_attn/sageattn | sdpa | 注意力计算方式,同上 | 注意力机制实现方式 | sdpa 最稳定 |
| compile_args | compile_args | FRAMEPACKCOMPILEARGS对象 | None | 编译优化设置,同上 | PyTorch编译优化参数 | 可选参数 |
| lora | lora | FPLORA对象 | None | LoRA 风格模型,就像给画家换不同的画笔 | 加载的LoRA适配器列表 | 连接 FramePackLoraSelect 节点的输出 |
3.3 FramePackLoraSelect 节点
这个节点就像一个风格选择器,让你可以给视频添加不同的艺术风格,比如动漫风格、写实风格等。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| lora | lora | LoRA文件列表 | 根据你的文件 | 选择风格文件,就像选择滤镜 | 从loras文件夹中选择LoRA模型文件 | 选择你想要的风格文件,比如 anime_style.safetensors |
| strength | strength | 浮点数 | 1.0 | 风格强度,就像调节滤镜的浓度 | LoRA模型的影响强度 | 1.0 是标准强度,0.5 是轻微效果,1.5 是强烈效果 |
| fuse_lora | fuse_lora | 布尔值 | True | 是否融合风格到主模型,就像决定是临时贴纸还是永久印刷 | 是否将LoRA权重融合到基础模型中 | True 性能更好,False 更灵活 |
| prev_lora | prev_lora | FPLORA对象 | None | 前一个风格设置,用于叠加多个风格 | 用于链接多个LoRA的前置输入 | 想用多个风格时连接前一个 FramePackLoraSelect 节点 |
3.4 FramePackFindNearestBucket 节点
这个节点就像一个智能裁缝,会根据你的图片找到最合适的视频尺寸,避免视频变形或拉伸。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | IMAGE对象 | 来自图片加载节点 | 输入的参考图片,就像给裁缝看要做什么尺寸的衣服 | 用于计算最佳分辨率的输入图像 | 连接 Load Image 节点的输出 |
| base_resolution | base_resolution | 整数 | 640 | 基础分辨率,就像设定衣服的基本尺码 | 用于计算的基础分辨率值 | 640 适合大多数情况,显存不够可以调到 512 |
3.5 FramePackSampler 节点
这个节点是传统的视频生成器,就像一个经典的电影制作机,按照固定的方式生成视频。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | FramePackMODEL对象 | 来自模型加载节点 | 加载好的模型,就像准备好的画家 | 预加载的FramePack模型对象 | 连接模型加载节点的输出 |
| positive | positive | CONDITIONING对象 | 来自文本编码节点 | 正面描述,告诉模型你想要什么 | 正向条件编码,指导生成内容 | 连接 CLIP Text Encode 节点的输出 |
| negative | negative | CONDITIONING对象 | 来自文本编码节点 | 负面描述,告诉模型你不想要什么 | 负向条件编码,避免不想要的内容 | 连接负面提示的 CLIP Text Encode 节点 |
| start_latent | start_latent | LATENT对象 | 来自潜在空间节点 | 起始潜在空间,就像画布的初始状态 | 用于图像到视频转换的初始潜在表示 | 连接 VAE Encode 节点的输出 |
| steps | steps | 整数 | 30 | 生成步数,就像画家画画的笔画次数 | 扩散模型的推理步数 | 30 步通常够用,质量要求高可以调到 50 |
| use_teacache | use_teacache | 布尔值 | True | 是否使用缓存加速,就像记住之前的计算结果 | 启用TeaCache优化以提升采样速度 | True 可以显著提升速度 |
| teacache_rel_l1_thresh | teacache_rel_l1_thresh | 浮点数 | 0.15 | 缓存阈值,控制缓存的敏感度 | TeaCache的相对L1损失阈值 | 0.15 是平衡值,调小更精确但慢一些 |
| cfg | cfg | 浮点数 | 1.0 | 分类器自由引导强度,控制描述的影响力 | Classifier-Free Guidance强度 | 1.0 是标准值,调高让描述影响更强 |
| guidance_scale | guidance_scale | 浮点数 | 10.0 | 引导强度,控制生成质量 | 扩散引导的强度系数 | 10.0 是好的起点,可以根据效果调整 |
| shift | shift | 浮点数 | 0.0 | 时间偏移,调整生成的时间特性 | 时间步长的偏移参数 | 通常保持 0.0,特殊情况才调整 |
| seed | seed | 整数 | 0 | 随机种子,控制生成的随机性 | 随机数生成器的种子值 | 相同种子产生相同结果,想要不同效果就改变数字 |
| latent_window_size | latent_window_size | 整数 | 9 | 潜在窗口大小,控制每次处理的帧数 | 每个处理窗口的潜在帧数 | 9 是标准值,显存不够可以调小到 5 |
| total_second_length | total_second_length | 浮点数 | 5.0 | 视频总长度(秒),就像设定电影的时长 | 生成视频的总时长(秒) | 5 秒是好的开始,可以根据需要调整 |
| gpu_memory_preservation | gpu_memory_preservation | 浮点数 | 6.0 | 显存保留量,就像给其他程序留出空间 | 为其他进程保留的GPU内存量(GB) | 6.0 适合大多数情况,显存小可以调到 4.0 |
| sampler | sampler | unipc_bh1/unipc_bh2 | unipc_bh1 | 采样器类型,不同的生成算法 | 扩散采样器的算法选择 | unipc_bh1 通常效果更好 |
| image_embeds | image_embeds | CLIP_VISION_OUTPUT对象 | 来自CLIP Vision节点 | 图片的视觉特征,帮助模型理解图片内容 | 输入图像的CLIP视觉编码 | 连接 CLIP Vision Encode 节点的输出 |
| end_latent | end_latent | LATENT对象 | 可选 | 结束潜在空间,用于设定视频的结束状态 | 视频结束时的潜在表示 | 可选参数,用于控制视频结尾 |
| end_image_embeds | end_image_embeds | CLIP_VISION_OUTPUT对象 | 可选 | 结束图片的视觉特征 | 结束图像的CLIP视觉编码 | 配合 end_latent 使用 |
| embed_interpolation | embed_interpolation | disabled/weighted_average/linear | disabled | 图片特征插值方式,控制图片影响如何变化 | 图像嵌入的插值方法 | linear 可以让图片影响平滑过渡 |
| start_embed_strength | start_embed_strength | 浮点数 | 1.0 | 起始图片影响强度 | 起始图像嵌入的权重强度 | 1.0 是完全影响,0.5 是一半影响 |
| initial_samples | initial_samples | LATENT对象 | 可选 | 初始采样,用于视频到视频的转换 | 用于video2video的初始潜在样本 | 高级功能,一般不用 |
| denoise_strength | denoise_strength | 浮点数 | 1.0 | 去噪强度,控制对原始内容的保留程度 | 去噪过程的强度系数 | 1.0 是完全重新生成,0.5 是保留一半原始内容 |
3.6 FramePackSampler_F1 节点
这个节点是新一代的视频生成器,使用 F1 技术,就像从老式胶片机升级到数字摄像机,生成质量更高、更流畅。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | FramePackMODEL对象 | 来自模型加载节点 | 加载好的模型,必须是 F1 类型的模型 | 预加载的FramePack F1模型对象 | 连接 F1 模型加载节点的输出 |
| positive_timed_data | positive_timed_data | TIMED_CONDITIONING_WITH_METADATA对象 | 来自时间文本编码节点 | 带时间轴的描述数据,就像电影剧本 | 包含时间戳的条件编码数据 | 连接 FramePackTimestampedTextEncode 节点的输出 |
| negative | negative | CONDITIONING对象 | 来自文本编码节点 | 负面描述,告诉模型避免什么内容 | 负向条件编码 | 连接负面提示的文本编码节点 |
| steps | steps | 整数 | 30 | 生成步数,影响质量和速度 | 扩散模型的推理步数 | 30 步是好的平衡点 |
| use_teacache | use_teacache | 布尔值 | True | 是否使用缓存加速技术 | 启用TeaCache优化 | True 可以显著提升速度 |
| teacache_rel_l1_thresh | teacache_rel_l1_thresh | 浮点数 | 0.15 | 缓存阈值,控制缓存精度 | TeaCache的相对L1损失阈值 | 0.15 是推荐值 |
| cfg | cfg | 浮点数 | 1.0 | 分类器自由引导强度 | Classifier-Free Guidance强度 | 1.0 是标准值 |
| guidance_scale | guidance_scale | 浮点数 | 10.0 | 引导强度,控制生成质量 | 扩散引导强度 | 10.0 是好的起点 |
| shift | shift | 浮点数 | 0.0 | 时间偏移参数 | 时间步长偏移 | 通常保持 0.0 |
| seed | seed | 整数 | 0 | 随机种子,控制结果的可重现性 | 随机数生成器种子 | 相同种子产生相同结果 |
| gpu_memory_preservation | gpu_memory_preservation | 浮点数 | 6.0 | 显存保留量(GB) | 为其他进程保留的GPU内存 | 6.0 适合大多数情况 |
| sampler | sampler | unipc_bh1/unipc_bh2 | unipc_bh1 | 采样器算法选择 | F1采样器的具体算法 | unipc_bh1 通常效果更好 |
| start_latent | start_latent | LATENT对象 | 可选 | 起始潜在空间,用于图像到视频 | 初始潜在表示 | 连接 VAE Encode 节点输出 |
| start_image_embeds | start_image_embeds | CLIP_VISION_OUTPUT对象 | 可选 | 起始图片的视觉特征 | 起始图像的CLIP视觉编码 | 连接 CLIP Vision Encode 节点 |
| end_latent | end_latent | LATENT对象 | 可选 | 结束潜在空间 | 视频结束时的潜在表示 | 高级功能,控制视频结尾 |
| end_image_embeds | end_image_embeds | CLIP_VISION_OUTPUT对象 | 可选 | 结束图片的视觉特征 | 结束图像的CLIP视觉编码 | 配合 end_latent 使用 |
| embed_interpolation | embed_interpolation | disabled/weighted_average/linear | disabled | 图片特征插值方式 | 图像嵌入插值方法 | linear 可以实现平滑过渡 |
| start_embed_strength | start_embed_strength | 浮点数 | 1.0 | 起始图片影响强度 | 起始图像嵌入权重 | 1.0 是完全影响 |
| initial_samples | initial_samples | LATENT对象 | 可选 | 初始采样,用于视频到视频转换 | video2video的初始样本 | 高级功能 |
| denoise_strength | denoise_strength | 浮点数 | 1.0 | 去噪强度 | 去噪过程强度 | 1.0 是完全重新生成 |
3.7 FramePackTimestampedTextEncode 节点
这个节点就像一个智能剧本编辑器,可以让你为视频的不同时间段设置不同的描述,实现动态的视频内容。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip | clip | CLIP对象 | 来自CLIP加载节点 | 文本理解模型,就像翻译官 | CLIP文本编码器模型 | 连接 Load CLIP 节点的输出 |
| text | text | 多行文本 | 带时间戳的描述 | 带时间轴的描述文本,就像电影剧本 | 包含时间戳的提示词文本 | 例如:"[0s: 一只猫在草地上] [3s: 猫开始奔跑] [5s: 猫跳到树上]" |
| negative_text | negative_text | 文本 | 空或负面描述 | 不想要的内容描述 | 负向提示词 | 例如:"模糊,低质量,变形" |
| total_second_length | total_second_length | 浮点数 | 5.0 | 视频总时长(秒) | 视频的总持续时间 | 根据你想要的视频长度设置 |
| latent_window_size | latent_window_size | 整数 | 9 | 潜在窗口大小,影响时间戳对齐 | 采样器的处理窗口大小 | 需要和采样器节点的设置保持一致 |
| prompt_blend_sections | prompt_blend_sections | 整数 | 0 | 提示词混合段数,控制过渡的平滑度 | 提示词变化时的混合段数 | 0 是突然变化,2-3 是平滑过渡 |
3.8 FramePackTorchCompileSettings 节点
这个节点就像一个性能调优师,可以让模型运行得更快,但需要一定的技术基础。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| backend | backend | inductor/cudagraphs | inductor | 编译后端,就像选择不同的加速引擎 | PyTorch编译的后端选择 | inductor 兼容性更好,cudagraphs 速度更快但要求更高 |
| fullgraph | fullgraph | 布尔值 | False | 是否编译整个计算图 | 启用完整图模式编译 | False 更稳定,True 可能更快但容易出错 |
| mode | mode | default/max-autotune/max-autotune-no-cudagraphs/reduce-overhead | default | 编译模式,不同的优化策略 | 编译优化模式选择 | default 最稳定,max-autotune 最快但可能不稳定 |
| dynamic | dynamic | 布尔值 | False | 是否启用动态模式 | 启用动态形状编译 | False 更稳定,True 适合变化的输入尺寸 |
| dynamo_cache_size_limit | dynamo_cache_size_limit | 整数 | 64 | 缓存大小限制 | Dynamo缓存的大小限制 | 64 是默认值,内存多可以调大 |
| compile_single_blocks | compile_single_blocks | 布尔值 | True | 是否编译单个块 | 编译单个transformer块 | True 可以提升速度 |
| compile_double_blocks | compile_double_blocks | 布尔值 | True | 是否编译双重块 | 编译双重transformer块 | True 可以提升速度 |
4. 使用技巧和建议
4.1 显存优化技巧
- 显存不够用? 选择 fp8 量化模式,能节省大量显存
- 还是不够? 调小
latent_window_size到 5 或 7 - 模型加载慢? 使用
load_device设为offload_device - 生成过程卡顿? 增加
gpu_memory_preservation的值
4.2 质量提升技巧
- 使用高质量起始图片:输入图片至少要 512x512 像素
- 合理设置步数:30 步是平衡点,50 步质量更高但慢很多
- 启用 TeaCache:可以显著提升速度且几乎不影响质量
- 选择合适的采样器:unipc_bh1 通常效果最好
4.3 时间轴控制技巧
时间戳格式说明:
[0s: 描述内容] # 从0秒开始,持续到下一个时间戳
[3s-5s: 描述内容] # 从3秒到5秒的特定时间段
[5s: 新的描述内容] # 从5秒开始的新内容
实用例子:
一只小猫在阳光下睡觉 [2s: 小猫慢慢睁开眼睛] [4s-6s: 小猫伸懒腰] [6s: 小猫开始玩毛线球]
4.4 LoRA 使用技巧
- 风格强度:从 0.8 开始尝试,根据效果调整
- 多个 LoRA:可以叠加使用,但总强度不要超过 2.0
- 融合设置:
fuse_lora设为 True 可以提升性能
5. 常见问题解答
Q1: 为什么生成的视频很短?
A: 检查 total_second_length 参数,这个控制视频总长度。同时确保你的显存足够支持长视频生成。
Q2: 时间戳不起作用怎么办?
A:
- 确保使用 FramePackTimestampedTextEncode 节点
- 检查时间戳格式是否正确([0s: 内容])
- 确保连接到 FramePackSampler_F1 节点而不是普通的 FramePackSampler
Q3: 显存不够怎么办?
A: 按以下顺序尝试:
- 使用 fp8 量化模式
- 减小
latent_window_size到 5 - 降低
base_resolution到 512 - 缩短视频长度
Q4: 生成速度太慢怎么办?
A:
- 启用
use_teacache - 减少生成步数到 20
- 使用编译优化(FramePackTorchCompileSettings)
- 选择 fp8_e4m3fn_fast 量化模式
Q5: LoRA 加载失败怎么办?
A:
- 确保 LoRA 文件是 .safetensors 格式
- 检查 LoRA 是否兼容 HunyuanVideo
- 尝试降低 LoRA 强度到 0.5
- 检查 ComfyUI/models/loras 文件夹路径
Q6: F1 采样器和普通采样器有什么区别?
A:
- F1 采样器:支持时间轴控制,质量更高,适合复杂场景
- 普通采样器:更简单直接,兼容性更好,适合基础使用
6. 工作流程示例
基础图片转视频工作流程:
- 添加
Load Image节点加载起始图片 - 添加
VAE Encode节点编码图片 - 添加
CLIP Vision Encode节点提取图片特征 - 添加
LoadFramePackModel节点加载模型 - 添加
CLIP Text Encode节点编码描述文字 - 添加
FramePackSampler节点生成视频 - 添加
VAE Decode节点解码为视频
高级时间轴控制工作流程:
- 使用
FramePackTimestampedTextEncode节点替代普通文本编码 - 使用
FramePackSampler_F1节点替代普通采样器 - 在文本中使用时间戳格式:
[0s: 开始场景] [3s: 变化场景] - 设置合适的
prompt_blend_sections实现平滑过渡
LoRA 风格化工作流程:
- 添加
FramePackLoraSelect节点选择风格 - 将 LoRA 节点连接到模型加载节点
- 调整
strength参数控制风格强度 - 可以串联多个 LoRA 节点实现风格叠加
7. 总结
ComfyUI-FramePackWrapper_Plus 是一个功能强大的视频生成插件,它就像给你的 ComfyUI 装上了一个专业的视频制作工厂。通过合理使用不同的节点组合,你可以实现从简单的图片转视频到复杂的时间轴控制视频生成。
记住几个关键点:
- 显存不够就用量化和小窗口
- 想要高质量就用 F1 采样器和足够的步数
- 时间轴控制需要专门的节点组合
- LoRA 可以让视频呈现不同的艺术风格
- 耐心调试参数,找到最适合你需求的设置
希望这个教程能帮助你快速掌握这个强大的视频生成插件!