代码也能拍MV:pdoom-video用TypeScript把歌画出来了
一个一周涨1100星的GitHub项目pdoom-video,把一首叫I'm Upping My P(doom)的歌,整成了一支完全由代码生成的MV。它不是在炫技,而是在示范:用TS+Canvas/WebGL,普通人也能做出一支能上线的音乐视频。

适合:会写一点代码、想做出有个人风格音乐视频的独立音乐人和创作者。
先说结论
pdoom-video做的事情很直接:它不靠剪辑软件,也不靠3D建模,而是用TypeScript写了一套渲染脚本,把歌词、节奏、视觉元素全部由代码生成,最终输出一支完整的音乐视频。一周拿到1106颗星,说明这件事戳中了一群人的痛点——想做MV,但不会Premiere,也不会Blender。
它不是给专业导演用的工具,而是给“会写两行代码、又有点想拍点什么”的人准备的一条新路。
真正的问题
做一支歌的MV,传统路径有三条:找导演拍真人,找动画师做MG,找模板工具套预设。三条路都有门槛。前者要钱,中间要排期,后者出片千篇一律。
pdoom-video给的是第四条路:用代码当镜头。它解决的不是“能不能做出MV”,而是“能不能用最低成本,做出一支有自己风格的MV”。你写的每一个参数、每一行逻辑,都会直接变成画面里的颜色、节奏和形状。这种控制感,是模板工具给不了的。
代价也很明显:你得愿意写代码,哪怕只是改参数;你得接受视觉风格偏几何、偏抽象、偏数据可视化;你得自己解决音画同步、节奏卡点这些脏活。
怎么做更省力
如果你想自己复刻一条类似的MV,最省力的路径是这样的:
1。 先把歌的结构拆清楚——前奏、主歌、副歌、间奏、尾奏,每段情绪是什么。 2。 再把视觉拆成“形状层+色彩层+节奏层”。形状层管画面里出现什么几何元素,色彩层管色温和饱和度怎么变,节奏层管元素什么时候出现、消失、放大。 3。 用TypeScript起一个最小项目,主循环就是一个requestAnimationFrame,每一帧根据当前播放时间算参数、画画面。 4。 音频用AudioContext解出来FFT,把频段能量绑到视觉参数上,副歌一来,画面就跟着炸。 5。 输出用MediaRecorder录Canvas,或者直接用FFmpeg把帧序列压成视频。
| 路径 | 适合谁 | 出片速度 | 风格上限 |
|---|---|---|---|
| 代码渲染(如pdoom-video) | 会写代码的创作者 | 中等 | 抽象/几何 |
| 模板工具(如剪映预设) | 完全不会写代码 | 快 | 模板化 |
| 专业剪辑/三维软件 | 影视专业出身 | 慢 | 最高 |
不是鼓励所有人都去写代码,而是想说明:当模板工具给不了你想要的风格时,代码是一条真实存在的路,而且没有想象中那么陡。
哪些坑要避开
第一,别一上来就堆库。Three.js、PIXI、P5.js各有各的脾气,先用原生Canvas跑通一个10秒的demo,再决定要不要上框架。
第二,音画同步别靠猜。一定要从音频文件里解出真实的时间戳和频谱,肉眼卡点做不长也做不准。
第三,分辨率和帧率在项目第一天就定好,后期再改要么重渲染,要么糊。MV一般1080p、30fps就够发B站和YouTube。
第四,别忽视导出。Canvas录屏出来的视频默认编码很重,要么提前调码率,要么准备好等几小时的渲染时间。
现在就能动手
打开pdoom-video的GitHub Releases,先把它的示例视频完整看两遍,第一遍看情绪,第二遍盯画面结构。然后克隆仓库,把TypeScript源码读一遍,重点看主循环、音画绑定、参数映射这三块。
接着,挑一首你自己有感觉的歌,时长控制在2到3分钟,按上面“形状层+色彩层+节奏层”的方式画一张草图。不用写代码,先用纸笔把每段想出现的元素列出来。
最后再打开编辑器,从一个空白的Canvas开始,把第一段主歌的画面跑通。跑通的那一刻,你就知道自己要不要继续往下做了。
如果过程中需要把模糊的MV想法拆成具体的视觉和节奏清单,可以用爆款选题助手先把歌曲情绪和受众画像理顺,再进入代码阶段会顺畅很多。