乐于分享
好东西不私藏

OpenCut:从零重写的开源视频编辑器,正在进入 Rust 时代

OpenCut:从零重写的开源视频编辑器,正在进入 Rust 时代

如果你关注过开源视频编辑工具,大概对 OpenCut 不会陌生。这个项目在 GitHub 上已经积累了66.7k Stars和 7k Forks,定位很直接——做 CapCut 的开源替代品。

但今天想聊的不是那个大家已经熟悉的 OpenCut,而是它正在经历的一次彻底重写。

为什么要重写?

OpenCut 目前正在从零开始重写(rewritten from the ground up)。这不是一次简单的版本迭代,而是架构层面的重新设计。

原来的版本(现称 opencut-classic)已经能用了:有浏览器端的 timeline、蒙版、关键帧、特效,底层用 Rust + wgpu 实现 WASM 合成器。但团队显然不满足于此——他们想要的是一套能同时覆盖 Web、桌面和移动端的统一架构。

于是有了这次重写。

新架构的六个关键词

根据 GitHub README 和官方路线图,新版 OpenCut 的核心规划可以概括为六个方向:

1. 一个 Rust 核心,三端共用

这是最核心的架构决策。Web、桌面、移动端共用同一套 Rust 核心引擎,而不是维护多套代码分支。桌面端使用GPUI 框架——也就是 Zed 编辑器同款的 UI 框架,直接调用原生系统 API,相比 Electron 方案省去了 WebView 的性能损耗。

这套 Rust 核心不仅仅是”能用”,它承担了视频合成、GPU 加速特效和复杂蒙版羽化等重计算任务。通过wgpu提供可移植的渲染管线,在浏览器中通过 WebAssembly 运行。Rust 核心被组织为一个 workspace,包含多个 crate:opencut-wasm作为 WASM 入口和 JS 桥接层、compositor负责核心渲染逻辑和着色器编排、gpu抽象 wgpu 上下文管理和纹理处理、effects处理 WebGL/WebGPU 特效管线、masks负责蒙版生成和基于 JFA 的羽化算法。

2. 编辑器 API

提供程序化控制项目与渲染的能力。这意味着开发者可以通过代码来操作编辑器,而不仅仅依赖 GUI。API 的稳定性与版本策略将是生态能否做大的关键。

3. 插件优先架构

这是新版最有意思的设计决策。所谓”插件优先”,不是”先做编辑器再考虑怎么接插件”,而是从一开始就把插件系统作为架构的一等公民来设计。整个编辑器围绕插件 API 构建,类似于 VSCode 的 Extensions 模式。第三方插件和官方功能在架构层面拥有同等的地位。

开发者在构建插件时需要关注几个关键点:一是API 稳定性,频繁变更会阻碍生态增长;二是跨语言桥接,为降低门槛应提供 JS/TS 插件支持(通过 WASM/IPC),而非只限定 Rust;三是性能与权限控制,插件执行不得影响主渲染与导出路径。

4. MCP 服务器

MCP(Model Context Protocol)服务器让 AI Agent 能够以编程方式控制 OpenCut。目前社区已经有一个独立的opencut-controller包实现了这套协议,暴露了161 个 MCP 工具,涵盖项目管理、场景控制、时间线操作、特效应用、关键帧等全流程。通过 Playwright 在底层注入,这个服务器可以无缝接入 OpenCut 的浏览器环境。

这意味着你可以用 Claude 或其他 AI 模型直接驱动视频编辑——让 Agent 帮你完成剪辑、添加特效、调整关键帧。

5. Headless 模式

无需 GUI 即可运行,适合自动化任务和批量渲染。这对于需要批量处理视频的工作流(比如内容农场、自动化营销视频生成)来说,是一个很实用的能力。

6. 内置脚本标签

编辑器内直接提供脚本编写界面,让技术型创作者可以在编辑环境中写脚本自动化操作。对于习惯用代码控制一切的用户来说,这是从”手工操作”到”可编程基础设施”的关键一步。

当前的技术栈

OpenCut 新版采用了一套相当现代化的技术栈:

运行时:Bun 1.2.18,作为 JavaScript 运行时、包管理器和测试运行器

前端框架:Next.js 16.1.3 + React 19.0.0

状态管理:Zustand 5.0.2

构建系统:Turbo 2.8.20 管理 monorepo 任务编排

语言:TypeScript 6.0.2 + Rust(核心逻辑)

WASM 集成opencut-wasm0.2.10,从 Rust 源码编译

样式:Tailwind CSS 4.2.1 + Radix UI 无头组件

认证:Better Auth 1.4.15

数据库:Drizzle ORM + PostgreSQL

项目采用TurboRepo monorepo结构:

apps/web/:主 Next.js 应用

apps/desktop/:GPUI 桌面应用(开发中)

rust/wasm/:WASM 绑定

rust/crates/:平台无关的 Rust 核心(GPU 合成器、特效等)

数据存储方面,OpenCut 坚持隐私优先的设计理念:项目元数据和设置存于 IndexedDB,时间线数据存于 IndexedDB,媒体资源存于 OPFS/IndexedDB,用户认证数据存于 PostgreSQL。视频文件始终留在用户设备上,不会上传到第三方服务器。

经典版(Classic)已经能做什么?

虽然新版还在重写中,但经典版已经是一个可用的视频编辑器了:

时间线编辑:拖拽排列视频、音频片段

多轨道支持:主轨、覆盖轨、音频轨分层编辑

实时预览:编辑即所见

特效系统:支持片段特效和时间线特效

蒙版与关键帧:复杂遮罩和动画控制

客户端处理:文件永远不离开浏览器

无水印、无订阅:完全免费

经典版的技术路线是TypeScript + Rust/WASM 核心渲染,特效和蒙版等像素级操作通过 WGPU 渲染管线处理。标准布局变换在 TypeScript 层解析,像素级特效(模糊、调色、蒙版)则卸载到 WGPU 渲染管线。

当前状态:能用的是什么?

如果你现在就想用 OpenCut 做实际剪辑,生产环境请使用 classic 版本

经典版访问:opencut.app

经典版代码:opencut-app/opencut-classic

新版预览:new.opencut.app

新版目前仍在架构设计阶段,尚未对外开放外部贡献。代码仓库已经是新版的 monorepo 结构,包含 web 端、API 服务和桌面端的脚手架。

如果想本地跑起来,需要先安装proto工具链管理器:

bash <(curl -fsSL https://moonrepo.dev/install/proto.sh)

然后从仓库根目录执行:

proto use          # 安装 .prototools 中锁定的工具版本bun install        # 安装依赖moon run web:dev   # 启动 Web 开发服务器,localhost:5173moon run api:dev   # 启动 API 服务,localhost:8787

不过要提醒的是:当前工具链门槛不低——proto、bun、moon 这些工具对不熟悉的开发者来说有一定学习成本。而且重写阶段功能和 UI 都可能不稳定,不建议在生产环境依赖新版

值得关注的生态进展

除了官方仓库,社区已经有了一些有趣的衍生项目:

ComfyUI-OpenCut:将 OpenCut 集成到 ComfyUI 工作流中,无需服务端处理即可在 ComfyUI 内完成专业视频编辑。渲染引擎使用 WebGL + Rust/WASM GPU 渲染器,时间线、特效和蒙版逻辑被拆分为独立的 Rust crate(opencut-wasm)。

OpenCut Controller:独立的 MCP 服务器,提供 161 个工具让 AI 模型直接控制 OpenCut。

这说明 OpenCut 的插件化和可编程方向已经有社区在跟进和验证。

一点看法

OpenCut 这次重写的野心不小。插件优先 + Rust 核心 + MCP + Headless这套组合,在开源视频编辑器里确实少见。尤其是 MCP 和 Headless 这两个方向,把视频编辑器从”手工操作的工具”往”可编程的基础设施”方向推了一把。

当然,重写意味着不确定性。API 稳定性、插件生态、跨平台落地的复杂度,这些都是需要时间验证的课题。但对于愿意关注和跟进的技术型用户来说,这个项目值得留意。

目前可以做的:用 classic 版做实际剪辑,关注新版的进展,等架构稳定后再考虑接入或开发插件。


项目主页:opencut.app

GitHub:github.com/OpenCut-app/OpenCut

新版预览:new.opencut.app

许可证:MIT