ComfyWarp插件完全使用指南 - 让视频风格化变得简单
1. 插件简介
ComfyWarp是一个强大的ComfyUI插件,它来自于WarpFusion项目。这个插件就像是一个专门处理视频的魔法工具箱,可以让你把普通的视频变成各种风格的艺术作品。
插件地址: https://github.com/Sxela/ComfyWarp
它能做什么?
- 把视频的每一帧都变成艺术画风(比如油画、水彩画、动漫风格等)
- 让视频保持连贯性,不会出现闪烁或者跳跃感
- 控制视频的运动效果,让画面更加流畅
- 自动批量处理视频帧,省去手动操作的麻烦
简单来说,这个插件就像是一个视频美颜大师,不仅能让你的视频变美,还能保证前后帧之间看起来很自然。
2. 如何安装
方法一:使用安装脚本(推荐)
- 创建一个新文件夹,名字只能用英文字母和数字,不要有空格
- 下载插件提供的install.bat和run.bat文件放到这个文件夹里
- 双击运行install.bat文件,等待安装完成
- 下载插件压缩包,解压到ComfyWarp/ComfyUI/custom_nodes文件夹里
- 关闭窗口后运行run.bat文件
方法二:手动安装
- 打开ComfyUI的custom_nodes文件夹
- 下载ComfyWarp插件的所有文件
- 放到custom_nodes文件夹里
- 重启ComfyUI
3. 节点详细解析
3.1 VideoFrameDataset - 视频帧数据管理器
这个节点就像是一个视频管理员,负责从视频文件中提取出一帧帧的画面,然后按照你的要求整理好。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 视频路径 | video_path | 文件路径 | 你的视频文件路径 | 告诉节点你的视频文件放在哪里 | 输入视频文件的完整路径 | 比如:C:\Videos\my_video.mp4 |
| 开始帧 | start_frame | 数字 | 0 | 从视频的第几帧开始处理 | 指定处理的起始帧号 | 想从第10秒开始就填300(30fps的话) |
| 结束帧 | end_frame | 数字 | -1 | 处理到视频的第几帧结束 | 指定处理的结束帧号 | -1表示处理到最后一帧 |
| 间隔帧 | nth_frame | 数字 | 1 | 每隔几帧取一帧 | 帧采样间隔 | 填2就是每隔一帧取一帧,可以减少工作量 |
3.2 FrameLoader - 帧图片加载器
这个节点就像是一个图片播放器,专门负责从文件夹里按顺序读取视频帧图片。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 帧文件夹路径 | frame_folder | 文件夹路径 | 存放帧图片的文件夹 | 告诉节点去哪个文件夹找图片 | 指定包含视频帧的目录路径 | 比如:C:\Frames\video_frames\ |
| 当前帧号 | current_frame | 数字 | 0 | 现在要加载第几帧 | 当前处理的帧序号 | 通常连接到计数器节点 |
3.3 OpticalFlow - 运动轨迹分析器
这个节点就像是一个运动检测专家,能够分析两张连续图片之间物体是怎么移动的。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 前一帧 | frame1 | 图片 | 连接帧加载器 | 第一张图片 | 光流计算的源帧 | 连接到FrameLoader的输出 |
| 后一帧 | frame2 | 图片 | 连接帧加载器 | 第二张图片 | 光流计算的目标帧 | 连接到下一帧的FrameLoader |
| 精度等级 | accuracy_level | 整数 | 2 | 运动检测的精细程度 | 光流计算的精度级别 | 数字越大越精确但速度越慢 |
3.4 FlowWarp - 画面变形器
这个节点就像是一个图片变形师,能够根据运动轨迹把图片进行相应的变形。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输入图片 | input_image | 图片 | 连接图片节点 | 要变形的图片 | 需要应用光流变形的图像 | 连接到你想变形的图片 |
| 光流数据 | flow_data | 光流 | 连接OpticalFlow | 运动轨迹信息 | 从OpticalFlow节点获取的运动向量 | 连接OpticalFlow的输出 |
| 变形强度 | warp_strength | 小数 | 1.0 | 变形的强烈程度 | 光流应用的强度系数 | 0.5是轻微变形,2.0是强烈变形 |
3.5 LoopbackLoader - 循环加载器
这个节点就像是一个智能相册,专门用来加载之前处理过的结果图片,实现循环处理。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输出文件夹 | output_folder | 文件夹路径 | 结果存放的文件夹 | 去哪里找之前处理的图片 | 指定渲染输出的目录 | 比如:C:\Output\rendered_frames\ |
| 初始图片 | init_image | 图片 | 连接图片节点 | 如果没有找到图片就用这张 | 当输出文件夹为空时的默认图像 | 连接到你的起始图片 |
| 当前帧号 | current_frame | 数字 | 0 | 现在要加载第几帧 | 当前处理的帧序号 | 通常连接到计数器 |
3.6 GetPrevious - 前帧获取器
这个节点就像是一个时光机,能够同时给你当前帧和前一帧的图片。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 当前帧 | current_frame | 图片 | 连接图片节点 | 现在这一帧的图片 | 当前处理的帧图像 | 连接到FrameLoader的输出 |
| 帧序号 | frame_number | 数字 | 0 | 帧的编号 | 当前帧的序号 | 连接到计数器节点 |
3.7 ResizeToFit - 智能缩放器
这个节点就像是一个智能相框,能够把图片调整到合适的大小,同时保持图片不变形。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输入图片 | input_image | 图片 | 连接图片节点 | 要调整大小的图片 | 需要调整尺寸的源图像 | 连接到你的图片 |
| 目标宽度 | target_width | 数字 | 512 | 想要的图片宽度 | 目标图像的宽度像素 | 常用512、768、1024等 |
| 目标高度 | target_height | 数字 | 512 | 想要的图片高度 | 目标图像的高度像素 | 常用512、768、1024等 |
| 保持比例 | keep_aspect | 布尔 | True | 是否保持图片不变形 | 是否维持原始宽高比 | True不变形,False可能变形 |
3.8 SaveFrame - 帧保存器
这个节点就像是一个自动拍照机,把处理好的图片按照规定的格式保存到文件夹里。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输入图片 | input_image | 图片 | 连接图片节点 | 要保存的图片 | 需要保存的图像数据 | 连接到处理后的图片 |
| 保存路径 | output_dir | 文件夹路径 | 你选择的文件夹 | 图片保存到哪里 | 输出文件的目录路径 | 比如:C:\Output\frames\ |
| 批次名称 | batch_name | 文本 | ComfyWarp | 文件名的前缀 | 保存文件的命名前缀 | 比如填"test",文件名就是test000001.png |
| 当前帧号 | current_frame | 数字 | 0 | 现在是第几帧 | 当前处理的帧序号 | 连接到计数器节点 |
3.9 ConsistencyMixer - 一致性混合器
这个节点就像是一个画面融合专家,能够把不同的画面按照特定的方式混合在一起。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 一致性图1 | consistency_map1 | 图片 | 连接一致性图 | 第一张一致性参考图 | 第一个一致性蒙版 | 连接到OpticalFlow的输出 |
| 一致性图2 | consistency_map2 | 图片 | 连接一致性图 | 第二张一致性参考图 | 第二个一致性蒙版 | 可以连接另一个一致性图 |
| 模糊程度 | blur_amount | 小数 | 0.5 | 图片边缘模糊的程度 | 高斯模糊的强度 | 0是不模糊,1是很模糊 |
| 膨胀程度 | dilate_amount | 小数 | 0.0 | 图片区域扩张的程度 | 形态学膨胀的强度 | 让白色区域变大 |
3.10 RenderVideo - 视频渲染器
这个节点就像是一个专业的视频制作师,能够把一堆图片合成为完整的视频文件。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输出文件夹 | output_dir | 文件夹路径 | 你的输出文件夹 | 视频文件保存到哪里 | 渲染视频的输出目录 | 比如:C:\Videos\output\ |
| 帧文件夹 | frames_input_dir | 文件夹路径 | 帧图片的文件夹 | 去哪里找要合成的图片 | 包含视频帧的输入目录 | 连接SaveFrame的输出路径 |
| 批次名称 | batch_name | 文本 | ComfyWarp | 找图片时的文件名前缀 | 匹配帧文件的命名前缀 | 要和SaveFrame的batch_name一致 |
| 开始帧 | first_frame | 数字 | 0 | 从第几帧开始做视频 | 视频渲染的起始帧 | 通常是0 |
| 结束帧 | last_frame | 数字 | -1 | 到第几帧结束 | 视频渲染的结束帧 | -1表示到最后一帧 |
| 渲染触发帧 | render_at_frame | 数字 | 100 | 到第几帧时开始制作视频 | 触发视频渲染的帧数 | 比如处理100帧后开始制作视频 |
| 当前帧号 | current_frame | 数字 | 0 | 现在处理到第几帧 | 当前处理的帧序号 | 连接到计数器 |
| 帧率 | fps | 数字 | 30 | 视频每秒播放多少帧 | 输出视频的帧率 | 30fps比较流畅 |
| 输出格式 | output_format | 选择 | h264_mp4 | 视频文件的格式 | 输出视频的编码格式 | h264_mp4是最常用的 |
| 防闪烁 | use_deflicker | 布尔 | True | 是否去除视频闪烁 | 是否启用去闪烁算法 | True可以让视频更流畅 |
3.11 FlowBlend - 流畅混合器
这个节点就像是一个画面平滑专家,能够让连续的视频帧看起来更加流畅自然。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 当前帧 | current_frame | 图片 | 连接图片节点 | 现在这一帧的图片 | 当前处理的帧图像 | 连接到当前帧的图片 |
| 前一帧 | previous_frame | 图片 | 连接图片节点 | 前一帧的图片 | 上一帧的图像数据 | 连接到前一帧的图片 |
| 变形后的前帧 | warped_previous | 图片 | 连接FlowWarp | 变形处理后的前一帧 | 经过光流变形的前帧 | 连接FlowWarp的输出 |
| 一致性图 | consistency_map | 图片 | 连接一致性图 | 哪些区域需要保持一致 | 一致性蒙版图像 | 连接OpticalFlow的一致性输出 |
| 混合强度 | blend_strength | 小数 | 0.5 | 混合的强烈程度 | 帧间混合的强度 | 0.5是适中的混合 |
3.12 SchedulerString - 文本调度器
这个节点就像是一个智能文本切换器,能够根据当前的帧数自动切换不同的文本内容。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 开始帧 | start | 数字 | 0 | 从第几帧开始 | 调度的起始帧号 | 通常是0 |
| 结束帧 | end | 数字 | 100 | 到第几帧结束 | 调度的结束帧号 | 比如100帧 |
| 当前帧 | current_frame | 数字 | 0 | 现在是第几帧 | 当前处理的帧序号 | 连接到计数器 |
| 文本列表 | text_list | 文本 | "prompt1, prompt2" | 要切换的文本内容 | 按帧切换的文本序列 | 比如不同的提示词 |
3.13 SchedulerFloat - 小数调度器
这个节点就像是一个智能数值调节器,能够根据当前帧数自动调整各种数值参数。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 开始帧 | start | 数字 | 0 | 从第几帧开始 | 调度的起始帧号 | 通常是0 |
| 结束帧 | end | 数字 | 100 | 到第几帧结束 | 调度的结束帧号 | 比如100帧 |
| 当前帧 | current_frame | 数字 | 0 | 现在是第几帧 | 当前处理的帧序号 | 连接到计数器 |
| 数值列表 | value_list | 文本 | "0.5, 0.7, 0.9" | 要切换的数值 | 按帧切换的数值序列 | 比如不同的强度值 |
3.14 SchedulerInt - 整数调度器
这个节点就像是一个智能计数器,能够根据当前帧数自动调整各种整数参数。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 开始帧 | start | 数字 | 0 | 从第几帧开始 | 调度的起始帧号 | 通常是0 |
| 结束帧 | end | 数字 | 100 | 到第几帧结束 | 调度的结束帧号 | 比如100帧 |
| 当前帧 | current_frame | 数字 | 0 | 现在是第几帧 | 当前处理的帧序号 | 连接到计数器 |
| 整数列表 | value_list | 文本 | "10, 20, 30" | 要切换的整数 | 按帧切换的整数序列 | 比如不同的步数 |
3.15 StyleTransferBlend - 风格传输混合器
这个节点就像是一个画风调节器,能够控制风格化效果的强度,让你在原始画面和风格化画面之间自由调节。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 原始帧 | raw_frame | 图片 | 连接原始图片 | 没有处理过的原始图片 | 原始视频帧 | 连接到原始视频帧 |
| 风格化帧 | stylized_frame | 图片 | 连接风格化图片 | 已经加上风格的图片 | 经过风格转换的帧 | 连接到AI处理后的图片 |
| 变形后的前帧 | warped_previous | 图片 | 连接FlowWarp | 变形处理后的前一帧 | 经过光流变形的前帧 | 连接FlowWarp的输出 |
| 一致性图 | consistency_mask | 图片 | 连接一致性图 | 哪些区域需要保持一致 | 一致性蒙版图像 | 连接OpticalFlow的一致性输出 |
| 风格强度 | style_strength | 小数 | 0.8 | 风格效果的强度 | 风格化的混合比例 | 0是原始画面,1是完全风格化 |
3.16 KeyframedFlowApplication - 关键帧流应用器
这个节点就像是一个运动魔法师,能够把一个视频的运动效果应用到另一个视频上。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 源视频 | source_video | 视频 | 连接视频节点 | 要应用运动的视频 | 目标视频序列 | 连接到你要加运动的视频 |
| 运动视频 | motion_video | 视频 | 连接视频节点 | 提供运动信息的视频 | 运动参考视频序列 | 连接到有运动的参考视频 |
| 重复次数 | repeat_dict | 文本 | "{}" | 某些帧的运动重复几次 | 帧重复的字典配置 | 比如{10: 3}表示第10帧重复3次 |
| 运动权重 | weight_dict | 文本 | "{}" | 某些帧的运动强度 | 运动强度的字典配置 | 比如{20: 2.0}表示第20帧运动放大2倍 |
4. 使用技巧和建议
4.1 基本工作流程
- 准备阶段:用VideoFrameDataset加载你的视频
- 分析阶段:用OpticalFlow分析运动轨迹
- 处理阶段:结合AI模型对每帧进行风格化处理
- 融合阶段:用FlowBlend保证帧间的连贯性
- 输出阶段:用RenderVideo合成最终视频
4.2 参数调优建议
- 风格强度:新手建议从0.5开始,逐步调整
- 混合强度:0.3-0.7之间效果比较自然
- 帧率设置:保持和原视频相同的帧率
- 分辨率选择:512x512是比较好的起点
4.3 性能优化
- 使用nth_frame参数减少处理的帧数
- 合理设置start_frame和end_frame只处理需要的片段
- 开启防闪烁功能提高视频质量
5. 常见问题解答
Q:为什么视频处理很慢?
A:可以试试调整nth_frame参数,比如设置为2,这样只处理一半的帧数。
Q:生成的视频有闪烁怎么办?
A:确保使用了FlowBlend节点,并且开启了RenderVideo的防闪烁功能。
Q:视频不够流畅怎么办?
A:检查OpticalFlow的accuracy_level参数,适当提高精度。
Q:内存不够用怎么办?
A:降低处理分辨率,或者分段处理长视频。
Q:颜色看起来不对?
A:调整StyleTransferBlend的style_strength参数。
6. 进阶应用
6.1 批量处理技巧
使用调度器节点可以让你在处理过程中自动切换不同的参数,比如:
- 前50帧用一种风格
- 后50帧用另一种风格
- 中间有个渐变过程
6.2 创意应用
- 时间重映射:使用KeyframedFlowApplication创造独特的时间效果
- 风格渐变:结合多个StyleTransferBlend节点创造渐变效果
- 运动夸张:调整光流参数创造夸张的运动效果
6.3 与其他节点的配合
ComfyWarp可以很好地与其他ComfyUI节点配合使用:
- 结合ControlNet做更精确的控制
- 结合AnimateDiff做更丰富的动画效果
- 结合各种AI模型做风格转换