
remotion-dev/remotionReact
一句话亮点: 使用React编程式创建视频,支持动态生成和渲染高质量视频内容
项目概述: Remotion是一个革命性的开源框架,允许开发者使用React和TypeScript编程式地创建视频内容。框架采用声明式方法,开发者可以通过编写React组件来定义视频的每一帧,然后使用Remotion的渲染引擎将这些帧组合成完整的视频。Remotion支持动态内容生成、数据驱动的动画、以及基于实时数据的视频创建。性能方面,Remotion利用WebGL和硬件加速实现高效渲染,支持4K分辨率和多种视频格式。该框架特别适合创建动态视频内容,如数据可视化视频、个性化营销内容、自动化报告视频等。
技术架构:
基于React的声明式视频创作系统
WebGL加速渲染引擎架构
模块化的组件和插件系统
支持实时数据驱动的动画生成
核心特性:
使用React组件定义视频内容
支持动态数据驱动的动画
高效WebGL加速渲染
4K分辨率和多种视频格式支持
适用场景与案例:
数据可视化和分析报告视频生成
个性化营销和广告内容创建
自动化业务报告和演示视频
教育和技术教程视频制作
上手建议:
安装Remotion CLI和依赖
学习视频组件的基本结构
创建第一个简单视频应用
探索高级动画和数据绑定
一、核心概念与优势
Remotion 本质是将 React 组件渲染成一帧帧的画面,再拼接成视频文件。它的核心优势:
React 生态复用:可以直接使用 React 组件、CSS、SVG、甚至 Three.js 等前端技术制作动态视频;
可编程性:支持变量、循环、条件渲染,能做数据驱动的视频(比如自动生成数据可视化视频、个性化视频);
跨平台:基于 Node.js 和浏览器,可在 macOS、Windows、Linux 上运行;
预览与导出:提供实时预览界面,支持导出 MP4、GIF、PNG 序列等格式。
二、快速上手(基础使用步骤)
1. 环境前置条件
Node.js 18.x 或更高版本(推荐 LTS 版本);
npm/yarn/pnpm 包管理器;
部分渲染功能需要 FFmpeg(Remotion 会自动安装,无需手动配置)。
2. 创建第一个 Remotion 项目
# 初始化项目(官方推荐用pnpm)
pnpm create remotion@latest my-video-project
# 进入项目目录
cd my-video-project
# 启动预览开发服务器
pnpm dev
执行后会自动打开 http://localhost:3000,你能看到默认的示例视频预览界面。
3. 核心代码示例(修改默认视频)
项目中 src/Composition.tsx 是视频的核心组件,以下是一个极简的自定义视频示例:
import { AbsoluteFill, Composition } from "remotion";
// 定义视频的单帧组件
const MyVideo = () => {
return (
<AbsoluteFill style={{ backgroundColor: "#000", color: "#fff", fontSize: 60 }}>
{/* 显示当前帧的进度(Remotion 提供的内置上下文) */}
<div style={{ display: "flex", justifyContent: "center", alignItems: "center", height: "100%" }}>
Hello Remotion! 帧进度: {useCurrentFrame()}
</div>
</AbsoluteFill>
);
};
// 定义视频的元信息(分辨率、时长、帧率)
export const RemotionVideo = () => {
return (
<Composition
id="my-first-video" // 视频唯一ID
component={MyVideo} // 渲染的组件
durationInFrames={30} // 总帧数(30帧=1秒,默认30fps)
fps={30} // 帧率
width={1920} // 宽度
height={1080} // 高度
/>
);
};
4. 导出视频
# 导出默认视频(MP4格式)
pnpm build
# 导出指定ID的视频
pnpm build --composition=my-first-video
导出的视频会保存在 out/ 目录下。
三、核心 API 与常用功能
关键钩子(Hooks):
useCurrentFrame():获取当前渲染的帧数(核心,用于做动画);useVideoConfig():获取视频配置(宽、高、帧率、总时长);useTimeline():获取时间轴进度(秒数)。
动画实现:
结合
useCurrentFrame()可以做基础动画,比如移动的文字:const MyAnimatedVideo = () => { const frame = useCurrentFrame(); const { width } = useVideoConfig(); // 让文字从左到右移动(30帧移动1920px) const x = frame * (width / 30); return ( <AbsoluteFill> <div style={{ position: "absolute", left: x, top: 500, fontSize: 60 }}> 移动的文字 </div> </AbsoluteFill> ); };高级功能:
音频:支持导入音频文件并同步播放;
动态数据:可以导入 JSON/CSV 数据,生成个性化视频;
云渲染:Remotion Cloud 支持分布式渲染(付费);
自定义渲染:支持导出 GIF、PNG 序列、甚至直播流。
总结
核心定位:Remotion 是 React 写视频的工具,把组件渲染成帧、拼接成视频,兼顾前端开发体验和视频制作的灵活性;
核心流程:编写 React 组件(定义每一帧)→ 配置视频参数(分辨率 / 帧率 / 时长)→ 预览 / 导出视频;
关键 API:
useCurrentFrame()(当前帧)、useVideoConfig()(视频配置)、Composition(视频元信息组件)是最基础也最核心的部分。