基于 Remotion 框架的视频自动化生产技能,实现从项目创建到最终渲染的全流程自动化。
包含 5 个专门 Agent 角色分工协作、6 阶段标准工作流程、10+ 常见坑预防方案和自动质量检查机制。
根据用户需求判断执行路径:
用户请求创建 Remotion 视频
│
├─ 1. 全新项目 → 执行完整六阶段流程(observe → define → execute → integrate → verify → render)
│
├─ 2. 已有项目修改 → 根据修改内容选择对应 Agent:
│ ├─ 修改场景/组件 → designer(Phase: execute)
│ ├─ 添加/修改音频 → audio_engineer(Phase: integrate)
│ ├─ 修复问题 → quality_inspector → 对应 Agent
│ └─ 重新渲染 → render_engine(Phase: render)
│
└─ 3. 仅咨询/问答 → 直接回答,引用 references/ 中的知识
```bash
node --version && npm --version
python3 --version # 可选,TTS 需要
ffmpeg -version # 可选,音频处理需要
```
```bash
mkdir -p src public/audio
npm init -y
npm install remotion @remotion/cli react react-dom
npm install -D @remotion/player @types/react @types/react-dom typescript
```
tsconfig.json 和 src/Root.tsx 入口文件spring()、interpolate())致命规则(必须遵守):
容器内const duration = fps * seconds,不使用硬编码数字useVideoConfig() — 获取视频尺寸做响应式布局机械/物理动画正确性规则(当涉及物理对象动画时必须遵守):
2 pitchRadius / teeth。齿轮的 outerRadius/innerRadius 必须由 module 和 teeth 自动计算得出(addendum=module, dedendum=1.25module),不能随意手写。违反此规则会导致齿大小不同,物理上无法啮合rotate() 用度数,不是弧度! 必须用 180 / drivenTeeth(度),不能用 Math.PI / drivenTeeth(弧度)。弧度值被当成度数处理会导致偏移只有正确值的 1/57,几乎等于没有偏移driverRotation 是度数(如 localFrame * 1.2),则 phaseOffset 也必须是度数npx tsc --noEmitreferences/tts-guide.md)```bash
ffprobe -v error -show_entries format=duration -of csv=p=0 public/audio/title.mp3
```
```tsx
import { staticFile, Audio } from 'remotion';
// 正确: 使用 staticFile() 包装路径
```
```tsx
const totalFrames = Math.ceil(totalAudioDuration * fps);
```
执行质量门禁检查:
| 检查项 | 命令/方式 | 严重级别 |
|---|---|---|
| -------- | ---------- | --------- |
| TypeScript 编译 | npx tsc --noEmit | 致命 |
| 依赖完整性 | npm list --depth=0 | 致命 |
| 预览显示 | 启动预览视觉确认 | 致命 |
| 音频文件存在 | ls public/audio/*.mp3 | 警告 |
| 音频时长 | ffprobe public/audio/*.mp3 | 警告 |
| 音视频同步 | 对比音频时长和视频帧数 | 致命 |
| 物理动画正确性 | 逐场景审查运动副参数(见下方清单) | 致命 |
物理动画正确性检查清单(当视频包含齿轮、杠杆、连杆等物理对象时必查):
Math.PI 返回弧度但被当作度数传给 SVG rotate()```bash
npx remotion render src/index.ts
```
```bash
ffprobe out/output.mp4
```
创建和修改 Remotion 项目时,必须遵守以下规则,避免常见致命错误:
public/ 目录下的资源必须使用 staticFile() 包装,路径相对于 public/ 目录,不包含 public 前缀 标签内,避免多个独立 SVG 导致坐标错位Root.tsx 中的导入路径number 类型,不使用字符串;使用 Math.ceil() 向上取整详细的问题描述和代码示例见 references/common-pits-and-solutions.md。
按需加载到上下文的参考文档:
agent-roles.md — 5 个 Agent 角色的详细定义、职责、任务清单和检查点common-pits-and-solutions.md — 10+ 个常见坑的详细症状、原因、代码示例和解决方案workflow-phases.md — 六阶段工作流程的详细步骤和成功标准tts-guide.md — Edge-TTS 安装、配置、中文音色列表、语速调节和故障排除physical-animation-verification.md — ⭐ 物理动画验证检查范例(实战沉淀):齿轮啮合四层 bug 剖析、通用验证四步流程(参数溯源→单位追踪→程序化验证→渲染帧确认)、Python 诊断脚本模板、扩展到其他物理对象的检查映射表可直接执行的脚本:
generate-tts-audio.py — 使用 Edge-TTS 生成中文 TTS 音频文件,自动生成 audio-durations.json 时长配置setup.sh — 环境配置脚本,检查依赖、创建目录结构、安装 Node.js 依赖verify.sh — 验证脚本,检查项目结构、依赖安装、TypeScript 编译、音频文件等用户说:"用 Remotion 创建一个关于量子计算的介绍视频,需要中文解说"
执行流程:
用户说:"给这个 Remotion 视频加上中文语音解说"
执行流程:
generate-tts-audio.py 生成音频 组件用户说:"视频预览里元素位置对不上"
检查方向(引用 references/common-pits-and-solutions.md):
共 1 个版本