
OpenReel Video 浏览器视频编辑器13万行代码背后的 Monorepo 架构深度剖析【免费下载链接】openreel-videoOpenReel Video - Professional browser-based video editor. Open source CapCut alternative. 100% browser-based, no installation, no cloud uploads, no watermarks.项目地址: https://gitcode.com/GitHub_Trending/op/openreel-videoOpenReel Video 是一款专业的浏览器视频编辑器开源的 CapCut 替代品100% 纯前端运行视频不上传云端、无需安装、无水印。这个项目用约13 万行 TypeScript 代码搭建了一整套多轨道时间线、GPU 实时预览、调色、音频混音和 4K 导出能力。今天我们就来深度剖析它 Monorepo 的项目结构看看大型浏览器端应用是如何组织代码的 ️ 项目速览先看核心信息项目说明定位浏览器端专业视频编辑器CapCut 的开源替代规模13 万 行代码MIT 协议技术栈React 18 TypeScript Zustand WebGPU WebCodecs管理工具pnpm WorkspacesMonorepo隐私100% 客户端处理视频永不离开你的设备项目根目录的 package.json 定义了所有顶层脚本pnpm dev启动 Web 端开发服务器pnpm build:wasm先编译 C 创作引擎的 WASM 模块再打包pnpm typecheck/pnpm test则在整个仓库递归执行。这套脚本本身就是理解 Monorepo 的入口。️ Monorepo 总览apps packages 双区布局工作区配置写在 pnpm-workspace.yaml 中只声明了两类目录openreel/ ├── apps/ # 可运行的前端应用 │ ├── web/ # 主编辑器React界面入口 │ ├── desktop/ # Electron 桌面壳 │ ├── studio/ # Motion Scene 动态场景创作器 │ └── image/ # 图片编辑器 ├── packages/ # 共享能力包 │ ├── core/ # 音视频/图形/导出/存储核心引擎最大的一块 │ ├── ui/ # 跨应用复用的 UI 组件 │ ├── agent/ # AI Agent 运行时 │ ├── creation-core/ # C 创作引擎CMake 构建 │ ├── creation-bindings/ # WASM Native 双端绑定 │ ├── creation-schema/ # 创作数据模型 │ ├── creation-agent/ # 创作 AI 工具集 │ ├── fxpkg/ # 特效包FX Package编译器 │ ├── image-core/ # 图片编辑核心 │ └── agent-runner/ # Agent 执行器 ├── patches/ # 对 FFmpeg WASM 的补丁 ├── scripts/ # 构建/审查辅助脚本 └── infra/ # 部署基础设施核心思想一句话apps 负责界面与体验packages 负责引擎与能力界面永远薄引擎永远可复用。️ apps/四个应用各占一席apps/web/—— 主战场浏览器版编辑器。目录划分非常经典apps/web/src/components/editor/时间线、预览播放器、检查器Inspector等编辑器面板apps/web/src/stores/基于 Zustand 的状态管理如project-store、timeline-store、engine-storeapps/web/src/services/自动保存、快捷键、屏幕录制等横切服务apps/web/src/bridges/负责协调底层多个引擎视频、音频、图形的桥梁层。apps/desktop/—— 用 Electron 给 Web 编辑器套上桌面壳附带 apps/desktop/electron-builder.yml 打包配置让浏览器软件能像本地软件一样分发 apps/studio/—— Motion Scene 动态场景创作器走独立路由和深色 UI还内置了 Playwright 的 E2E 测试apps/studio/e2e/。apps/image/—— 图片编辑器与 packages/image-core/ 配合说明编辑核心和界面分离的思路在图片这条产品线也被完整复刻了一遍。⚙️ packages/core驱动一切的核心引擎室packages/core/ 是整个仓库最重的包按引擎维度拆分每个引擎彼此独立、互不依赖——这是它最大的架构特点视频引擎packages/core/src/video/gpu-compositor.tsWebGPU 合成器、canvas2d-fallback-renderer.tsCanvas2D 降级渲染器、color-grading-engine.ts调色、chroma-key-engine.ts抠像、keyframe-engine.ts关键帧、frame-cache.ts帧缓存、motion-tracking-engine.ts运动追踪……几乎一帧的诞生路径都能在这里找到。音频引擎packages/core/src/audio/realtime-audio-graph.ts实时混音图、beat-detection-engine.ts节拍检测、noise-reduction.ts降噪、audio-effects-engine.ts效果链。导出引擎packages/core/src/export/export-engine.ts负责编排webcodecs-backend.ts调用硬件编码还有专门的export-worker.ts在后台线程导出不卡界面。存储引擎packages/core/src/storage/storage-engine.tsproject-serializer.ts把项目序列化后存进 IndexedDB实现关浏览器也不丢稿的自动保存。这种每类能力一个引擎目录的切法让 6 万行核心代码依然好导航想修预览问题直奔video/导出卡顿去看export/。 AI 与扩展一条完整的创作产品线除了传统编辑器仓库里还藏着一条很特别的线——CreationAI 创作packages/creation-core/用 C 编写的创作引擎通过 packages/creation-core/CMakeLists.txt 构建packages/creation-bindings/同一份引擎同时提供 WASMwasm/creation_core.wat和 Nativenative/addon.c两种绑定网页和桌面共用一份底层逻辑packages/creation-schema/数据模型与校验packages/agent/ 与 packages/creation-agent/LLM Agent 的运行时和工具集system-prompt.ts、registry.ts、llm.ts等文件展示了让 AI 直接操作视频工程的完整链路。另外 packages/fxpkg/ 实现了一套特效包格式compiler/、manifest.ts、validator.ts相当于为社区特效预留了插件生态的地基 如何本地运行三条命令跑起来依赖 pnpm ≥ 8 与 Node ≥ 18流程非常标准详见 README.md 与 CONTRIBUTING.mdgit clone https://gitcode.com/GitHub_Trending/op/openreel-video cd openreel-video pnpm install pnpm dev # 打开 http://localhost:5173 即可开始编辑想体验完整构建链路可以跑pnpm build它会先编译 WASM 再打包前端——这正是 Monorepo 多构建目标统一入口的价值所在。 四条值得学习的设计原则引擎分离视频、音频、图形、导出引擎互相独立bridges/层做协调单测可以只测一个引擎渐进增强WebGPU 不可用时自动降级到 Canvas2Dcanvas2d-fallback-renderer.ts保证 Chrome/Edge/Firefox/Safari 全都能用Action 式编辑每一次剪辑都是可撤销的 Action配合 Zustand 不可变状态实现无限撤销/重做核心与界面彻底解耦packages/不关心长什么样apps/不关心帧怎么解码web、desktop、studio、image 四个应用共享同一套引擎。✅ 总结OpenReel Video 用一份清晰的apps packages布局把 13 万行代码切成了4 个应用 10 个能力包再靠引擎化拆分和渐进增强策略让浏览器里的专业剪辑软件这件事既跑得动又好维护。无论你是前端新手想学大型项目怎么组织还是想研究 WebGPU 视频编辑的实战代码这份结构图都值得收藏 【免费下载链接】openreel-videoOpenReel Video - Professional browser-based video editor. Open source CapCut alternative. 100% browser-based, no installation, no cloud uploads, no watermarks.项目地址: https://gitcode.com/GitHub_Trending/op/openreel-video创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考