起因:一节 5 分钟的动画讲解,能吃掉我一下午
做过知识类视频的人应该都有体会:真正费劲的不是把知识想明白,而是把知识"画出来"。
一个傅里叶级数的动画,从画坐标轴、调动画节奏,到把文字对齐,熟练的人也要小半天,不熟练的直接劝退。我平时写代码比用剪辑软件顺手,所以一直有个念头:能不能干脆用"写代码"的方式,把这类讲解动画做出来?
最近刷到一个开源项目 Code2Video,思路正好对上了。我翻了下它的仓库和论文,又自己跑了一遍,这篇就把过程和我关心的几个点说清楚。
一句话说清它是什么
Code2Video 是新加坡国立大学 Show Lab 做的一个框架:你给它一个知识点,比如"汉诺塔问题"“线性变换”“大语言模型原理”,它自动产出一条教学视频。
它跟常见 AI 视频最大的区别,在于用什么来生成:
- 常见的 AI 视频(Sora、Veo、可灵那类)走的是像素级生成——模型一帧一帧地"画"出画面。
- Code2Video 走的是代码级生成——它写出来的是 Manim 代码,再让代码渲染成视频。
【解释】:Manim是一个用 Python 写数学动画的引擎,3Blue1Brown 那些标志性的数学讲解视频就是用它做的。渲染就是把代码算成一帧一帧画面,再拼成视频。
打个比方更好理解:
- 像素生成,像请画师直接画一张成品画——画完就定型了,想改一笔只能重画。
- 代码生成,像先画出一份可编辑的图纸——图纸能反复复印、随时改动。视频第 10 秒想换个颜色,改一行代码重跑就行。
这就是它敢说自己"清晰、可重现、可调试"的底气,也是它和普通文生视频最本质的分野。
它内部是三个 AI 在打配合
我一开始以为它就是个"调大模型写 Manim 代码"的脚本,翻了下源码才发现里面分了三道工,各管一摊:
三个角色,可以理解成一个小型的视频制作小组:
| 智能体 | 用大白话理解 | 具体在干什么 |
|---|---|---|
| Planner(规划) | 编剧 | 把知识点拆成故事板:分几段、每段讲什么、配哪些动画 |
| Coder(编码) | 程序员 | 把故事板翻译成可执行的 Manim 代码 |
| Critic(评审) | 美术指导 | 让视觉模型"看"一眼生成效果,挑出版面重叠、留白不均的问题,退回去让 Coder 改 |
这里有个我觉得挺巧的设计:Critic 不是嘴上说说"不够好看",它会去分析画面里元素的重叠和留白,算出具体该挪到哪儿,再把坐标建议发给 Coder 重排。相当于给 AI 配了个会盯版面的美术。
Coder 那一步也不是"写一遍就完事",它会自己跑一遍代码看报错,根据错误信息回头改,有点像我们平时写代码的调试循环。
我实际跑了一遍
安装这块提前提醒一句:它依赖 Manim,系统级依赖没装好会直接卡住,这是最容易劝退的一步。
# 1. 克隆项目gitclone https://github.com/showlab/Code2Video.gitcdCode2Video/src# 2. 装 Python 依赖pipinstall-rrequirements.txt# 3. 装 Manim Community v0.19.0(版本一定要对上)# 参考官方安装指南:https://docs.manim.community/en/stable/installation.htmlmacOS 上 Manim 的两个前置库(cairo、pango)我是用 brew 补的:
brewinstallcairo pango然后是配 API Key,文件是api_config.json:
{"LLM_API":{"provider":"anthropic","api_key":"你的key","model":"claude-4-opus"},"VLM_API":{"provider":"google","api_key":"你的key","model":"gemini-2.5-pro-preview-05-06"},"ICONFINDER_API_KEY":"可选,用来给视频补充图标素材"}【解释】:LLM就是负责写代码的那个大语言模型,Planner 和 Coder 都靠它;VLM是"能看图的语言模型",Critic 用它来看画面挑毛病。项目方推荐的组合是 Claude-4-Opus 配 Gemini-2.5-Pro。
生成一条视频,一行命令就够:
shrun_agent_single.sh--knowledge_point"Hanoi Problem"它会依次跑完 Planner 规划、Coder 写码、Critic 优化,最后执行代码渲染出视频,按项目说明默认落在CASES/TEST-single/目录下。
要批量做,就改long_video_topics_list.json里的主题列表,然后:
shrun_agent.sh# 脚本里可以调这几项:# FOLDER_PREFIX 输出文件夹前缀,比如 Math-Course-2026# MAX_CONCEPTS 生成几个(-1 表示全部)# PARALLEL_GROUP_NUM 并行跑几组我拿"汉诺塔"试了一条,出来的画面长这样:
这是视频里的真实一帧,不是示意图。左边分点讲解规则,右边三根柱子用 A/B/C 标注,圆盘用不同颜色区分——很标准的数学动画风格。
先说直观感受:清晰度确实在线,文字和图形都很干净,没有像素生成视频那种"文字糊成一团"的毛病。当然,它本质上是在"画教学动画",不是在做写实视频,所以别指望它给你生成风景大片。
它给自己出了套"考卷"
光自己说好没用。这个项目做了个基准测试叫MMMC,包含 117 个精选学习主题,还配了真人手工制作的视频作为参考答案。
【解释】:基准测试(benchmark)就是一套统一的"考卷",大家都做同一套题,才能横向比高下。
评估分三个维度:
| 维度 | 考什么 | 怎么考 |
|---|---|---|
| 知识传递(TeachQuiz) | 看完视频到底学没学到 | 自动出题、让人看完视频答题,看正确率 |
| 美学与结构(AES) | 画面好不好看、排版合不合理 | 比照真人视频的质量标准打分 |
| 效率 | 花多少 Token、跑多久 | 统计三个智能体各自的 Token 消耗和渲染耗时 |
说实话,用"看完视频后答题的正确率"来衡量教学效果,比单纯比画面相似度要靠谱得多,也能看出这个项目是想认真做教育场景,而不是做个好看的 demo。
和另外两条路比一比
我把三种方案摆在一起,方便你判断:
| 对比项 | Code2Video | 传统文生视频(Veo3 / Wan2.2 等) | 手工剪辑 |
|---|---|---|---|
| 清晰度 | 高(代码生成,文字清楚) | 中低(像素生成,文字易糊) | 高 |
| 可重现性 | 完全可重现 | 不可重现,每次都不一样 | 可重现但费时 |
| 可调试性 | 高,改代码即可 | 几乎无从下手 | 可改但流程繁琐 |
| 生成速度 | 中等 | 快 | 慢 |
| 成本 | 低(主要是 API 调用) | 中(算力) | 高(人力) |
| 风格一致性 | 高(代码控制) | 中低 | 取决于制作者 |
| 教育场景 | 专门优化 | 通用,但不够清晰 | 质量高但耗时 |
一句话总结:要"稳、清、能复用",选它;要"快、随便出个氛围视频",传统文生视频更省事;要"极致自由和特效",还是得手工来。
我踩过的几个坑
这部分也是从社区 issue 和论坛反馈里收集来的高频问题,碰到别慌:
1. Manim 装不上
八成是系统依赖缺失。Linux 上补build-essential python3-dev libcairo2-dev libpango1.0-dev,macOS 用brew install cairo pango。强烈建议装进虚拟环境,别污染全局:
python3-mvenv venvsourcevenv/bin/activate pipinstallmanim2. API 调用失败
按顺序排查:key 填对没、网络能不能通、账号额度够不够、有没有触发限流。
3. 生成的代码跑不起来
先确认版本:manim --version应该是 0.19.0。然后可以直接去输出目录里翻出生成的manim_code.py,手动跑一遍看报什么错:
manim-pqlmanim_code.py GeneratedVideo4. 视频不够好看
升级一下 LLM(官方推荐 Claude-4-Opus),或者在prompts/目录里改提示词模板,再让 Critic 多迭代几轮,通常在版面上能明显改善。
5. 太慢 / 内存爆
并行数别开太大,PARALLEL_GROUP_NUM按 CPU 核心数来;调试阶段用低质量预览,出片再上高质量:
manim-pql# 低质量,快速预览manim-pqh# 高质量,慢一些再就是先拿MAX_CONCEPTS=5小批量试,别一上来就冲上百个主题。
这东西适合谁,什么时候别用它
适合你,如果:
- 要批量做教学视频,且希望风格统一、可复现;
- 需要反复迭代画面细节,改一行就能重出;
- 你写代码比用剪辑软件顺手;
- 做的是数学、计算机、物理这类适合动画演示的内容。
别用它,如果:
- 你要的是实拍或复杂特效;
- 你只是想要一条"有艺术感的氛围短片";
- 你完全不想碰命令行和 Python 环境。
写在最后
Code2Video 最打动我的,是它换了个思路——不再执着于"让 AI 直接画视频",而是"让 AI 写能画出视频的代码"。这个转向带来的好处很实在:看得清、改得动、跑一百遍都是一个样。
当然它也不是万能的,本质上是"教学动画自动生成器",边界很清楚。但如果你恰好卡在这类需求上,它值得花一个下午装起来试试。
项目地址:github.com/showlab/Code2Video
项目主页:showlab.github.io/Code2Video
论文:arXiv:2510.01174