比特之外

Remotion 教程 07:从视频类型反推技术组合

学 Remotion 很容易卡在生态选择上:库很多,看起来每个都能做视频,但真正落到项目里,应该先问“我要生成什么类型的视频”,再选库。

这篇是生态总览。它不追求把每个库都讲完,而是帮你建立选型地图。后面几篇会分别拆开讲 Lottie / Rive、Three、Skia、D3。

先用视频类型做判断

不要从“我想用哪个库”开始,而要从视频目标开始。

图文短视频       -> media + transitions + motion-blur
口播字幕视频     -> captions + 音频 + 字幕时间轴
动效素材视频     -> Lottie / Rive
3D 产品视频      -> Three.js + React Three Fiber
高级 2D 图形     -> Skia
数据报告视频     -> D3 计算图形,Remotion 控制动画
批量生成平台     -> Player + Renderer + 队列系统

这个顺序能避免为了炫技引入过重的库。一个简单图文模板不需要 Three,一个柱状图视频也不需要 Skia。

常用组合一:图文模板短视频

推荐组合:

remotion
@remotion/media
@remotion/transitions
@remotion/motion-blur

适合产品介绍、知识卡片、营销视频、短视频模板。

@remotion/media 负责放入音频和视频素材,@remotion/transitions 负责场景切换,@remotion/motion-blur 负责增强运动质感。

常用组合二:口播字幕视频

推荐组合:

@remotion/media
@remotion/captions
TTS / Whisper / 字幕服务

适合解说、播客切片、知识类短视频、AI 口播视频。

关键不是“字幕显示出来”这么简单,而是要把音频和字幕时间轴对齐。常见做法是:

音频 -> 字幕时间戳 -> 当前 frame 换算毫秒 -> 当前词高亮

常用组合三:Motion 作为表现层

Motion 可以进入生态组合,但不要把它当成视频主动画系统。

安全组合是:

Remotion frame -> spring / interpolate -> motion.div style

也就是:Remotion 负责时间,Motion 负责样式表达。不要在 Composition 里依赖 animatetransition.durationdraglayout 这类运行时能力。

常用组合四:动效资产

推荐组合:

@remotion/lottie + lottie-web
@remotion/rive 或 @rive-app/canvas-advanced

Lottie 适合复用 AE 或 Lottie 工作流导出的矢量动画,例如图标动效、品牌片头、状态动画。

Rive 适合角色动效、状态机和品牌动态组件。它必须依赖 .riv 资产。较新的 .riv 文件可能需要更新的 Rive Web runtime。

常用组合五:3D 产品视频

推荐组合:

three
@react-three/fiber
@remotion/three

适合手机样机、产品旋转、空间转场、3D 标题和立体图表。

关键原则仍然是:

frame -> 相机位置 / 模型旋转 / 材质参数

常用组合六:高级 2D 图形

推荐组合:

@remotion/skia
@shopify/react-native-skia

适合粒子、光效、路径、手绘风、复杂图形。它的视觉表现力强,但配置和调试成本比 DOM/CSS 高。

如果只是标题、字幕、图片和普通卡片,优先用 DOM。

常用组合七:数据可视化视频

推荐组合:

d3
remotion

D3 负责 scale、shape、数据映射和路径生成。动画仍然交给 Remotion。

const progress = interpolate(frame, [36, 72], [0, 1], {
  extrapolateLeft: "clamp",
  extrapolateRight: "clamp",
});
 
const height = y(item.value) * progress;

不要用 D3 的 transition() 来做视频主动画。那是网页运行时动画,不是逐帧视频动画。

选型表

| 需求 | 优先选择 | 不要急着用 | | --- | --- | --- | | 音频、视频、图片素材 | @remotion/media | Three、Skia | | 场景切换 | @remotion/transitions | 手写复杂转场 | | 运动质感 | @remotion/motion-blur | CSS blur 动画 | | 逐词字幕 | @remotion/captions | 手写字幕解析 | | Web 动效表达 | Motion 作为 style 层 | Motion runtime 动画 | | 设计动效资产 | Lottie / Rive | 手写复杂 SVG | | 3D 产品展示 | Three | CSS 3D 硬凑 | | 光效和路径 | Skia | DOM 堆大量元素 | | 数据图表 | D3 计算 + Remotion 动画 | D3 transition |

一个实用判断流程

可以按这个顺序问自己:

  1. 视频里有没有真实音频、图片或视频素材?先看 @remotion/media
  2. 有没有多场景切换?看 @remotion/transitions
  3. 有没有字幕和口播?看 @remotion/captions
  4. 有没有现成设计动效?看 Lottie / Rive。
  5. 有没有真实 3D 空间?看 Three。
  6. 有没有复杂 2D 绘制?看 Skia。
  7. 有没有数据图形?看 D3。
  8. 是否要做网页预览和批量出片?看 Player / Renderer / 队列。

示例项目位置

这篇文章对应示例项目里的生态总览:

Composition: LessonAdvancedEcosystem
文件: src/lessons/AdvancedEcosystem.tsx

后面几篇会拆开讲这些专项示例:

LessonLottieEcosystem
LessonRiveEcosystem
LessonThreeEcosystem
LessonSkiaEcosystem
LessonDataVideo

如果你只是想做图文模板和口播视频,前面几篇已经足够开始做项目。如果你要做更强的视觉效果,继续读后面的专项文章。

本文标签