Manim 视频生成器 - 快速入门
这款应用的功能
这个应用程序使用以下方法生成数学动画视频:
- 数据源来自3Blue1Brown数据集(CSV文件)的2,407个Manim代码示例 - 使用了https://huggingface.co/datasets/dalle2/3blue1brown-manim/
- 代码执行E2B沙盒化的Python解释器运行Manim代码
- 视频输出通过网页界面向用户返回MP4视频
建筑
User → Web UI → Flask API → CSV Data → E2B Sandbox → Manim → MP4 Video
↓
ClickHouse Cloud
(original data source)快速入门
- 安装依赖项:
pip install -r requirements.txt- 设置环境变量:
创建 .env 附上您的E2B API密钥文件:
E2B_API_KEY=your_key_here- 运行应用程序:
python app.py- 打开浏览器:
导航至 http://127.0.0.1:5001
特点/功能
Web 用户界面 (http://127.0.0.1:5001)
- 🎯(目标) 根据提示生成输入关键词,如“圆形”、“旋转”、“动画”
- 🎲(骰子/游戏骰子) 随机生成从2,407个示例中随机获取一个动画
- 📋 译文:清单 浏览提示包含所有2,407个可用提示的下拉菜单
- 🎬 电影/影片的标志 视频播放器在线观看生成的视频
- 💾 代表“软盘”或“存储设备”的符号。 下载将MP4文件保存到本地
API终端点
GET /prompts
列出所有可用的提示
curl http://127.0.0.1:5001/prompts
# Returns: {"count": 2407, "prompts": [...]}POST /generate
根据提示生成视频
curl -X POST http://127.0.0.1:5001/generate \
-H "Content-Type: application/json" \
-d '{"prompt":"circle"}' \
--output animation.mp4GET /generate/random
生成随机视频
curl http://127.0.0.1:5001/generate/random --output random.mp4POST /code
获取代码而无需生成视频
curl -X POST http://127.0.0.1:5001/code \
-H "Content-Type: application/json" \
-d '{"prompt":"text"}'视频生成的工作原理
- 用户请求用户输入提示或点击随机
- 数据获取Flask 在 CSV 中搜索匹配的 Manim 代码
- E2B Sandbox(沙盒)创建独立的Python环境
- 安装Manim:
pip install manim在沙盒环境中 - 执行代码运行Manim代码以生成视频
- 返回MP4将视频文件流式传输回用户
示例提示
- “创建一个圆圈”
- “Animate text”翻译成中文是“动画文字”
- “旋转正方形”
- “Draw graph”翻译成中文是“绘制图表”
- “转换形状”
- “写出方程”
数据源
该应用程序使用 3blue1brown-manim-prompts.csv 包含:
- 第一列提示描述(动画的作用)
- 第二列Manim Python 代码
- 总记录数2,407个例子
这些数据最初被加载到ClickHouse云数据库中,用于演示目的。
技术栈
- 后端Flask(Python)
- 数据CSV/Pandas(可连接到ClickHouse)
- 执行E2B 代码解释器(沙盒环境中的 Python)
- 动画Manim 社区版
- 前端纯HTML/CSS/JavaScript
当前状态
✅ 所有2,407条提示已加载并可搜索 ✅ 带有下拉浏览器的Web用户界面 ✅ 代码检索功能正常工作 ✅ E2B沙盒已配置 API端点功能正常
这款应用已准备好生成Manim视频!
故障排除
端口5000正在使用中? 该应用程序默认运行在5001端口(macOS AirPlay通常使用5000端口)。
E2B API密钥缺失? 设定 E2B_API_KEY 在里面 .env 文件。从 https://e2b.dev 获取密钥
视频生成速度慢? 第一代(或首次)请求需要30-60秒来安装E2B的Manim。后续请求可能会更快。
没有加载提示吗? 确保 3blue1brown-manim-prompts.csv 存在于根目录中。
