用途
import-canvas-capture 用于把一段已录制的 Remotion Canvas Capture 导入到 Remotion 项目中,整个过程不需要与 Studio 交互。它属于内部、不稳定的工作流,应保留在 .agents/skills 中,不要通过 packages/skills 分发,也不要把该命令作为稳定 API 来文档化。
主要能力
- 定位录制文件与目标 Remotion 项目。原始录制必须包含内嵌的 REMOTION_CAPTURE_DATA 元数据;如果视频经过转换而丢失了该元数据,则无法导入。
- 检查项目,找到包含组合注册的 TypeScript 文件(通常是 src/Root.tsx),并选择一个未使用的组合 ID。
- 导入器会在注册文件旁生成一个组件、注册该组件、把视频复制到 public 目录,并按项目当前的 Remotion 版本安装缺失的 @remotion/media 和 @remotion/mac-cursors 依赖。
- 无需运行 Studio。已有的 Studio 会话会通过文件监听器感知源码变更;此操作不会进入 Studio 的撤销栈。
使用方式
在目标项目根目录下运行:
bunx remotion experimental-codemod add-canvas-capture /absolute/path/capture.webm \
--composition-file src/Root.tsx \
--id MyCapture
在 monorepo 中开发该命令时,先用 bun run build 构建 CLI,然后在目标项目根目录调用本地 CLI:
node /absolute/path/to/remotion/packages/cli/remotion-cli.js \
experimental-codemod add-canvas-capture /absolute/path/capture.webm \
--composition-file src/Root.tsx --id MyCapture
完成后,检查报告中的源文件和 public 资源,并向用户报告组合 ID 与变更的文件。
选项与冲突
- 默认值与 Studio 的 capture 导入一致:1920×1080、60 fps,时长按录制向上取整。可用 --width、--height、--fps 覆盖。录制视频的尺寸与组合尺寸相互独立。
- --public-dir 覆盖已配置的 public 目录。--package-manager 选择依赖安装器。
- --dry-run 会解析录制并生成源码变更,但不安装依赖、不写入项目文件。程序化结果中包含建议的源码变更。
- 注册文件相对于项目根目录解析;CLI 的 capture 路径相对于当前工作目录解析。
- 已存在的组件文件和冲突的 public 资源会被拒绝。如果录制文件已在 public 目录中,可把该文件作为输入以复用。否则请重命名输入或选择另一个组合 ID;不要为了绕过错误而覆盖已有资源或组件。
程序化访问
使用来自 @remotion/cli 的 CliInternals.importCanvasCapture。它是内部且不稳定的。其输入包括 captureFile、compositionFile、compositionId、remotionRoot、publicDir、fps、width、height、packageManager、logLevel 和 dryRun。默认目录、尺寸、帧率和包管理器请传 null。文件路径相对于 remotionRoot 解析。结果包含组合 ID、源文件与资源路径、组合元数据以及 codemod 变更。传 dryRun: true 可在内存中检查变更。
适用场景
适用于需要把已录制的 Canvas Capture 以脚本化、非交互方式加入 Remotion 项目的场景,例如在自动化流程或 monorepo 开发中导入 capture。
限制
- 该工作流为内部、不稳定,不应作为稳定 API 分发或文档化。
- 录制文件必须保留内嵌的 REMOTION_CAPTURE_DATA 元数据,否则无法导入。
- 已存在的组件文件与冲突的 public 资源会被拒绝,不能通过覆盖来绕过错误。
- 此操作不进入 Studio 的撤销栈。
- 关于收费、价格、平台支持范围等信息,资料中暂未提供。