ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

同人MV制作全流程:ComfyUI与图生视频的角色一致性实战

同人MV制作全流程:ComfyUI与图生视频的角色一致性实战 很多同人视频看着像“随手剪出来的”实际上背后是一条完整的视频生产流水线。**《【原神/奥黛塔】我在《雾里》爱着你》**这种标题覆盖了角色设定、分镜脚本、批量出图、动态化、音乐卡点、字幕封装等多个环节。这篇文章不拆剧情只从技术角度把这个同人 MV 的制作链路完整讲清楚需要什么工具、硬件要求多高、怎么批量出图、怎么把图片序列合成视频、怎么接 API 做更高效的流程。如果你是想做二次元二创账号的运营或是想用 AI 生成短视频但一直在单张出图的阶段打转那这篇内容可以直接当一套操作手册。文章会覆盖本地 ComfyUI 工作流、云端视频生成平台的替代方案、FFmpeg 混流、剪辑卡点以及批量任务和接口调用的具体写法。整套流程拆出来的每一个环节也可以单独复用到其他视频项目里。1. 核心能力速览先给结论把这个“同人 MV 生产项目”的技术规格列出来。能力项说明项目类型二次元角色同人 MV / 二创视频生产企划核心任务角色一致性出图、分镜图生成、图生视频、音乐卡点、字幕封装主要工具ComfyUI Stable DiffusionFFmpeg剪映/必剪云端 AI 视频平台作为补充本地推理方式本地 GPU 推理 云端 API 备选显存需求AI 绘图建议 8GB 起步图生视频和动画模型建议 12GB 以上具体以实际模型和分辨率测试为准是否支持 CPU本地绘图可用 CPU 跑但速度会很慢图生视频不建议纯 CPU 推理是否支持 APIComfyUI 提供/prompt接口云端平台一般提供 HTTP API是否支持批量任务支持可以用脚本批量生成提示词、批量出图、批量合成视频片段输出格式PNG 图像序列 / MP4 视频 / 带字幕的硬字幕视频适合场景同人角色 MV、角色设定展示、短视频二创、AIGC 技术练习从整体看这条流程的核心不在于某一个模型有多强而在于怎么把“角色固定住”。二创视频最怕的就是同一个人物在不同镜头里长得不一样。所以下面所有操作都会重点围绕“角色一致性”展开。2. 适用场景与使用边界这个技术方案适合以下几类人同人内容创作者想把一个角色或一组角色做成带剧情、带音乐的视频B 站、抖音、小红书等平台的短视频运营需要稳定产出同一 IP 风格内容AIGC 学习者想练习图生视频、批量生成、API 调用和视频封装个人或者小团队想搭一套低成本视频素材生产管线。它不适合什么场景不适合需要获得原 IP 完整商业授权的场景。同人作品的商业化和公开传播需要遵守官方同人创作指引不能默认可以商用不适合完全没有提示词基础的用户。虽然 ComfyUI 可以套工作流但要做角色一致性还是需要理解参考图、采样步数、种子和 ControlNet 这些概念不适合把 AI 生成画面直接冒充官方动画截图或官方宣传素材的行为。合规边界必须单独强调。标题中涉及的“原神”角色以及相关游戏素材属于游戏公司的知识产权。同人创作可以参考官方发布的二创指引但发布平台、是否允许商业化、能否使用游戏原声和官方立绘都要以官方最新规则和视频平台版权政策为准。歌曲音频同样受版权保护最稳妥的做法是使用平台曲库里可商用/已授权的音乐或者购买背景音乐授权。生成角色人脸、声音相关素材时还需要确认素材来源是否已获得本人或权利人授权不能直接拿他人肖像做训练或生成。3. 环境准备与前置条件先把环境分成“本地出图”和“云端生成”两条线路。本地出图适合对画面风格控制要求高、需要批量产出的场景云端生成适合不想折腾显卡、只想要现成视频片段的场景。3.1 本地方案硬件需求GPUNVIDIA 显卡优先8GB 显存可以用 SD1.5 类模型出图12GB 及以上可以跑更大模型和部分图生视频流程系统Windows 10/11、Ubuntu 20.04 或更新版本均可内存16GB 起步建议 32GB磁盘ComfyUI 本体不大但模型文件很容易占掉 20GB 以上建议预留 50GB 左右的可用空间。没有 NVIDIA 显卡的用户也可以用 CPU 或核显跑 Stable Diffusion但出图速度会明显变慢视频生成更是吃力。3.2 软件依赖Python 3.10 或 3.11GitNVIDIA 驱动和 CUDA 环境PyTorch建议安装 GPU 版本FFmpeg用于图片序列合成视频和音频混流ComfyUI 本体以及 ComfyUI 常用自定义节点。3.3 云端方案需求如果不想装 ComfyUI可以直接使用支持文生视频和图生视频的 AI 平台。一般只需要注册账号、充值套餐、在网页或 API 里提交提示词就能得到短视频片段。云端方案的好处是省显卡缺点是单个成片可控性弱、批量任务需要看平台套餐限制而且涉及角色 IP 的内容在公开平台生成时要特别注意平台的生成规范。4. 安装部署与启动方式4.1 ComfyUI 安装先装 ComfyUI建议用 Git 克隆官方仓库。以下命令在命令行执行git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI pip install -r requirements.txt如果有 NVIDIA 显卡先确认 PyTorch 是 GPU 版本。安装完成后把需要用到的 Stable Diffusion 模型文件放到ComfyUI/models/checkpoints/目录把参考图放到ComfyUI/input/目录。如果模型文件是.safetensors格式直接复制进去即可。需要注意不同的模型对应不同的触发词和画面风格。下载模型时最好把模型说明文件一起保存方便后续写提示词。4.2 启动 ComfyUI命令行方式启动python main.py --listen 127.0.0.1 --port 8188启动成功后浏览器访问http://127.0.0.1:8188就能看到 WebUI。默认工作流自带一个文生图模板可以直接改提示词测试出图。如果只需要本机使用建议使用127.0.0.1而不是0.0.0.0避免局域网内其他人访问到节点界面。如果要在多台机器上调用这个服务再考虑把监听地址改为局域网 IP并且做好访问控制。4.3 视频生成与剪辑工具ComfyUI 负责出图视频合成用 FFmpeg剪辑和卡点用剪映或必剪。剪映这类工具的快捷键和字幕功能上手快适合做歌词卡点。FFmpeg 则更适合作批处理把几百张图片按顺序合成一条视频片段。5. 功能测试与效果验证整套流程可以从五个测试维度来验证角色一致性、单张构图、图生视频镜头、音乐卡点、最终成片。5.1 角色一致性测试先准备一张角色参考图。这张图可以是自己画的、自己用 AI 生成的、或者经过授权可使用的素材。测试目标是让后续所有镜头都保持“同一个人”。在 ComfyUI 中可以用参考图 提示词的方式做图生图同时固定种子值。固定种子可以让随机噪声变化降到最低。测试时写一组基础提示词奥黛塔设定站在雾里目光望向镜头薄雾环绕柔光电影感构图半身镜头温暖色调负向提示词写lowres, bad anatomy, bad hands, extra fingers, watermark, text, logo, jpeg artifacts检查点在于发色、瞳色、服装细节是否和参考图一致换一个背景和动作后人物脸部有没有明显变形同一组提示词多次生成脸型是否稳定。如果人物一致性不达标优先做三件事提高参考图权重、降低提示词对服装细节的描述强度、固定同一套种子范围。参考图最好是正面、无遮挡、脸部清晰的图。5.2 分镜批量生成测试同人 MV 一般由多个镜头组成比如“近景看镜头”“侧身走在雾里”“低头伸手”等。每个镜头都要单独生成一张到多张底图。把镜头描述写进提示词按镜头编号依次生成shot_01: 奥黛塔设定站在雾里目光望向镜头薄雾环绕柔光 shot_02: 奥黛塔设定侧身走在雾里风吹起头发背景虚化 shot_03: 奥黛塔设定低头伸手指尖碰到雾气冷暖光交接每张底图生成后先筛掉构图错误、手部崩坏、脸部变形的图再把合格图放入单独的镜头目录。这一步不能省因为后面视频合成很快发现问题再返工反而浪费时间。5.3 图生视频测试把静态图变成动态视频有两种常见方式用 ComfyUI 的动画/视频生成自定义节点把同样一张图作为起始帧让模型生成一段短镜头用云端图生视频平台上传分镜图并输入动态描述比如“镜头缓慢推进”“人物头发被风吹动”“雾气缓缓扩散”。动态描述要尽量具体。不要只写“动起来”要写出镜头运动方向、人物动作和画面中哪些元素在变化。测试时先输出 3 到 5 秒的短视频片段检查人物是否形变、动作是否自然。如果模型把人物脸改动了就要把“人物面部保持不变”写进提示词或者回到上一环节重新出底图。5.4 音乐卡点测试音乐卡点是 MV 观感的重要部分。实际操作中先把背景音乐导入剪映或必剪观察音频波形找到重拍位置然后按重拍切分视频片段让画面切换和鼓点对齐。也可以手动标记时间点。假设音乐前奏是 0-4 秒第一段副歌从第 10 秒开始那分镜切换点就可以安排在 4 秒、8 秒、10 秒、12 秒这类位置。卡点的目的是让观众产生“画面跟着音乐走”的感觉不需要每一拍都切切得太碎反而头晕。5.5 合成与导出测试音频、画面、字幕都准备好以后进入合成阶段。在剪映里操作比较直观导入所有视频片段、把背景音乐拖到音轨、调整片段长度、加字幕、导出 MP4。如果想用命令行批处理FFmpeg 也可以完成“图片序列 音频 → 视频”的操作ffmpeg -framerate 24 -i frame_%04d.png -i bgm.mp3 \ -c:v libx264 -pix_fmt yuv420p -c:a aac -shortest output.mp4这条命令把frame_0001.png、frame_0002.png这样的序列文件合成 24 帧每秒的 MP4音频轨道使用bgm.mp3-shortest表示音频或视频谁先结束就按谁的长度输出。导出后检查三件事画面有没有花屏、音频和画面是否同步、字幕是否被裁切。如果导出文件体积过大可以降低码率或分辨率例如加上-b:v 8M控制视频码率。6. 接口 API 与批量任务单张生成只适合调试。真正做同人 MV要管理几十个分镜、几百张图必须用脚本批量处理。6.1 批量提示词脚本先维护一个镜头描述文件Python 脚本读取后生成统一的提示词队列import json shots [ {pose: standing_in_fog, action: looking_at_camera, light: soft_light}, {pose: turning_side, action: wind_blowing, light: cold_blue}, {pose: reaching_hand, action: touching_fog, light: warm_bokeh}, ] queue [] for i, shot in enumerate(shots, start1): queue.append({ id: fshot_{i:02d}, prompt: ( 奥黛塔设定 f{shot[pose]} f{shot[action]} f{shot[light]} 薄雾环绕电影感构图半身镜头温暖色调 ), negative_prompt: lowres, bad anatomy, watermark, text, steps: 28, seed: 20250410 i, }) with open(prompt_queue.json, w, encodingutf-8) as f: json.dump(queue, f, ensure_asciiFalse, indent2) print(f生成 {len(queue)} 条提示词任务)这个脚本把每个分镜的三要素姿态、动作、光线组合成完整提示词并写入一个 JSON 文件。后续可以再写一个脚本读取 JSON调用 ComfyUI API 或云端平台 API把任务提交上去。6.2 ComfyUI API 调用ComfyUI 的/prompt接口可以接收一个工作流对象把参数直接通过 HTTP 提交。因为不同工作流的节点配置不同这里给一个通用参考import requests import json # 从接口读取工作流模板实际节点 ID 需要按当前工作流调整 workflow { 3: { class_type: KSampler, inputs: { seed: 20250410, steps: 28, cfg: 7.0, sampler_name: euler, scheduler: normal, denoise: 1.0 } } } payload {prompt: workflow} resp requests.post( http://127.0.0.1:8188/prompt, jsonpayload, timeout30 ) print(resp.json())实际使用时必须从 ComfyUI 的“开发模式/Export API 格式”中导出真实工作流替换这里的节点结构。直接把这段代码拿去跑大概率会报错。提交任务后ComfyUI 返回的是一个prompt_id可以轮询/history/{prompt_id}获取任务状态和输出图像路径。6.3 云端视频平台 API 模板如果使用云端平台生成视频片段一般流程是“提交任务 → 轮询任务状态 → 下载结果”。现提供通用调法import requests import time API_BASE https://api.example-text-to-video/v1 TOKEN YOUR_API_KEY headers {Authorization: fBearer {TOKEN}} payload { model: text_to_video, prompt: 奥黛塔设定站在雾里镜头缓慢推进薄雾流动电影感, duration_seconds: 5, resolution: 720p } r requests.post(f{API_BASE}/tasks, jsonpayload, headersheaders, timeout30) task_id r.json().get(task_id) print(任务ID:, task_id) # 轮询任务状态实际轮询间隔和超时时间以平台为准 for _ in range(60): status requests.get( f{API_BASE}/tasks/{task_id}, headersheaders, timeout30 ).json() if status.get(status) succeeded: print(视频地址:, status.get(output)) break time.sleep(5)注意这里的地址和字段是通用模板不同平台的 API 路径、鉴权方式、返回结构差异很大实际调用前必须查看对应平台的 API 文档。6.4 批量合成视频当所有分镜片段都生成后用 Python 调 FFmpeg 批量合成import subprocess shots [shot_01, shot_02, shot_03] for shot in shots: cmd [ ffmpeg, -y, -framerate, 24, -i, foutputs/{shot}/frame_%04d.png, -i, assets/bgm_authorized.mp3, -c:v, libx264, -pix_fmt, yuv420p, -c:a, aac, -shortest, ffinal/{shot}.mp4 ] subprocess.run(cmd, checkTrue)建议在输出目录里再建一个final文件夹所有合成后的片段集中存放。合成过程中如果某个片段失败脚本会抛出异常这时候要先检查该片段目录下是否有完整的图片序列而不是盲目重跑。7. 资源占用与性能观察AI 出图和视频生成对硬件资源非常敏感。如果在本地跑 ComfyUI建议一边生成一边观察显存占用。Windows 下可以用任务管理器看 GPU 专用内存也可以用 nvidia-smi 以实时刷新的方式查看nvidia-smi --query-gpuname,memory.used,memory.total,utilization.gpu --formatcsv -l 2-l 2表示每 2 秒刷新一次。显存占用需要以实际模型版本和推理参数为准不能只看别人说得多少。以下几个因素对资源占用影响最大分辨率分辨率翻倍显存占用不是线性增长而是成倍增加采样步数步数越多单张图片耗时越长但显存占用不一定明显增加批量大小同时生成多张图会显著提高显存峰值视频帧数图生视频的显存占用通常比单张出图高很多模型类型大模型和视频动画模型比传统 SD1.5 模型更吃显存。如果显存不够优先降低分辨率或把批量数改为 1。8GB 显存建议先用 512x768 或更小的尺寸测试不要一上来就跑 1080P 视频。另外要注意云端平台生成视频时本地只承担网络请求和结果下载资源占用很低但单个项目的时间成本和费用需要按平台规则评估。8. 常见问题与排查方法问题现象可能原因排查方式解决方案ComfyUI 启动后页面打不开端口被占用或服务未启动查看命令行日志用netstat -ano检查 8188 端口更换端口启动python main.py --port 8189出图时提示 CUDA 显存不足分辨率或批量数设置过高nvidia-smi 查看显存占用降低分辨率、批量数改为 1、减少采样步数模型文件加载失败模型文件缺失或放入错误目录检查ComfyUI/models/checkpoints/下文件路径重新放置模型文件并确认文件完整多张出图后人物长相不一致提示词不一致、种子变化太大对比不同图片的种子值固定种子使用参考图并提高参考权重合成视频画面模糊出图分辨率低或导出码率低检查单张图片分辨率和 FFmpeg 码率参数提高出图分辨率合成时增加-b:v码率音频和画面不同步导出时长不一致检查视频片段长度和音频长度用-shortest统一输出时长或在剪辑工具里手动对齐API 调用报 400 错误请求参数和接口文档不一致对比平台 API 文档和请求 JSON调整字段名、请求头和鉴权方式批量任务卡住某个镜头文件缺失或接口超时查看脚本日志和任务状态对失败任务单独重试不要整体重跑排查问题时先看日志再查文件路径最后才怀疑参数设置。很多批量任务的问题都出在某个图片序列不完整而不是模型本身。9. 最佳实践与使用建议把一套同人 MV 生产流程跑通之后建议用工程化方式固定下来。第一目录结构要清晰。project/ ├── assets/ # 背景音乐、字体、参考图 ├── inputs/ # 输入素材 ├── prompts/ # 提示词和任务队列 ├── outputs/ # 原始出图 ├── shots/ # 分镜筛选后的图片序列 ├── final/ # 合成后的视频片段 └── scripts/ # 批量脚本目录分离可以避免后期找素材时一张一张翻图。每次生成任务结束后把不合格的图直接删除或归档到reject/文件夹避免影响后续批处理。第二固定一套“最小可运行配置”。把能稳定出图的提示词组合、种子范围、采样参数保存为工作流模板。之后所有分镜都基于这套模板改不要每次重新发明配置。第三批量任务一定要加日志。每次调用 API 或提交 ComfyUI 任务时记录任务 ID、时间、参数和结果。推荐把日志写到文件里python batch_generate.py batch_log.txt 21日志是排查问题的第一手材料比口头回忆可靠得多。第四涉及版权和授权的素材一定要保留来源记录。用了哪首背景音乐、角色设定图来自哪里、是否已经获得授权都要有可追溯的记录。同人作品发布到平台后一旦被版权方投诉来源记录能帮你快速复盘。第五发布前做效果复核。检查角色一致性、画面是否出现不必要的文字或水印、字幕是否完整、音频是否清晰。AIGC 生成的视频在平台发布时还要遵守平台关于 AI 生成内容的标识要求。10. 总结与下一步回到开头那个标题【原神/奥黛塔】我在《雾里》爱着你本质上不是一个“工具项目”而是一个典型的内容生产任务。它能落地靠的是角色参考图、稳定的提示词工作流、批量生成脚本和剪辑封装工具的组合。最值得先验证的是角色一致性。只要能把同一角色在不同镜头中稳定生成出来后面的图生视频、音乐卡点、批量合成都是常规操作。最容易踩的坑有两个一是本地显存不足导致视频生成直接崩溃解决办法是先从低分辨率、短片段开始测试二是角色人脸在生成过程中逐渐变形解决办法是回到出图阶段重新筛选底图而不是在视频阶段硬修。下一步可以继续往三个方向扩展把 ComfyUI 工作流改成自动读取 Excel 或 CSV 分镜表批量生成整套镜头接入云端视频生成 API让本地出图和云端视频生成各自发挥长处把字幕、歌词、封面图也做成自动化脚本形成从分镜到成片的完整生产线。这套流程跑通之后不只是能做一个同人 MV任何需要“固定角色 批量分镜 视频输出”的内容需求都可以用它来承接。建议先把第一段 10 秒短片完整做完再逐步扩展镜头数。
返回列表