不会 AE/PR 也能做视频?用 React 写视频的 Remotion 上手实测

批量给客户出"年度数据报告视频"这类需求,很多人第一反应是两条路:要么找设计同学用 After Effects 套模板,要么自己写脚本调 FFmpeg。前者排期长、改数据靠手改;后者写起来又臭又长、还不好维护。

但这两条路其实都不太对——问题不在于选哪个工具,而在于这件事的本质是 “模板 + 数据 → 批量渲染”,跟自动生成 PPT 报告是一回事,只是输出格式变成了视频。

刷 GitHub 的时候看到有人提了一嘴 Remotion——一个"用 React 写视频"的框架。我半信半疑试了一周,现在把它推荐给同样被视频需求折磨的前端同学。

一句话定性:Remotion 让你用写 React 组件的方式,程序化地生成视频。你平时怎么写网页,就怎么写视频。这个项目目前在 GitHub 上有近 3 万 Star,最新版本到了 v4.x(2026 年初的发布),npm 上周下载量是几十万级别,算是这个方向里最活跃的那个。

在这里插入图片描述

它到底解决什么痛点

传统视频工具(比如 After Effects、Premiere)有几个绕不开的麻烦:

  • 学习成本高:调关键帧、蒙版、特效,对非设计出身的人不友好。
  • 没法版本控制:工程文件是二进制,Git 管不了,改一版就多一个文件。
  • 难自动化:想给 1000 个用户各生成一段个性化视频?手工做显然不现实。
  • 复用性差:一段好用的片头,换个项目往往得重新搭。

Remotion 的思路很直接:既然视频归根结底是"一帧一帧的画面",而 React 最擅长描述"界面长什么样",那干脆把每一帧交给 React 组件去画。画面怎么变,用代码算出来就行。

打个比方:传统做视频像用 Photoshop 一张张修图;Remotion 像用 Excel 公式批量生成报表——你定义规则,它替你把结果算出来。

我上手后的核心体验

一切都是 React 组件

你写的"视频"就是一堆 React 组件。平时会的 Hooks、组件复用、TypeScript,全部原样能用。对新手来说,这意味着几乎没有新东西要学——你会写网页,就会写视频。

用"帧"而不是"秒"来计时

Remotion 里时间的基本单位是帧(frame):比如 30fps(每秒 30 帧)的视频,第 60 帧就是第 2 秒。

帧(frame):视频里的一张静态画面,连续播放就成了动画。fps 是每秒播放的帧数。

这样做的好处是精确:动画从第几帧开始、到第几帧结束,写得清清楚楚,不会因为"0.5 秒"这种小数算错。

动画靠函数算出来

最常用的是两个函数:

  • interpolate(插值):把"第几帧"映射成"某个数值",比如透明度从 0 渐变到 1。
  • spring(弹簧):做出带弹性的动效,类似手机 App 里图标弹一下那种感觉。
import { useCurrentFrame, interpolate, spring, useVideoConfig } from 'remotion';

export const MyComponent: React.FC = () => {
  const frame = useCurrentFrame(); // 当前是第几帧
  const { fps } = useVideoConfig(); // 拿到视频配置(帧率等)

  // 透明度:前 30 帧从 0 渐变到 1
  const opacity = interpolate(frame, [0, 30], [0, 1]);
  // 缩放:带弹簧效果的弹入
  const scale = spring({ frame, fps, config: { damping: 200 } });

  return <div style={{ opacity, transform: `scale(${scale})` }}>Hello</div>;
};

用 Sequence 拼时间轴

一段视频通常是"片头 + 正文 + 片尾"拼起来的。Remotion 用 Sequence 把不同组件按时间摆到时间轴上:

import { Sequence } from 'remotion';

export const MyVideo: React.FC = () => {
  return (
    <>
      <Sequence from={0} durationInFrames={30}><Intro /></Sequence>
      <Sequence from={30} durationInFrames={60}><MainContent /></Sequence>
      <Sequence from={90} durationInFrames={30}><Outro /></Sequence>
    </>
  );
};

from 是"从第几帧开始出现",durationInFrames 是"持续多少帧"。这就相当于剪辑软件里把素材拖到时间轴不同位置。

在这里插入图片描述

跑通你的第一个视频

官方的脚手架一行命令就能起:

# 装好 Node 后直接跑,会帮你初始化项目
npx create-video@latest

# 或者用包管理器
npm create video@latest      # npm
yarn create video            # yarn
pnpm create video           # pnpm

初始化后,定义"成片"只需要一个 Composition

Composition(合成):可以理解为视频里一个独立的"成片",每个成片有自己的尺寸、帧率、总时长。一个项目能定义多个成片。

// src/Root.tsx
import { Composition } from 'remotion';
import { HelloWorld } from './HelloWorld';

export const RemotionRoot: React.FC = () => {
  return (
    <Composition
      id="HelloWorld"
      component={HelloWorld}
      durationInFrames={150}  // 总帧数:150 帧
      fps={30}                // 帧率:30
      width={1920}            // 宽
      height={1080}           // 高
    />
  );
};

成片里具体画什么,写在组件里:

// src/HelloWorld.tsx
import { useCurrentFrame, interpolate } from 'remotion';

export const HelloWorld: React.FC = () => {
  const frame = useCurrentFrame();
  const opacity = frame >= 20 ? 1 : frame / 20; // 前 20 帧淡入

  return (
    <div style={{ flex: 1, textAlign: 'center', fontSize: '7em', opacity }}>
      Hello World
    </div>
  );
};

本地预览和导出:

npm run dev    # 启动开发服务器,浏览器里实时预览、拖时间轴
npm run build  # 渲染导出成视频文件

我第一次跑通的时候挺惊喜的——改一行代码,画面立刻跟着变,跟写网页一模一样。

它适合干什么

从我这段时间和社区里看到的用法,Remotion 在下面几类场景特别顺手:

场景例子为什么合适
个性化视频GitHub Unwrapped 年度总结、用户数据报告数据来自接口,循环生成千人千面
数据可视化动态图表、统计报告图表用 React/SVG 画,天然适配
产品演示功能介绍、教程动画组件复用,改文案就能出新片
社媒内容Logo 动画、节日祝福、批量短视频一套模板批量出片
自动化生产接 CI/CD、定时出片纯代码,能写进流水线

GitHub Unwrapped 就是官方用 Remotion 做的:每年给 GitHub 用户生成一段专属年度回顾视频。技术频道 Fireship 也用它快速产出视频。

在这里插入图片描述

和 AE / FFmpeg / MoviePy 怎么选

我整理了一张对比表,帮你判断什么时候该用谁:

对比项RemotionAfter EffectsFFmpegMoviePy
上手难度会 React 就行要学专业软件命令行脚本Python 库
版本控制代码可管 ✅二进制难管脚本可管脚本可管
自动化完全可编程需脚本辅助命令行强Python 强
复用性组件复用模板脚本函数
Web 技术全支持不支持不支持不支持
批量生成天然支持勉强脚本支持脚本支持
成本开源,商用需许可证订阅制免费免费

一句话建议:如果你本来就是前端、要批量/自动化/数据驱动地出视频,Remotion 几乎是最优解;如果你要做复杂特效大片,AE 还是更强。

说点实在的:优点和要注意的坑

我觉得值的地方:

  • 对 React 开发者几乎零学习成本,上手当天就能出片。
  • 视频工程变成代码,能 Git 管理、能 Review、能跑测试。
  • 批量生成是天生的能力,不用额外造轮子。
  • CSS、Canvas、SVG、WebGL 全都能用,Web 生态直接搬。

开始之前要想清楚的:

  • 商用授权:Remotion 不是完全自由的 MIT。它的许可证规定某些商业用途需要单独买公司许可证(具体看仓库里的 LICENSE.md)。个人学习、开源项目没事,公司拿来做产品得留意一下。
  • 渲染依赖:本地渲染靠无头浏览器(Puppeteer/Playwright)逐帧截图,再用 FFmpeg 编码,机器配置差的话渲染挺吃资源。官方也提供云端 / Lambda 渲染来分摊。
  • 特效上限:纯代码能做出绝大多数动效,但影视级复杂合成,AE 仍然更专业。

怎么开始

  1. 确保装了 Node.js(18+ 比较稳)。
  2. npx create-video@latest 初始化。
  3. src/HelloWorld.tsx 里的组件,浏览器里看实时效果。
  4. 想深入就翻官方文档和示例仓库,社区 Discord 也挺活跃。

资源链接

  • GitHub:https://github.com/remotion-dev/remotion
  • 官网:https://remotion.dev
  • 文档:https://remotion.dev/docs
  • API 参考:https://remotion.dev/api
  • 示例项目:仓库里 packages/example 目录
  • 云端渲染:https://remotion.pro(不想本地吃资源可以看这个)

如果你也经常被"做个视频"的需求卡住,又恰好会点 React,真心建议花一个下午试一下 Remotion。它不一定取代你的剪辑软件,但能帮你把那些"重复、批量、数据驱动"的视频需求,变成几行代码的事。

代码下载链接: https://pan.quark.cn/s/a4b39357ea24 用户账户控制(UAC)白名单的配置 Windows7环境中 UAC(User Account Control,用户帐户控制)是由微软在Windows Vista版本中推出的一项旨在增强系统安全性的创新技术,该技术强制要求用户在执行可能干扰计算机正常运作的操作或进行更改会波及其他用户设置的变动前,必须提供相应的权限或管理员密码进行验证。通过对这些操作启动前进行授权确认,UAC能够有效阻止恶意软件及间谍软件在未获授权的状态下于计算机内进行安装或实施修改。 自从Vista版本问世以来,微软便开始推行这一全新的安全机制,可视为对系统安全防护的显著提升。尽管UAC确实能够在一定程度上对某些非法程序起到防御作用,但与此同时,这一功能也给众多用户带来了诸多不便。 因此,许多用户开始探寻是否存在类似于白名单的功能,以便将那些值得信赖的程序直接赋予运行权限。事实上,这类功能确实存在,不过微软并未将其作为标准配置提供。 网络上关于此问题的绝大多数建议都是建议禁用UAC,这种说法显然缺乏针对性,因为若用户希望禁用此功能,本就不会提出相关疑问。 通过运用微软官方发布的Microsoft Application Compatibility Toolkit 5.6版本,可以将信任的程序纳入系统白名单范畴。 获取Application Compatibility Toolkit 安装程序成功后会出现三个可执行文件 以管理员身份启动Compatibility Administrator 在Custom DataBases部分创建新的数据库,并添加一个Application Fix(在下方空白处点击右键,选择...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的雷神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值