基于 Remotion 编程式视频引擎,用 React 逐帧编程绘制动画:弹簧物理、关键帧插值、SVG 路径动画、动态排版。每一帧都由代码精确控制,产出真正可发布的专业动效视频。
查看相关源码 ->弹簧标题揭示 · 动态排版 · 数字计数 · 场景转场
柱状图生长 · 折线绘制 · 区域填充 · KPI 计数
每一帧都由代码实时计算绘制,而非静态图片切换。下面是驱动这两个案例的动效引擎核心能力。
用 spring() 模拟阻尼弹簧驱动入场/退场,运动有重量感与回弹,而非生硬的线性切换。
interpolate() 在任意数值区间做缓动映射,配合 Easing 精确控制每一帧的透明度/位移/缩放。
折线图用 stroke-dashoffset 逐帧绘制,柱状图按数据值弹生长,区域填充同步淡入。
KPI 数字从 0 弹跳到目标值,配合千分位格式化,数据增长可视化。
每一帧都是确定性的 React 渲染,无随机抖动;按帧率精确截取后由 FFmpeg 合成 MP4。
用 Series / Sequence 编排多场景时间轴,每个场景独立可复用,像写组件一样写视频。
品牌动效片的弹簧标题与数据看板的折线绘制,核心就这几行。
// 标题用阻尼弹簧从下方弹入 const s = spring({ frame: f - 6, fps, config: { damping: 12, stiffness: 90 } }); <div style={{ transform: `translateY(${interpolate(s,[0,1],[120,0])}px)` }}> AI"#7c5cff"}}>应用开发 </div>
// 折线按进度绘制:stroke-dashoffset 从全长渐变到 0 const draw = interpolate(f, [8, 55], [0, 1], { easing: Easing.inOut(Easing.ease) }); <path d={path} stroke="url(#lg)" strokeWidth={6} strokeDasharray={len} strokeDashoffset={len * (1 - draw)} />
从"图片轮播"到"逐帧编程动效"的代际差距。