
Remotion用 React 写视频让代码成为剪辑师什么是 RemotionRemotion 是一个用 React 创建视频的开源框架。它的核心理念只有一句话https://github.com/lfl171/fanfa_donghua.githttps://github.com/lfl171/fanfa_donghua2.githttps://github.com/lfl171/ls.githttps://github.com/lfl171/ls1.git视频就是一帧一帧的图片而每一帧都可以是一个 React 组件。你不再需要打开 Premiere 或 After Effects 拖时间轴而是用写代码的方式编程式地生成视频import { AbsoluteFill, interpolate, useCurrentFrame } from remotion; export const MyVideo: React.FC () { const frame useCurrentFrame(); // 第 0-90 帧透明度从 0 渐变到 1 const opacity interpolate(frame, [0, 90], [0, 1], { extrapolateLeft: clamp, extrapolateRight: clamp, }); return ( AbsoluteFill style{{ backgroundColor: white }} h1 style{{ opacity }}Hello, Video!/h1 /AbsoluteFill ); };渲染出来的视频标题会平滑淡入。就这么简单——动画的本质是f(帧号) → 视觉属性的纯函数。为什么值得学1. 前端技能直接复用会 React 就会 Remotion。JSX、组件、props、hooks 全部通用样式还是熟悉的 CSS。学习成本几乎只在于理解时间轴这一个新概念。2. 一切皆可参数化可编程生成传统剪辑软件里做 100 个个性化视频是噩梦在 Remotion 里只是一个循环users.map((user) ( Composition id{Card-${user.id}} component{WelcomeCard} props{{ user }} / ));Spotify 的 Wrapped 年度总结、GitHub 的年度报告背后都是这类技术。3. JSON 驱动 AI 生成视频的天然接口这是我认为最有想象力的部分把创意写成数据把渲染交给代码。{scene:act2-darkness-spreads,duration:35,camera:[slow zoom,right pan],layers:[{type:component,component:AnimatedChart,delayFrames:700,params:{mode:line,data:1939,3; 1940,8; 1941,15; 1942,24; 1943,34; 1944,50; 1945,70,counterTo:70000000}}]}一份 JSON 描述一幕场景时长、运镜、图层、数据。大语言模型生成 JSONRemotion 自动渲染成片——这就是一条完整的AI 纪录片生成流水线人只需要审脚本不需要碰剪辑软件。4. 工程化的视频开发体验能力传统剪辑软件Remotion版本管理工程文件二进制无法 diffGit 管理逐行 diff复用复制粘贴模板npm 包、组件抽象协作传工程文件Code Review修改一个错别字重开软件找时间轴改一行热更新预览批量生成手动导出 N 次CI 里跑 N 次渲染核心概念速览Composition视频入口Composition idHumanMemory component{HumanMemory} durationInFrames{5400} // 180 秒 × 30fps fps{30} width{1920} height{1080} /Sequence时间轴上的片段把组件安排在指定帧区间内播放等价于剪辑软件里把素材拖到时间轴上Sequence from{750} durationInFrames{1050} Act2DarknessSpreads / /Sequenceinterpolate 与 spring两种动画手感// 线性映射适合淡入淡出、位移 const scale interpolate(frame, [0, 150], [1, 1.15]); // 弹簧物理适合弹入、生长有自然的回弹 const enter spring({ frame, fps, config: { damping: 12, stiffness: 100 } });一个实用细节interpolate默认会外推务必加extrapolateLeft/Right: clamp否则动画结束后数值会继续跑飞。确定性是第一原则Remotion 渲染时会以任意顺序、多浏览器并行渲染同一帧每一帧都必须只由帧号决定// ❌ 错误Math.random() 每帧不同视频会闪烁 const x Math.random() * 100; // ✅ 正确用帧号做种子的伪随机如 mulberry32 const rand useMemo(() mulberry32(42), []);粒子数量、位置、颜色……一切随机都必须是可复现的随机。开发工作流# 创建项目npx create-videolatest# 可视化预览热更新改代码秒级见效npmrun dev# 抽一帧静态图快速验证某一帧的构图npx remotion still HumanMemory out/check.png--frame1520# 全量渲染npx remotion render HumanMemory out/final.mp4实际项目中我最依赖的是抽帧验证不用等整段渲染直接看第 N 帧长什么样调动画曲线效率极高。实战一个 JSON 驱动的纪录片动画项目用 Remotion 做一部 180 秒、五幕结构的历史动画短片架构是这样的scene.json ← 五幕配置时长/运镜/图层/文案/节拍 ↓ parser.ts ← 校验 组件注册表字符串名 → React 组件 ↓ Composition.tsx ← 按配置自动编排 Sequence ↓ SceneRenderer.tsx ← 通用图层渲染器text/image/map/particles/component ↓ 14 个动画组件 ← Ken Burns 照片活化、墨水扩散地图、 SVG 折线/柱状数据图表、粒子尘埃、 黑白照片扫光复彩、无面人形、数学公式浮现……几个有意思的技术点Ken Burns 效果scale 1 → 1.15配合缓慢平移静态老照片立刻有了电影感墨水扩散地图SVGmask里让一组圆半径随帧号增长 高斯模糊黑暗浸染地图数据可视化pathLength{1}strokeDashoffset从 1 减到 0折线自己画出来右上角大数字用interpolate同步滚动到 70,000,000音频节拍beatMarkers数组标记关键帧驱动光效脉冲为后期配乐留好对齐点最终一条命令渲染出 5400 帧 / 1920×1080 / 30fps 的成片。局限与注意事项诚实地说Remotion 不适合所有场景渲染速度本质是浏览器逐帧截图 FFmpeg 合成长视频渲染耗时远超剪辑软件导出。适合程序化生成不适合当快速出片工具商业授权核心 MIT但公司使用需要购买 Company License个人和开源免费使用前看清授权条款复杂转场/调色精细的色彩分级、实拍剪辑节奏感仍是专业剪辑软件的强项音频处理弱混音、音效设计不是它的领域一般渲染无声视频 旁白/音乐后期合成适合谁前端工程师想给简历加一个会用 React 生成视频的差异化技能数据可视化爱好者把图表变成动画叙事比静态 dashboard 震撼十倍AI 应用开发者LLM 生成 JSON 脚本 → Remotion 渲染是当下最有想象力的 AIGC 视频管线之一内容创作者批量做模板化视频课程片头、产品发布、年度总结结语视频行业过去三十年一直在把时间轴图形化让人去适应工具Remotion 反其道而行——把时间轴还原成代码让工具适应工程师的思维。当视频变成纯函数f(frame) → pixels它就获得了代码的一切美德可版本控制、可复用、可参数化、可由 AI 生成。这可能是视频创作离软件工程最近的一次。npx create-videolatest—— 用你的第一行代码渲染第一段视频。