摘要
行业内很多工作室动辄十几张显卡集群渲染 AI 漫剧,很多创作者默认低配显卡根本做不了稳定长漫剧。本文打破这个认知,基于 Windows 平台、8GB 显存消费级显卡,搭建一套完全离线的 AI 漫剧工业化流水线,以 ComfyUI 为核心载体,搭配 Wan2.2-ReMixV3.0 视频模型、IPAdapter 角色特征缓存方案,解决漫剧最头疼的角色漂移、镜头闪烁、长片段时序崩坏三大核心难题。全文附带可直接复制运行的 Python 调度脚本、显存优化启动指令、批量分镜渲染、FFmpeg 自动混流成片代码,全程不依赖云端 API,无次数限制、无审核风控,成片规格适配红果短剧 9:16 竖屏标准。
具体教程资源请看这一篇文章:https://developer.aliyun.com/article/1746917?spm=a2c6h.13148508.setting.15.78724f0e4lsQGk
一、前置认知:为什么绝大多数人的本地漫剧方案都会翻车
很多网上流传的 ComfyUI 漫剧工作流只适合单镜头测试,一旦批量生成连续分镜、多镜头拼接,立刻出现人物变脸、画风跳变、肢体穿帮,8G 显存环境下更容易直接 OOM 闪退。 底层原因:
- 原生 Wan 推理没有持久化角色特征,每一段视频独立采样,帧间没有特征绑定;
- 模型权重一次性全部加载进显存,绘图、视频、TTS 模型抢占显存资源;
- 缺少任务调度逻辑,人工排队渲染,无法自动续跑、断点恢复;
- 分镜、字幕、音频、视频片段分离,后期合并全靠手动操作。
本方案核心思路:显存分层加载 + 角色特征持久缓存 + 异步任务队列,模型按需加载、用完即卸载,角色特征向量单独保存复用,实现单 8G 显卡稳定跑连续漫剧集数。
硬件基线:
- GPU:RTX4050/3060 8G
- 内存:16GB 起步,推荐 32GB
- 系统:Windows10/11
- CUDA 版本:12.1
- 核心组件:ComfyUI、Wan2.2-ReMixV3.0、IPAdapter、FFmpeg、Ollama(本地剧本解析)
二、ComfyUI 显存锁死优化启动脚本(必用)
新建start_comfy_8g_lowvram.bat,直接双击启动,关闭不必要的显存占用模块:
@echo off set CUDA_VISIBLE_DEVICES=0 set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128 set COMFYUI_VRAM_MODE=lowvram set COMFYUI_DISABLE_XFORMERS=0 set COMFYUI_FP16=true python main.py pause
参数说明:
max_split_size_mb:128:限制显存分片大小,防止一次性爆显存;lowvram模式:权重自动在显存、内存之间交换;- FP16 半精度推理,显存占用直接减半。
三、角色特征缓存核心 Python 脚本(解决人物漂移)
该脚本读取参考人设图,提前提取 IPAdapter 特征向量,保存为.bin文件,后续所有分镜、视频推理统一加载该特征,保证整部漫剧人物五官、服饰一致。
import torch from PIL import Image import comfy.sd import comfy.utils from ipadapter import IPAdapterPlus # 角色资产保存路径 CHARACTER_CACHE_PATH = r"./character_cache/hero.bin" REF_IMAGE_PATH = r"./ref/hero_ref.jpg" def extract_character_embedding(ref_img_path, save_path): device = torch.device("cuda" if torch.cuda.is_available() else "cpu") ip_model = IPAdapterPlus("ip-adapter-plus_sd15", device=device) img = Image.open(ref_img_path).convert("RGB") emb = ip_model.get_image_embedding(img) torch.save(emb, save_path) print(f"角色特征向量已保存至 {save_path}") return emb if __name__ == "__main__": extract_character_embedding(REF_IMAGE_PATH, CHARACTER_CACHE_PATH)
使用方式:每一个角色只需要提取一次特征,后续所有分镜渲染直接加载缓存文件,不用反复喂参考图,大幅降低显存开销,从根源减少变脸。
四、批量分镜渲染调度脚本(断点续跑、自动跳过已渲染镜头)
漫剧剧本拆分后生成shot_list.json,记录每一条镜头提示词、时长、分辨率、角色缓存路径,脚本自动遍历任务,渲染成功写入标记,中断后再次运行可以从失败位置继续,不用从头跑。
import json import os import requests COMFYUI_API_URL = "http://127.0.0.1:8188/prompt" SHOT_JSON = r"./shot_list.json" OUTPUT_DIR = r"./output/shots" def submit_workflow(prompt_data): res = requests.post(COMFYUI_API_URL, json=prompt_data) return res.json() if __name__ == "__main__": os.makedirs(OUTPUT_DIR, exist_ok=True) with open(SHOT_JSON, "r", encoding="utf-8") as f: shot_data = json.load(f) for shot in shot_data: flag_file = os.path.join(OUTPUT_DIR, f"{shot['shot_id']}.ok") if os.path.exists(flag_file): print(f"镜头{shot['shot_id']}已渲染完成,跳过") continue payload = { "prompt": shot["workflow"], "client_id": f"shot_{shot['shot_id']}" } submit_workflow(payload) open(flag_file, "w", encoding="utf-8").write("done") print(f"镜头{shot['shot_id']}渲染任务提交成功")
配套 shot_list.json 示例片段:
[ { "shot_id":1, "prompt":"古风男主,黑衣,室内烛光,侧脸,写实漫剧画风,9:16", "character_cache":"./character_cache/hero.bin", "duration":24, "workflow":{} } ]
五、FFmpeg 自动混流成片指令(字幕 + 音频 + 视频一键合成,红果标准)
所有分镜视频、TTS 配音音频、srt 字幕生成完毕后,执行这条命令,直接输出符合平台规范的成片,9:16 竖屏、H.264 编码,码率适配短剧上传要求。
ffmpeg -y -f concat -safe 0 -i filelist.txt -i audio_total.wav -filter_complex "subtitles=subtitle.srt:force_style='Fontsize=24,PrimaryColour=&HFFFFFF&'" -c:v libx264 -preset medium -crf 23 -vf "scale=720:1280" -c:a aac -b:a 128k final_episode.mp4
filelist.txt写法:
file 'shot1.mp4' file 'shot2.mp4' file 'shot3.mp4'
六、Wan2.2-ReMixV3.0 时序优化参数(长镜头不闪烁)
在 ComfyUI 的 Wan 视频节点填入以下参数,是针对 8G 显存调优的稳定参数:
- 采样器:DPM++ 2M SDE Karras
- 采样步数:22~26
- 分辨率:576×1024(优先,显存压力最小)
- 帧数量:24 帧
- Guidance:7.0
- 启用帧间特征复用:True
- 视频量化:FP8
不建议直接拉到 720×1280 长片段渲染,多段短镜头拼接 + 特征缓存,画质和稳定性远好于单条长视频。
七、自动化质检脚本(画面穿帮、人脸崩坏自动筛查)
批量渲染完之后,自动检测画面异常,过滤崩坏镜头,减少人工审片成本:
import cv2 import numpy as np def check_frame_quality(img_path): img = cv2.imread(img_path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) blur = cv2.Laplacian(gray, cv2.CV_64F).var() # 模糊度阈值,低于阈值判定为崩坏画面 if blur < 120: return False return True if __name__ == "__main__": import glob img_list = glob.glob("./output/shots/*.png") bad_shots = [] for p in img_list: if not check_frame_quality(p): bad_shots.append(p) print("检测到异常镜头列表:", bad_shots)
八、整套流水线避坑清单(工作室踩坑总结)
- 不要同时加载绘图大模型 + 视频模型 + 本地 LLM,脚本控制模型按需加载释放;
- IPAdapter 特征文件不要混用,每个角色独立缓存,不要多个角色特征叠加;
- Wan2.2-ReMixV3.0 优先使用 Q4_K_M 量化版本,原版 FP16 权重 8G 显卡很难跑通;
- 成片不要直接输出高码率,红果短剧平台对码率有上限,过高会被二次压缩糊掉;
- 本地 TTS 推荐用 GGUF 量化语音模型,避免调用在线配音接口,保证全链路离线可控。
九、资源配套说明
整套工作流、预调好的 ComfyUI json、角色提示词模板、男女频短剧编剧 Skill、全部脚本打包在一起,拿到之后直接导入 ComfyUI 即可启动流水线,不用从零搭建节点。整套方案适配个人创作者、小工作室批量出漫剧,不用租赁 GPU 服务器,单 8G 游戏本就能稳定持续产出剧集。