用途:指导在 Remotion 中编写 React 标记(markup),涵盖内容、动画与特效的最佳实践。若场景不适用,应改用 Remotion Best Practices。
主要能力与规则:在组合或场景组件内用 useVideoConfig() 获取 fps,所有秒到帧的换算(from、trimBefore、durationInFrames、premountFor 等)都基于它,并把表达式留在 JSX 节点上。用 useCurrentFrame() 与 interpolate() 驱动动画,CSS transition/animation 和 Tailwind 动画类不能正确渲染,需要重构;用 Easing.bezier()、Easing.spring() 定制缓动。interpolate() 调用应内联在 style 属性中,优先用 scale、translate、rotate 等 CSS 属性而非 transform 字符串。为可编辑的独立项各自建立 JSX 节点并内联可编辑属性,程序化循环只适合作为统一模板管理。可交互组件用 Interactive.withSchema({wrapInSequence: true}),把可复用场景注册为 connected composition。为支持 premountFor 的定时组件设置 premountFor={fps}。
媒体与资源:资源放在项目根目录 public/,用 staticFile() 引用或直接传远程 URL。视频与音频用 @remotion/media 的 <Video>、<Audio>,图片用 <CanvasImage>,动态图用 <AnimatedImage>(非 Chrome 用 @remotion/gif)。
特效:对支持 effects 的组件优先用内置效果(如给 <Video> 加 vignette())。支持直接接收 effects 的组件包括 remotion 的 <Img>、<CanvasImage>、<AnimatedImage>、<Solid>、<HtmlInCanvas>,@remotion/media 的 <Video>,@remotion/gif 的 <Gif>,@remotion/rive 的 <RemotionRiveCanvas>,@remotion/shapes 的多种形状。普通 HTML 元素、<Interactive.*>、<AbsoluteFill>、<Sequence> 不直接支持,可用 <HtmlInCanvas> 包裹后加 effects。应用前先读 effects.md。
安装与预览:用 npx remotion add @remotion/media 添加正确版本,适用于 @remotion/*、mediabunny、zod 等。需要视觉检查时打开 Remotion Studio 交互预览,或渲染单帧图片查看。
扩展主题(按需加载对应文档):视频剪辑用 video-editing.md,多场景用 multi-scene-video.md,connected composition 用 connected-compositions.md,配音用 voiceover.md,转场用 transitions.md,运动模糊用 motion-blur.md,音频可视化、音效、字幕、字体、GIF、Lottie、3D、地图、FFmpeg、静音检测、动态元数据等均有单独文档。
限制与注意:不要覆盖用户在对话外做出的意外改动,应视为有意或先确认。提取预合成组件时需携带继承样式(如字体族与字体加载),并注册包含尺寸、fps、时长和 defaultProps 的 <Composition>,仅抽取组件而不注册不算完成预合成。未提供收费、价格与具体平台支持等信息。