这次我们来看一个被反复问到创作需求:仿 cst 风格的 SKIBIDI TOILET 最强之争 AMV/Edit 向剪辑视频。这类视频看起来是一段强节奏、强冲突、多镜头的混剪,实际拆开看,背后是一整套 AI 辅助视频创作流程:风格化角色生成、角色一致性控制、动态镜头合成、音频对齐和批量渲染。本文不讨论剧情和梗,只解决“想做出这种效果,应该怎么搭环境、怎么跑通、怎么验证、怎么批量生成”这几个问题。
先说结论:如果你手头有一张 8GB 以上显存的 NVIDIA 显卡,或者愿意用云 GPU,这类 AI 辅助 AMV 创作是可以尝试的;如果只有普通轻薄本或 Mac,也能做其中一部分工作,但 AI 生成动态视频这一步会比较吃力。整体工作流可以拆成“静态画面生成 -> 角色一致性保持 -> 图生视频 -> 音频对轨 -> 剪辑合成 -> 批量出片”六段,分别用 ComfyUI、FFmpeg、剪映/Premiere 等工具完成。
文章会带着你从零开始搭一套可行的本地流程:环境准备、AI 模型启动、分镜测试、批量任务、接口调用和常见故障排查。核心原则是:第一步先跑出 5 秒测试片段,确认每个环节稳定后,再扩展到完整作品。
1. 核心能力速览
先把整个创作任务拆成一张速览表,方便判断哪些环节是你的瓶颈。
| 能力项 | 说明 |
|---|---|
| 项目类型 | AI 辅助 AMV/Edit 视频创作工作流,不是单一软件 |
| 主要目标 | 生成 SKIBIDI TOILET 风格的强冲突多镜头剪辑视频 |
| 核心环节 | 文生图、图生图、角色一致性、图生视频、音频对轨、剪辑合成 |
| 推荐 GPU 配置 | NVIDIA 显卡为主;8GB 显存可跑中小尺寸图像任务,动态视频生成建议按实际模型确认 |
| CPU 推理 | 可以跑静态图、转码、剪辑,动态视频生成会很慢 |
| 后端工具 | ComfyUI、FFmpeg、剪映/Premiere、Python |
| 启动方式 | ComfyUI 一键启动 / 命令行启动;FFmpeg 命令行 |
| API 能力 | ComfyUI 原生支持 HTTP 接口,可批量提交任务 |
| 批量任务 | 支持;可用 Python 脚本批量生成分镜和音频片段 |
| 适用人群 | 短视频创作者、剪辑爱好者、AI 绘画和 AI 视频入门者 |
| 不适合场景 | 需要团队级实时渲染管线、需要严格影视级物理模拟的场景 |
特别说明:显存占用不是固定的。静态图生成在 1024x1024 左右、采样步数 20 到 30 步时,8GB 显存一般能覆盖;动态视频生成要看具体模型和分辨率,12GB 到 24GB 更稳。实际数值必须按你本机模型版本、分辨率、采样器设置重新测试,不要拿网上的数字硬套。
2. 适用场景与使用边界
这类 AI 辅助创作适合谁?
第一类是短视频创作者。你要做鬼畜、二创、音乐混剪,但不想完全靠手工一张张画分镜,AI 负责出图出动态,你负责节奏和叙事。第二类是剪辑初学者。你还没能力用三维软件逐帧渲染完整角色,但想验证自己的分镜思路,AI 可以快速生成可用的参考素材。第三类是 AI 绘画用户。你已经熟悉 Stable Diffusion 或 ComfyUI,想从静态图生成继续往前推进到视频片段,这套流程可以作为进阶练习。
能解决什么问题?主要解决“素材从哪来”和“角色怎么稳定”两个痛点。以前做 AMV,最难的是找同一角色的多角度素材,AI 绘画时代可以先用文生图定角色,再用图生图或 LoRA 锁定形象,最后把关键帧交给图生视频模型补动画。批量生成分镜后,人工剪辑只负责节奏和拼接,生产力明显提升。
不适合什么场景?不建议在商业项目里直接使用未经授权的角色、音乐、字体和视频素材。Skibidi Toilet 本身是网络热梗,动画角色和片段涉及原始作者的版权;AMV 这类二次创作属于灰色地带,免费发布和同人授权范围内相对安全,商用必须获得版权方许可。同样,音乐混剪也要确认 BGM 授权,不要直接使用带明确版权声明的商业曲目做营利项目。
合规方面必须强调:不制作惊悚、歧视、暴力导向或误导向内容;不把真实人物肖像套进角色扮演;不生成疑似真实物品的误导信息;不传播可能引发恐慌的伪造视频。如果后续作品要投稿或发布,平台也会要求你写明 AI 参与生成和二次创作来源,提前标注清楚。
3. 环境准备与本地部署前置条件
无论你最终选择哪个 AI 模型,环境分成四层:操作系统、Python 解释器、GPU 驱动和推理软件。给出一个通用检查清单。
3.1 操作系统
Windows 10/11 是最省心的选择,大多数 AI 绘画整合包和 ComfyUI 都优先适配 Windows。如果你在 Linux 服务器上跑,首选 Ubuntu 20.04/22.04,命令方式启动,适合批量任务。macOS 可以运行 CPU 推理和部分轻量模型,但视频生成能力非常有限,建议只用于静态图和剪辑。
3.2 Python 和驱动
ComfyUI 官方推荐 Python 3.10 到 3.12,具体版本取决于你使用的虚拟环境和依赖版本。先不要装最新 Python 3.13,部分 PyTorch 和 CUDA 组件可能还未完全兼容。
NVIDIA 用户需要安装对应的 CUDA 驱动,并在 Python 环境里安装 PyTorch 的 CUDA 版本。安装 PyTorch 时不要直接pip install torch,要根据你的 CUDA 版本选择官方命令,例如:
# 以 CUDA 12.1 为例,实际版本需替换 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121安装完成后检查 GPU 是否可用:
import torch print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0))如果输出False,说明 PyTorch 没有装成 CUDA 版本,或者驱动不匹配。
3.3 FFmpeg
批量抽帧、合成视频、音频对齐都要用到 FFmpeg。Windows 用户可以直接下载可执行程序,把ffmpeg.exe所在目录加到 PATH 环境变量中。Linux 用户安装:
sudo apt update sudo apt install ffmpeg验证安装:
ffmpeg -version3.4 磁盘空间
AI 模型文件体积很大。不同模型加起来从 2GB 到 10GB 不等,建议预留 30GB 到 50GB 磁盘空间,并养成模型文件与输出文件分目录管理的习惯。整个工作流还会生成大量中间帧和临时音频,建议输出目录独立。
3.5 端口占用检查
ComfyUI 默认占用127.0.0.1:8188。启动前先检查端口是否被占用:
# Windows netstat -ano | findstr "8188" # Linux/macOS lsof -i :8188端口被占用时,可以换端口启动,后面会讲。
4. AI 创作环境搭建与启动方式
这里以 ComfyUI 为例,因为它是目前把静态图生成、图生图、视频生成接口串起来比较方便的框架。
4.1 安装 ComfyUI
Windows 用户可以使用一键整合包,也可以从源码启动。源码方式更可控,步骤如下:
git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI python -m venv venv # Windows venv\Scripts\activate # Linux/macOS source venv/bin/activate pip install -r requirements.txt启动:
python main.py --listen 127.0.0.1 --port 8188启动成功后浏览器访问http://127.0.0.1:8188,能看到节点式界面。如果没有画面,看终端日志是否提示模型文件缺失。ComfyUI 内置了一个默认工作流,可以做最基础的文生图测试。
如果想在局域网内用其他设备访问,把--listen 127.0.0.1改成--listen 0.0.0.0。公网部署必须加认证,不要裸奔。
4.2 模型文件放哪
ComfyUI 的模型目录通常如下:
ComfyUI/ models/ checkpoints/ # 大模型 loras/ # LoRA 模型 vae/ # VAE controlnet/ # ControlNet 模型 input/ # 上传的输入图片 output/ # 生成输出的图片下载模型后,按类型放入对应目录。注意有些模型文件名带有特殊格式,阅读模型发布页的说明再放,不要盲目改名。
4.3 检查 GPU 环境和基线结果
启动后先跑一个最基础的文生图请求。如果这一步没过,后面所有流程都做不了。你可以通过 ComfyUI 的工作流操作,也可以直接用 API 提交一个最简单的任务,请看第 6 节。
4.4 剪映/Premiere 安装
剪辑软件不需要高配置,但建议按照官方要求安装。剪映适合快速混剪和自动字幕,Premiere 适合精细的节奏控制。二者并不是 AI 环节的必需品,但最终 AMV 的“最强之争”节奏感必须在剪辑软件里完成。
5. 功能测试与效果验证
下面给出一套可复制到任意项目的验证流程。目标是先验证“能不能跑通”,再验证“效果好不好”。
5.1 文生图测试:定角色基础形象
测试目的:确认 AI 能生成你想要的 SKIBIDI TOILET 风格角色,并且画质可用。
输入示例提示词:
Skibidi Toilet style character, futuristic sci-fi bathroom, dramatic lighting, dynamic action pose, cinematic composition, high detail, 8k操作步骤:
- 在 ComfyUI 中找到 Checkpoint Loader,选择你已经放好的大模型。
- 用正向提示词和反向提示词节点,把上面的提示词填进去。
- 采样器设置为 20 到 30 步,分辨率从 768x768 开始。
- 点击生成。
预期结果:得到一张符合描述的角色图。判断成功标准是:轮廓清晰、色彩统一、无明显畸形,且不是你完全看不懂的乱图。
常见失败原因:
- 模型不认识这个 IP,需要换模型或通过 LoRA 学习。
- 提示词太复杂,采样步数不足。
- 分辨率过高导致显存溢出,降低到 512x512 再试。
5.2 图生图测试:基于参考图定风格
测试目的:当文生图出来的角色不够稳定时,用一张参考图控制构图和光影。
操作方式:把已有的角色图片放入input目录,用 Load Image 节点加载,再用图像到图像方式输入提示词,设置去噪强度(denoise)。去噪强度越低,画面越接近原图;越高,变化越大。建议从 0.4 到 0.6 开始调。
判断标准:画面保留了原图的结构,但风格和细节向目标方向调整。如果变化太大,把去噪强度降低。
5.3 多镜头一致性测试
AMV 对角色一致性要求很高。你需要同一角色出现在多个分镜里,不能每次生成都换个脸。
推荐办法:
- 从第一张满意的图里,裁剪或抠出角色主体。
- 用图生图配合 ControlNet,把角色结构锁定。
- 多测试几组不同角度、不同动作的图,观察角色外形是否保持。
可以使用 ControlNet 的 Canny 或 Depth 来控制结构。这里强调一点:单靠提示词无法保证一致性,必须配合 ControlNet 或单独训练一个 LoRA。
5.4 图生视频测试:关键动态镜头
测试目的:把静态分镜转成 3 到 5 秒的动态镜头,类似 AMV 中突然抬头的动作或镜头推进。
操作方式:在支持图生视频的模型里,上传你的角色静态图,设置运动强度或镜头运动参数。不同模型的参数叫法不同,通常有 motion、denoise、fps 等。
预期结果:输出一段几秒钟的镜头,画面连续、不闪烁、角色外形不变形。判断成功标准是:前几帧能看到静态图的主要结构,后几帧动作自然不崩坏。
如果输出画面大幅跳动,说明运动参数太高;如果画面完全静止,说明参数太低。如果显存不足,尝试降低分辨率或缩短时长,比如从 1024x576、3 秒开始测。
5.5 音频对轨测试:卡点混剪验证
测试目的:确认生成素材能和音乐节奏对齐。
操作步骤:
- 在剪映中导入 BGM,找到节拍点。
- 在节拍点附近放置 AI 生成的关键镜头。
- 预览播放,确认切换时机是否卡准。
判断标准:画面切换点与重低音或鼓点对齐,观众很难察觉切换痕迹。如果全程卡不住,可以用剪辑软件里的“节拍标记”功能,先自动标点,再手动校正。
注意:版权问题在前面已经说过,这里再强调一次。不要直接用未授权商业单曲做商用素材。
5.6 批量任务验证:一次性生成多个分镜
测试目的:确认批量跑分镜时不会出现显存持续增高、任务排队卡死等问题。
验证方式:用包含多个任务的工作流,提交 4 到 8 个不同的分镜任务,观察是否依序完成、输出是否都在目录里。
预期结果:所有任务完成,没有中途报错,显存放在可接受范围内。
批量任务最好从 4 张图开始测,不要一开始就提交 100 张。这一步和第 6 节的批量脚本联动。
6. 接口 API 调用与批量任务设计
ComfyUI 自带 HTTP API,适合把图形工作流变成程序化流程。你可以手动从浏览器里导出 workflow JSON,然后把其中的 API 格式 JSON 单独保存,用 Python 提交任务。
6.1 查询可用接口
启动 ComfyUI 后,基础接口路径通常是:
POST /prompt GET /history/{prompt_id} GET /view?filename=xxx&subfolder=xxx&type=output不一定所有版本都完全一致,以你本机实际日志和文档为准。推荐先跑一个简单测试,确认 API 可用。
6.2 Python 调用示例
下面是一个通用的 ComfyUI API 提交任务示例。请理解它只是模板,实际workflow_json需要从你的 ComfyUI 工作流导出。
import json import urllib.request server_address = "127.0.0.1:8188" workflow_json = { # 这里需要替换成你自己的 API 格式 workflow JSON "prompt": { "3": { "class_type": "KSampler", "inputs": { "seed": 42, "steps": 25, "cfg": 7.0, "sampler_name": "euler", "scheduler": "normal", "denoise": 1.0, "model": ["4", 0], "positive": ["6", 0], "negative": ["7", 0], "latent_image": ["5", 0] } } } } data = json.dumps(workflow_json).encode("utf-8") req = urllib.request.Request( f"http://{server_address}/prompt", data=data, headers={"Content-Type": "application/json"} ) with urllib.request.urlopen(req, timeout=300) as resp: result = json.loads(resp.read().decode("utf-8")) print(result)提交成功后,返回的 JSON 里有prompt_id,你可以用它查任务状态:
import json import urllib.request prompt_id = "你的 prompt_id" with urllib.request.urlopen( f"http://127.0.0.1:8188/history/{prompt_id}", timeout=30 ) as resp: history = json.loads(resp.read().decode("utf-8")) print(history)这里要注意:不同 ComfyUI 版本的class_type节点名称可能变化,代码只是演示请求流程。实际使用时从工作流中导出 API 格式使用。
6.3 curl 方式测试
如果你不想写 Python,可以先命令行测试:
curl -X POST http://127.0.0.1:8188/prompt \ -H "Content-Type: application/json" \ -d @workflow.json然后将返回的prompt_id填到 history 查询接口。
6.4 批量分镜任务设计
批量任务的通用思路是:准备多个输入提示词,依次提交,每 3 到 5 个任务检查一次显存,失败自动重试。下面是一个简化版脚本思路:
import json import time import urllib.request server_address = "127.0.0.1:8188" def submit_prompt(workflow_json, max_retries=2): data = json.dumps(workflow_json).encode("utf-8") last_error = None for attempt in range(max_retries): try: req = urllib.request.Request( f"http://{server_address}/prompt", data=data, headers={"Content-Type": "application/json"} ) with urllib.request.urlopen(req, timeout=600) as resp: return json.loads(resp.read().decode("utf-8")) except Exception as e: last_error = e print(f"第 {attempt+1} 次提交失败: {e}") time.sleep(3) raise last_error # 假设 scenes 是从 CSV 或 JSON 读取的提示词列表 scenes = [ {"prompt": "scene 1, dramatic action"}, {"prompt": "scene 2, close-up turn head"}, {"prompt": "scene 3, explosion background"}, ] workflow_json = {} for idx, scene in enumerate(scenes): workflow_json = load_workflow_with_prompt(scene["prompt"]) result = submit_prompt(workflow_json) print(f"任务 {idx} 提交成功: {result}")这个脚本没有包含真实节点加载逻辑,实际使用时需要把load_workflow_with_prompt换成你的工作流模板函数,比如每次修改"6"节点的text输入。批量任务时一定要加日志,记录每个任务的prompt_id、状态、输出文件和失败原因。
6.5 FFmpeg 批量处理
生成大量分镜后,需要批量抽帧或合成视频。例如从视频中每隔 0.5 秒抽一帧:
ffmpeg -i input.mp4 -vf "fps=2" -qscale:v 2 frames/frame_%04d.jpg将连续图片合成为视频:
ffmpeg -framerate 24 -i frames/frame_%04d.jpg -c:v libx264 -pix_fmt yuv420p output.mp4如果你的项目需要把多个视频片段按列表拼接,可以先用 FFmpeg 统一转成相同分辨率和帧率,再使用 concat 方式处理:
# 先写一个文件列表 # concat.txt 内容: # file 'clip1.mp4' # file 'clip2.mp4' ffmpeg -f concat -safe 0 -i concat.txt -c copy merged.mp47. 资源占用与性能观察方法
资源占用不能只看显存,还要看内存、CPU、磁盘 IO 和显存带宽。常见观察工具如下:
- Windows 任务管理器:看 GPU 显存占用、CPU 占用、磁盘占用。
- NVIDIA 用户命令行:
nvidia-smi,实时查看显存和温度。 - Linux 下可以用
nvidia-smi dmon或htop。
影响性能的主要因素:
- 分辨率越大,显存占用越高。静态图测试不要一上来就 2048x2048,先 768x768。
- 采样步数影响生成时间,但步数超过一定范围后,画质提升有限。
- 批量任务并发提交数个任务,很容易叠加显存占用。
- 视频生成任务更吃显存,通常需要把画面尺寸控制在模型建议范围,不要随意放大。
- 长音频对轨和资源管理不当,剪辑软件本身也会占用大量内存。
如何降低显存占用:
- 降低分辨率。
- 使用显存优化选项,例如 ComfyUI 中开启内存/显存管理设置。
- 关闭无关后台程序,避免浏览器里打开大量标签页。
- 批量任务串行执行,不要同时提交几十个任务。
- 使用
--lowvram或--novram这类启动参数时,请先确认参数在版本中可用,不要凭记忆乱加。
CPU 推理和 GPU 推理差距很大。做静态图测试时,CPU 也能出图,但速度会慢一个数量级;动态视频生成几乎不建议 CPU 跑。如果你的机器没有 NVIDIA GPU,优先使用云 GPU 实例或带有独立显卡的台式机。
端口冲突的常见场景是:旧的 ComfyUI 进程没有退出,新进程启动失败。启动端口被占时,换端口启动:
python main.py --listen 127.0.0.1 --port 8190同时注意清理残留 Python 进程,不要默认任务结束后进程都退干净。
8. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 启动时提示端口被占用 | 上次服务未退出或端口被其他程序占用 | netstat -ano | findstr "8188"查看占用进程 | 换端口启动,或结束占用进程 |
| 浏览器打开后白屏 | 前端资源加载失败,或服务未完全启动 | 查看终端日志,刷新页面 | 等待服务启动完成,确认 8188 端口可访问 |
| 文生图生成全黑图 | 模型加载失败、CFG 过高、负面提示词异常 | 换基础配置,降低 CFG 到 7 左右 | 从官方默认工作流开始,不要一开始就套复杂参数 |
| 显存不足报错 | 分辨率过高、批量任务叠加 | nvidia-smi看显存剩余 | 降低分辨率,减少批量任务并发,重启服务释放显存 |
| 同一角色每张图都不一样 | 没有使用 ControlNet 或 LoRA | 对比各分镜结构 | 用 ControlNet 锁定结构,或训练角色 LoRA |
| 图生视频画面抖动严重 | 运动强度过高、模型不够稳定 | 降低 motion 参数 | 减少运动幅度,换成更稳定的视频生成模型 |
| 批量任务中途卡住 | 任务队列异常、显存溢出、网络超时 | 查看任务日志和 history 接口 | 增加失败重试,调小批量并发数 |
| API 请求返回 400 | workflow JSON 格式不对 | 与工作流导出的 API JSON 对比 | 从浏览器导出正确 API 格式,不要手动乱改 |
| 输出图片被截断或损坏 | 磁盘空间不足、生成中断 | 检查输出目录和磁盘空间 | 清理临时文件,加失败重试 |
排查的通用顺序是:先看终端日志,再查显存和磁盘,最后确认模型路径是否对。不要盯着浏览器界面猜原因。
9. 最佳实践与使用建议
9.1 第一次先小参数测试
建议第一次只跑 768x768 静态图,确认工具链完整后,再做 1024x1024 和动态视频。每一步都记录配置文件,不要改完参数后忘记原先哪组有效。
9.2 目录规范化
建议把项目目录按以下结构整理:
project/ workflows/ # 保存 ComfyUI workflow JSON models/ # 模型文件 inputs/ # 输入素材、参考图 outputs/ images/ # 静态图输出 frames/ # 抽帧 videos/ # 视频片段 audio/ # BGM、音效 logs/ # 批处理日志批量任务日志里至少记录:任务 ID、提交时间、结束时间、输出路径、失败原因。
9.3 保留一套最小可用配置
工作流越复杂越容易坏。保留一个“纯文生图 768x768”的最小工作流,遇到问题时马上切回最小配置验证环境是否正常。这也方便排错时区分“是环境问题还是工作流问题”。
9.4 超分和补帧建议
如果 AI 生成的原始分辨率不够,可以在最后阶段用超分工具提升分辨率,再用补帧工具优化流畅度。但补帧不是越多越好,帧率过高会让人物动作变得“塑料感”明显。
9.5 合规与授权管理
所有素材来源要做好记录:哪些图是 AI 生成、哪些图来自原作者截图、哪些 BGM 有授权。发布前把说明写在简介里,不要等平台下架后再补。涉及真实人物肖像、声音克隆、版权角色时必须先获得授权。
9.6 发布前做效果复核
最后合成完的视频,先自己完整看两遍,重点观察:
- 角色外形有没有突然变化。
- 切换节奏有没有卡点。
- 音频和画面是否同步。
- 是否出现惊悚、误导或不适内容。
AI 生成的内容容易出现细节崩坏,放大后可能看不出,全屏播放时很容易穿帮,建议用 1920x1080 预览。
10. 总结与下一步
最值得尝试的点是:用 AI 生成一套稳定的角色分镜素材,再通过剪辑软件把它们变成有节奏的 AMV,整个过程比手工逐帧绘制高效很多。你最先应该验证的是“文生图 -> 图生图 -> 角色一致性”这条链路,它决定了后续所有视频片段是否可用。最容易踩的坑有两个:一是跳过小参数测试直接大量并发,导致显存溢出和服务崩溃;二是不做一致性控制,导致每个分镜角色都不同。
后续可以继续扩展的方向包括:训练一个只属于你创作的 SKIBIDI TOILET 风格 LoRA、加入 ControlNet 控制更多镜头角度、用 ComfyUI API 写一个完整的分镜自动生成脚本、再把输出交给剪辑软件自动化排版。如果你平时做短视频,这套流程建议收藏备用,下次要做类似强节奏二创时,可以直接复用这套“小参数测试 -> 批量生成 -> 人工剪辑”的管线。