如何用 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 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,参考视频只用来定风格,两者必须配套。
安装 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 不用每次从零设计一套工具链,直接在一个被爆款 MV 验证过的工程上创作。它更重要的价值是那份动画指南:告诉 Opus 什么样的画面会显得「AI 味」(角色太小、动作没有预备、事情一闪而过观众看不懂),让它从一开始就绕开这些坑。
安装好之后,对话里输入 /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 条里多说一句创作方向,例如:「故事是一对异地恋人,整体温暖不要太伤感,希望反复出现纸飞机,不要下雨。」
常见问题
用 Claude Opus 5.5 做音乐 MV,需要视频生成模型吗?
一支 59 秒的 MV,渲染要等多久?
音频和歌词对不上怎么办?
没有独立显卡还能出片吗?
这套流程能用在别的歌上吗?
总结
用 Opus 5.5 做 MV,你提供的是歌、歌词、参考视频和一个方向,它负责分镜、写代码画画、自己看图修改。真正的瓶颈是渲染:没有显卡就先出草稿看效果,完整画质拿到自己电脑上渲染。
想确认 Opus 5.5 从哪个入口进,看 Claude Opus 5.5 渠道对比;想把同一套代码出片流程用在知识类短视频上,看 如何用 Claude Opus 5.5 做一条知识类短视频;Claude Code 的安装和项目配置看 Claude Code 使用指南。
