如何用 Claude Opus 5.5 做一支音乐 MV?代码逐帧渲染完整教程(2026)
TL;DR: Opus 5.5 做 MV 的方式是按节拍用代码画每一帧,再用无头 Chrome 逐帧截图、ffmpeg 合成 1080p / 24 帧的 MP4,不用视频生成模型。我给了一首歌、一份 LRC、一支参考视频和一句「故事你来设计」,它交回一支 59 秒、13 个镜头、带逐字卡拉 OK 歌词的水彩 MV。渲染最费时间:云端满画质约 20 小时,草稿约 50 分钟,本地有显卡约 0.5~1 小时
# 前言:Opus 5.5 是怎么「画」出 MV 的
最近常刷到「用 Opus 5.5 做的 MV」:手绘水彩风,小角色跟着节拍动,歌词一个字一个字亮起来。画面看着像视频生成模型的产物,实际是 Opus 用代码画出来的
Opus 5.5 不生成视频,它做 MV 的方式是写代码画每一帧。可以把它当成一个会写程序的动画师:先写一个网页,在代码里写明「第 10.5 秒,两个小人站在伞下,主角的眼睛变成爱心」;再用没有界面的 Chrome 浏览器,从第 0 秒到最后一秒每秒截 24 张图;最后用 ffmpeg 把这些图和音乐合成为 MP4
这类 MV 里的画面,没有一张来自视频生成模型。角色、房间、月亮、转场,全是代码用水彩笔刷一笔一笔画出来的。这样有两个好处:角色在每个镜头都长得一样,不会跑偏;想改哪个细节,改对应几行代码就行
成片第 1 秒:窗外是一轮缺了一角的拼图月亮,画面的每一笔都是 Opus 写的代码画的
这篇教程记录我用 Opus 5.5 给王贰浪《把回忆拼好给你》做 59 秒高潮段 MV 的完整过程。最终成片包括 13 个镜头、逐字卡拉 OK 歌词,以及一条贯穿全片的「拼图月亮」故事线。整个过程我只发了三条消息,提供了四样东西:歌、歌词、参考视频,和一句「故事你来设计」
先看一段动态预览,再看几张截图:

成片开头的动态预览,几个镜头连在一起

「为何一切,变得如此」——回忆里的雨后街角,我和她在一把伞下

结尾「把回忆拼好给你」——月亮被补全,远方的她抬头看见了
整体流程是一条直线:
- 准备歌曲音频、LRC 歌词和一个参考视频
- 安装 painted-animation skill
- 选高潮段、测节拍
- 写分镜
- 搭角色和场景,逐个镜头制作
- 渲染预览图审查,修改
- 渲染出片
下面按这个顺序,讲每一步我做了什么、Opus 做了什么、中间踩了哪些坑。整个过程你不用写一行代码,照着提示词和命令走就行
# 本文目录
# 准备工作
开工前准备三样东西,再装一个 skill
| 材料 | 作用 | 注意事项 |
|---|---|---|
| 歌曲音频(mp3) | 配乐、测节拍 | 必须和歌词是同一个版本 |
| LRC 歌词文件 | 给每句歌词定时间、做卡拉 OK | 带时间戳,如 [05:15.898]独自收集… |
| 参考视频(可选) | 告诉 Opus 想要什么风格和母题 | 我用的是一支拼图主题的纸艺 MV |

第一条消息:视频和 LRC 一起发过去,Opus 先复述了它看到的风格和场景顺序,再指出两者歌词对不上

补上 mp3 之后:这 59 秒是它自己挑的,分镜和角色设定也是它给的
踩坑: 我一开始只传了参考视频和 LRC,Opus 发现参考视频里的歌词和 LRC 一句都对不上,停下来让我补传正确的音频。卡点只认你给的音频和 LRC,所以音频和 LRC 必须是同一版本,参考视频只用来定风格
安装 skill。 把这个 GitHub 链接发给 Claude,让它帮你装:https://github.com/Joker-chichi/claude-mv-skill。它会先读一遍脚本确认安全,然后弹出一张 skill 卡片,点保存就装好了。这个 skill 叫 painted-animation,改编自一支爆火 MV 的开源工程,内置:
- 水彩笔刷引擎(p5.js + p5.brush)和逐帧渲染脚本
- 角色 Clawd:31 种表情、5 个转身视角、各种帽子和表情符号
- 节拍检测脚本和逐字卡拉 OK 歌词模块
- 一份动画指南:不写字、每个镜头都有事件、每个接缝都有转场等规则

skill 自带的角色 Clawd 和它的 31 种表情。这次的两个主角就是在它的基础上换了颜色、加了配饰
有了这个 skill,Opus 不用每次从零设计工具链,可以直接复用一套已经跑通的开源工程。更实用的是它附带的动画指南:里面写明什么样的画面会显得「AI 味」,比如角色太小、动作没有预备、事情一闪而过观众看不懂,Opus 从第一个镜头就能避开
安装好之后,对话里输入 /painted-animation 就能调用它
在哪儿做。 全程在 Claude Cowork(网页版)里就能跑完:装 skill、传音频和歌词、写代码、云端渲染都在对话里完成,不用另外装软件。只有想把完整画质渲快一点时,才需要把工程包拿到本地,走第五步的本地流程
# 第一步:选段与测节拍
整首歌 5 分 47 秒,我只做 40~60 秒的高潮段。Opus 选了 4:48~5:47 这 59 秒:「独自收集两个人之间的回忆」唱两遍,最后落在歌名那句「把回忆拼好给你」,结尾自带情绪收束
选好段后,它用 skill 自带的 beat_grid.py 测节拍,结果是:
- 速度 80.1 BPM,一拍 0.749 秒
- 一句歌词 ≈ 4 拍 ≈ 3 秒,长句(带逗号的)约 6 秒
- 剪辑起点放在第一句歌词前一小节的拍上(288.67 秒),这样视频的第 0 秒刚好是一个拍点
然后用 ffmpeg 剪出这段,加 0.5 秒淡入和 4 秒淡出。LRC 的时间减去 288.67 秒,就是视频里每句歌词的出现时间
为什么要测节拍: 角色的待机晃动、烟花爆开、镜头切换都锁在拍子上,画面才会「跟着音乐动」。代码里只要设置 bpm: 80.1, offset: 0,整片就共享一个节拍
节拍测出来以后有个很实用的推论:一句歌词只有 3 秒左右。 这意味着每个镜头只能讲清楚一件事。如果一句歌里又想让角色走路、又想让她哭、又想切换场景,观众一件也看不懂。所以 skill 才强调「先拿 LRC、先测节拍,再写分镜」:凭感觉估的时长往往比实际长一倍
反过来,带逗号的长句(「为何一切,变得如此,无法回到过去」)有 6 秒,刚好留给最重的剧情:她碎成拼图飞走、拨钟被弹回,都放在这两句上
# 第二步:创作方向与分镜
skill 会用一句话问你创作方向:想讲什么故事、什么情绪、有没有想反复出现或不想要的画面。可以留空。我的回答只有一句:「故事你来设计,没想法就参考我给的视频」
Opus 从参考视频里提炼了拼图这个母题,写出了这样的分镜:
- 一句话故事: 分开以后,我在小阁楼里一个人把回忆一片片拼起来;拼着拼着会哭,想回到过去却回不去;最后我把拼好的回忆变成一轮完整的月亮,挂在她那边的天上
- 角色: 「我」是陶土色小方块,围红围巾;「她」是澄蓝色(对应歌词「澄蓝色的你」),头戴小花
- 配色弧线: 深夜靛蓝(孤独)→ 回忆里的暖黄(甜)→ 雨夜冷蓝(失去)→ 满月暖金(释怀)
- 首尾呼应: 开场是一轮缺了一角的拼图月亮,结尾那一块被补上,变成满月
每句歌词对应一个镜头,共 13 个。下表秒数从剪辑起点算起,第 0 秒即 4:48:
| 时间 | 歌词 | 镜头 |
|---|---|---|
| 0–3.3 秒 | (前奏尾) | 窗外缺角的拼图月亮,镜头下摇到独自在阁楼的我 |
| 3.3–6.0 秒 | 独自收集两个人之间的回忆 | 我把一片回忆按进拼图板,它亮了一下 |
| 6.0–8.9 秒 | 即使每当到这时候我都会哭泣 | 捧着伞下那一片,笑着笑着哭了,窗外下起雨 |
| 8.9–15.1 秒 | 为何一切,变得如此,无法回到过去 | 钻进回忆:雨后街角伞下两人,她碎成拼图飞走 |
| 15.1–17.9 秒 | 但我仍愿意感谢你给过我爱情 | 擦干眼泪,把拼图贴在胸口 |
| 17.9–21.0 秒 | 每一场风景都是我们爱的证明 | 平移三幅回忆:落日、盆栽开花、烟花 |
| 21.0–27.1 秒 | 就算如今,天各一方,祝你余生动听啊 | 拼图缝把画面一分为二,我的歌飘到她那边 |
| 27.1–29.9 秒 | 独自收集两个人之间的回忆 | 音符变成拼图,像归巢的鸟飞回拼图板 |
| 29.9–33.2 秒 | 即使每当到这时候我都会哭泣 | 一边哭一边继续拼,雨渐渐停了 |
| 33.2–38.9 秒 | 为何一切,变得如此,无法回到过去 | 想把钟拨回去,指针两次弹回,最后接受 |
| 38.9–42.0 秒 | 但我仍愿意感谢你给过我爱情 | 最后一片是心形的,按进去整幅亮起 |
| 42.0–44.9 秒 | 每一场风景都是我们爱的证明 | 镜头拉远:完整的画是伞下的我们 |
| 44.9–59 秒 | 就算如今,天各一方,把回忆拼好给你 | 一片光飞上天补全月亮,远方的她抬头挥手 |
技巧: 同一句歌词出现两次时,第二遍换个角度升级,不要重拍一遍。比如两次「无法回到过去」,第一次她碎掉飞走,第二次拨钟被弹飞,带一点好笑的无奈
# 分镜画面精选
按剧情顺序挑了几个镜头,「拼图」是一路串下来的
第一幕:一个人的阁楼。 镜头从缺角的月亮下摇,落到独自在拼图的我身上。拼图板上还有大片深色空位,每放上一块就亮一下

3.3 秒「独自收集两个人之间的回忆」:一片回忆飞向拼图板

6.0 秒「我都会哭泣」:笑着笑着眼泪掉下来,窗外开始下雨。镜头随后以一个拼图形状的光圈钻进这片回忆
第二幕:回不去的过去。 回忆里是暖黄色的雨后街角。我转头想牵她,她却碎成一堆蓝色拼图飞走,整条街的颜色也跟着褪成冷灰

11.7 秒「无法回到过去」:她在我伸手的一瞬间碎成拼图。这是全片情绪最重的一个镜头

17.9 秒「每一场风景都是我们爱的证明」:镜头平移过三幅回忆,这是其中一幅——她浇水,盆栽开出了花。这个细节来自歌曲前面的歌词「帮我照料装着梦的盆栽」
第三幕:天各一方。 一条拼图缝把画面切成两半:两个屋顶、两个人,头顶却是同一轮月亮。我哼的歌变成金色音符,飘过拼图缝到了她那边

21.0 秒「就算如今,天各一方,祝你余生动听啊」

27.1 秒第二遍「独自收集…」:音符变回拼图,像归巢的鸟一样从窗口飞进来,落进拼图板
第四幕:拼好,然后放手。 想拨回时钟却被指针弹飞,我坐在地上叹了口气,接受了。最后一片是心形的,按进去,整幅画亮了

33.2 秒「无法回到过去」第二遍:同一句歌词,这次是带点好笑的无奈

38.9 秒「但我仍愿意感谢你给过我爱情」:拼图完整了,是我们俩在伞下

49.9 秒「把回忆拼好给你」:一片光飞出窗外,补上了月亮缺的那一角,和开场首尾呼应
# 第三步:搭建角色、场景和道具
代码分成两个文件:hj_set.js 放世界、角色和道具,hj_shots.js 放 13 个镜头。先搭好「布景」,镜头只管调度
角色不用从零画。 两个主角都是 skill 自带的 Clawd 换了颜色:「我」加了一条会飘的红围巾,「她」是澄蓝色加一朵小花。这样 31 种表情和表情切换时的预备动作(睁眼、挤压、回弹)都能直接用。写「先开心,1 秒后变伤心,1.9 秒后哭」,它就会照着演出来
场景:
- 我的阁楼:斜屋顶、小窗、窗外的拼图月亮、下雨开关、墙上的钟、小桌和小凳子,还有一个「暖色程度」参数,结尾时房间会慢慢变暖
- 回忆里的雨后街角:楼房、路灯、倒映着天空的水洼,可以从暖黄渐变到冷灰
- 两个屋顶:可以各占半个画面,用来做「天各一方」的分屏
道具:
- 拼图块形状生成器:给出四条边是凸、是凹还是平,就能画出任意拼图块
- 4×3 的拼图板:每一块在哪个时间点被放上去都写在一张表里,空位显示成深色凹槽,放上时会发一下光
- 拼图拼完的画:伞下的两个小人、雨后的街和太阳
- 缺一块的拼图月亮、雨伞、钟、音符
搭完之后,Opus 先把所有东西摆在一张「试拍图」里看效果,确认角色、围巾、拼图板、月亮都画对了,再开始写镜头:

第一张试拍图:阁楼、钟、拼图板、两个主角全部同框。这张图还暴露了一个问题:月亮上的缺口是一个方块,不像拼图,后来改成了拼图形状
先把「长什么样」定下来,之后 13 个镜头都只是在调动这些已经画好的东西:换机位、换表情、换光线,风格就不会跑偏
规则:画面里不写字。 除了底部的卡拉 OK 歌词,整片没有标题、标签或对白框。角色的情绪靠表情和头顶的小符号(❤、❗、音符、雨云)来表达
# 第四步:逐镜头制作与预览审查
光看代码看不出动画好不好,所以每写完一批镜头,Opus 都会渲染一张联系表(contact sheet):每隔 0.4~0.6 秒截一帧,拼成一张大图,然后自己「看图」找问题

一张真实的审查联系表,覆盖「三幅风景」和「天各一方」两个镜头。每格左上角是时间,从左往右读就是观众看到的顺序
Opus 写代码时看不见画面,只有渲出来自己看一遍,才知道哪里不对。我这片前后渲了十来轮联系表,每轮 6~24 帧
它在联系表里发现并修掉的问题:
| 镜头 | 发现的问题 | 怎么改的 |
|---|---|---|
| 三幅风景 | 画框很大,里面的小人太小,山坡超出画框 | 小人放大一倍,山坡改成不会越界的形状 |
| 三幅风景 | 浇水壶悬在半空,没有握在她手里 | 挂到她身侧 |
| 烟花 | 只爆了一朵,其余的时间点已经在镜头外 | 爆点间隔改成半拍 |
| 天各一方 | 两个角色和音符太小,看不清 | 角色放大,音符改金色加光晕 |
| 拨钟 | 小人够不到钟,「拨回去」的动作看不懂 | 钟挂低、加小凳子,镜头推近,弹回时加「❗」 |
| 结尾 | 最后的入场时间算错,光圈收拢来不及播完 | 重新分配最后 11 秒的节奏 |
| 拼图板 | 画中的爱心飘到了画框外面 | 移到两个小人中间 |
两个例子:
例一:风景画太空。 第一版里画框很大,小人只有指甲盖大小,山坡还溢出了画框。Opus 先把小人放大,再渲一轮发现山坡还是越界。下面就是那一轮的审查图,右上角的落日画里,紫色山坡跑到了画框外面:

修改前的样子。改完后可以对照上面「分镜画面精选」里的盆栽那幅
例二:拨钟的动作看不懂。 第一版钟挂得太高,小人站在凳子上也够不到,观众只看到一个小人在钟下面挥手。Opus 把钟挂低、凳子挤过去、镜头推近,让小人的手碰到指针;指针弹回时加一个「❗」,第二次弹回直接把它弹下凳子

修改后的拨钟镜头:爬上凳子 → 拨指针 → 被弹开 → 再拨 → 摔下来 → 坐着叹气,一句 6 秒的歌词里讲完一个小故事
审查时主要问这几个问题:
- 每个镜头只看联系表,能不能看懂发生了什么?
- 角色够不够大,和背景分得开吗?
- 拿着的东西碰到手了吗?脚踩在地上了吗?
- 每个接缝都有转场吗?我这片用了拼图形状的收放光圈、笔刷擦除和镜头推进窗外三种
- 一个重要的信息,观众有没有足够的时间看懂?
# 第五步:渲染出片
水彩笔刷非常吃显卡,在哪里渲染决定了要等多久。我这次的实测数据(全片 59 秒):
| 方式 | 画质 | 每帧耗时 | 全片耗时 |
|---|---|---|---|
| 云端,完整画质 | 1080p、24 帧、水彩纹理 | 约 50 秒 | 约 20 小时 |
| 云端,草稿模式 | 半分辨率、12 帧、平涂 | 约 4 秒 | 约 50 分钟 |
| 本地有显卡的电脑,完整画质 | 1080p、24 帧、水彩纹理 | 约 1~3 秒(估算) | 约 0.5~1 小时 |
云端那台机器没有 GPU,走的是软件渲染(soft-gl),每帧需要 50 秒;本地有显卡走硬件加速,同样的画面 1~3 秒就出
我两条路都走了一遍:先在云端出一版草稿,用来确认节奏和故事;再把工程包拿到自己电脑上渲完整画质
草稿和成片的区别主要在质感:草稿的色块是平涂的,每秒 12 帧会有点一顿一顿;完整画质会多出水彩的晕染和纸纹,动作也更顺。但分镜、节奏、卡点和歌词两者完全一样,所以可以用草稿判断「这个故事行不行」。本教程里的所有分镜截图都是完整画质的单帧
本地渲染的步骤:
- 安装 Node.js、Google Chrome 和 ffmpeg
- 解压工程包,在文件夹里运行
npm install - 先渲一张测试图确认能跑:
node render.mjs --sheet=10.5,40.4 --cols=2 --w=960 --out=out/check/test.jpg - 渲染全部帧(可中断,再运行会接着渲):
node render.mjs --frames --workers=4 - 合成带音乐的 MP4:
node render.mjs --encode --audio=assets/clip.m4a --out=out/MV.mp4
提醒: skill 不会自动开始整片渲染,而是先问你要在本地还是云端渲。云端渲完整画质太慢,不推荐
# 踩坑记录与技巧
- 音频和歌词必须配套。 参考视频只用来定风格,卡点只以你给的音频和 LRC 为准
- 先做高潮段。 整首歌太长,代码量和渲染时间都会翻倍,先用 40~60 秒验证效果
- 网络受限时的安装问题。 我这次的云端环境连不上 npm 和 Google Fonts,Opus 改从 GitHub 下载 p5 和 p5.brush,歌词改用系统自带的思源宋体。在自己电脑上一般不会遇到
- 没有显卡就用草稿模式。 Opus 给渲染器加了两个开关:
--fast(水彩填充换成平涂)和--half(半分辨率),预览速度快了十几倍 - 小心「缩到 0」的形状。 结尾那个拼图光圈收到尺寸为 0 时,渲染器直接报错中断。修法是尺寸太小时直接用纯色盖住整个画面
- 画面里不要写字。 想表达「我很想念你」就画角色哭,不要举一块牌子
- 重复的歌词要升级,不要重拍。 第二遍副歌换个角度讲同一件事
- 要求 Opus 用「看图」来审查。 它把联系表渲出来自己看,才发现了浇水壶悬空、小人够不到钟这类只看代码发现不了的问题
# 可直接复制的提示词
整个过程我只发了三条消息,你可以直接照抄:
- 装 skill: 「
https://github.com/Joker-chichi/claude-mv-skill你先来安装这个 skill 吧」 - 开工(附上参考视频和 LRC): 「/painted-animation 参考第一个视频是爆火的 MV,和我给你提供的歌词 LRC,帮我重新设计镜头,做一个类似的视频吧」
- 补音频并定范围(附上 mp3): 「/painted-animation 我只要 40-60s 的高潮部分,故事内容你来设计就行,没有想法就参考我给你的」
想要更有个人风格的片子,可以在第 3 条里多说一句创作方向,例如:「故事是一对异地恋人,整体温暖不要太伤感,希望反复出现纸飞机,不要下雨」
# 常见问题
Q:Claude Opus 5.5 能直接生成音乐 MV 吗?
A:不能直接生成视频。Opus 5.5 做 MV 的方式是写代码画每一帧:生成网页动画,用无头 Chrome 每秒截 24 帧,再用 ffmpeg 和音乐合成 MP4
Q:做一支这样的 MV 需要准备什么?
A:歌曲 mp3、带时间戳的 LRC 歌词文件和一个参考视频(可选),再安装 painted-animation skill。音频和 LRC 必须是同一版本,卡点以它们为准
Q:渲染一支 59 秒的 MV 要多久?
A:实测全片 59 秒:云端完整画质每帧约 50 秒,全片约 20 小时;云端草稿模式约 50 分钟;本地有显卡的电脑约 0.5~1 小时
Q:电脑没有显卡能做吗?
A:可以。先用草稿模式渲半分辨率、12 帧的预览,确认分镜和节奏后,再把工程包拿到本地渲完整画质。渲染器支持 --fast 和 --half 两个开关
Q:歌词时间轴怎么对齐?
A:用 skill 自带的 beat_grid.py 测出节拍(本例 80.1 BPM,一拍 0.749 秒),把剪辑起点放在第一句歌词前一小节的拍点(288.67 秒),LRC 时间减去这个起点就是歌词在视频里的出现时间
Q:整片渲染中断了要重来吗?
A:不用。node render.mjs --frames 支持中断后再运行接着渲,渲完再用 node render.mjs --encode 合成带音乐的 MP4
# 总结
用 Opus 5.5 做 MV,你提供歌、歌词、参考视频和一个方向,它负责分镜、写代码画画、自己看图修改。瓶颈是渲染:没有显卡就先出草稿看效果,完整画质拿到自己电脑上渲染
想确认 Opus 5.5 从哪个入口进,看 UPGPTs Claude Opus 5.5 渠道对比 (opens new window);想把同一套代码出片流程用在知识类短视频上,看 如何用 Claude Opus 5.5 做一条知识类短视频 (opens new window);Claude Code 的安装和项目配置看 Claude Code 使用指南 (opens new window)