AIEraDev/Clypra

GitHub: AIEraDev/Clypra

一款基于 Tauri、React 和 Rust 构建的跨平台免费开源视频编辑器,提供专业级核心剪辑能力和硬件加速性能。

Stars: 2720 | Forks: 282

# Clypra
![Clypra 展示横幅](https://static.pigsec.cn/wp-content/uploads/repos/cas/cd/cd655a233841dd6fd84d8b7fc0d15c439f0acaef511956e37e8060a60c0acbe5.jpg) **专业视频剪辑——永久免费且开源。** 一款基于 Tauri v2、React 19 和 Rust 构建的现代视频编辑器。支持硬件加速处理、跨平台(桌面端 + 移动端),并提供可选的 AI 驱动功能。 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md) [![GitHub issues](https://img.shields.io/github/issues/AIEraDev/clypra)](https://github.com/AIEraDev/clypra/issues) [![GitHub stars](https://img.shields.io/github/stars/AIEraDev/clypra)](https://github.com/AIEraDev/clypra/stargazers) [功能](#features) • [架构](#architecture) • [安装说明](#installation) • [开发](#development) • [贡献](#contributing) • [Open Core](#open-core-model)
## 概述 Clypra 是一款**免费、开源的视频编辑器**(MIT License),具备专业级功能。核心编辑器、特效引擎以及所有 UI 组件永久免费——无水印、无功能限制、无需订阅。 想要 AI 超能力?可选的 [Pro 功能](#pro-features-ai-layer) 提供自然语言编辑、自动字幕、智能重构图等更多功能。 ### 目标平台 - **桌面端**:macOS (Apple Silicon & Intel)、Windows、Linux - **移动端**:iOS(通过 Capacitor)、Android(通过 Capacitor) ## 功能 ### 核心剪辑 - **多格式媒体导入**:MP4、MOV、WebM、MKV、M4V、AVI(视频);MP3、WAV、AAC(音频);JPG、PNG、WebP(图像) - **逐帧精确修剪**:具备毫秒级精度的精准时间轴控制 - **多轨时间轴**:带标尺和视觉反馈的专业时间轴界面 - **撤销/重做系统**:采用命令模式架构的 100 级历史记录栈 ### 专业音频 - **高保真波形**:峰值 + RMS 可视化与镜像显示([技术细节](WAVEFORM_RENDERING.md)) - **音频同步**:在播放和导出期间实现帧精确的音视频同步 - **音量控制**:支持实时预览的逐片段音量调整 ### 视觉特性 - **胶片条缩略图**:硬件加速的缩略图生成,具备自适应密度 - **文本叠加**:用于标题和字幕的自定义字体、样式和动画 - **预览画布**:带变换控制的实时合成 ### 性能 - **硬件加速**:通过 FFmpeg 进行原生 GPU 解码 (VideoToolbox/D3D11VA/VAAPI) - **解码器预热**:通过预测性解码器初始化实现低于 10ms 的首帧延迟 - **并行处理**:使用 Web Worker 池生成缩略图(渲染速度提升 2-4 倍) - **高效缓存**:带有 20 个并发解码器的基于 LRU 的解码器池 - **实时监控**:跨视频流水线跟踪 30 多项性能指标 ### 项目管理 - **持久化项目**:基于 SQLite 的项目存储,支持自动保存 - **媒体库**:带有元数据缓存的集中式资产管理 - **导出流水线**:基于 FFmpeg 的导出,支持编解码器选择 (H.264, H.265, ProRes) ## 架构 Clypra 的架构定位为**原生桌面和移动应用**,在前端 UI 和后端处理之间实现了清晰的分离。 ### 技术栈 **前端** - React 19 结合 TypeScript(严格模式) - Zustand 用于状态管理(按领域分离的 store) - Vite 用于构建工具和热模块替换 **后端** - Rust 结合 Tauri v2 用于原生平台集成 - FFmpeg(通过 ffmpeg-next)用于视频/音频处理 - 硬件加速:VideoToolbox (macOS)、D3D11VA (Windows)、VAAPI (Linux) - DashMap 用于并发数据结构 **移动端** - Capacitor 用于 iOS/Android 部署 - 原生桥接用于平台特定功能 ### 设计原则 1. **原生性能**:Rust FFmpeg 后端消除了浏览器的限制 2. **桌面优先架构**:针对桌面级工作流进行优化,可移植到移动端 3. **硬件加速**:通过原生 FFmpeg 硬件解码器直接访问 GPU 4. **高效 IPC**:对 Tauri 命令进行了优化,以最小化序列化开销 5. **零浏览器依赖**:不依赖 WebCodecs、MSE 或特定于 Web 的 API ### 视频流水线架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ Frontend (React/TS) │ │ ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐ │ │ │ Timeline UI │ │ Preview Canvas│ │ Filmstrip Cache │ │ │ └──────┬───────┘ └──────┬────────┘ └────────┬────────┘ │ │ │ │ │ │ │ └─────────────────┴─────────────────────┘ │ │ │ │ │ Tauri IPC Layer │ │ │ │ └───────────────────────────┼─────────────────────────────────┘ │ ┌───────────────────────────┼─────────────────────────────────┐ │ Backend (Rust/FFmpeg) │ │ ┌─────────────────┴──────────────────┐ │ │ │ Decoder Pool (LRU, size=20) │ │ │ │ ┌──────────────────────────────┐ │ │ │ │ │ Hardware Decoder Context │ │ │ │ │ │ (VideoToolbox/D3D11/VAAPI) │ │ │ │ │ └──────────────────────────────┘ │ │ │ └─────────────┬────────────────────┬─┘ │ │ │ │ │ │ ┌─────────────▼────────┐ ┌────────▼──────────┐ │ │ │ Frame Decoder │ │ Export Pipeline │ │ │ │ (seek + decode) │ │ (encode + mux) │ │ │ └──────────────────────┘ └───────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ### 关键优化 **解码器预热** - 在项目加载时初始化解码器(消除 50-100ms 的冷启动时间) - 并发预热(一次 4 个解码器) - 首帧延迟:5-10ms(无预热时为 50-100ms) **缩略图生成** - Web Worker 池(CPU 核心数 - 1,最多 4 个) - 通过 Transferable 实现零拷贝 ImageBitmap 传输 - 滚动期间主线程 CPU 占用减少 60% **批处理** - 基于图集的缩略图存储(减少 90% 的 IPC 开销) - 基于通道交付的流式解码 - 并发帧解码(同时处理多达 20 个视频) **顺序解码优化** - 智能寻址:在 GOP 边界内进行正向解码(避免冗余寻址) - 顺序命中跟踪:检测擦洗模式 - 在时间轴导航期间减少 70% 的寻址操作 有关详细的性能指标和优化路线图,请参阅 [PERFORMANCE-DESKTOP-ROADMAP.md](./PERFORMANCE-DESKTOP-ROADMAP.md)。 ## 安装说明 ### 二进制发布版 所有支持的平台均提供预构建的二进制文件。可从[最新发布版](https://github.com/AIEraDev/Clypra/releases/latest)下载。 #### macOS **推荐:Homebrew 安装** ``` brew install AIEraDev/tap/clypra ``` 此方法会自动处理 Gatekeeper 授权和更新。 **替代方案:直接下载** 1. 从发布版中下载 `Clypra-universal.dmg` 2. 打开 DMG 文件并将 Clypra 拖至 `/Applications` 3. 右键点击应用图标并选择“打开”,以授权首次启动 支持:macOS 11+(Big Sur 及更高版本),同时支持 Apple Silicon 和 Intel #### Windows 1. 从发布版中下载 `Clypra-x64.msi` 2. 运行安装程序 3. 如果 Windows SmartScreen 阻止执行,请点击“更多信息”→“仍要运行” 支持:Windows 10(版本 1809+)及 Windows 11 #### Linux 1. 从发布版中下载 `Clypra-x86_64.AppImage` 2. 赋予执行权限:`chmod +x Clypra-x86_64.AppImage` 3. 运行:`./Clypra-x86_64.AppImage` 支持:Ubuntu 20.04+、Fedora 35+、Debian 11+ 及其衍生版本 ## 开发 ### 前置条件 **必需** - Node.js 18+ 配合 npm - Rust 1.70+(通过 [rustup](https://rustup.rs/) 安装) - FFmpeg 6.0+ 及其开发库 **特定平台** - **macOS**:Xcode Command Line Tools (`xcode-select --install`) - **Windows**:Visual Studio 2019+ 及 C++ 桌面开发工具 - **Linux**:构建基础工具、webkit2gtk、libayatana-appindicator ### FFmpeg 安装 **macOS** ``` brew install ffmpeg ``` **Ubuntu/Debian** ``` sudo apt install ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev ``` **Windows (Chocolatey)** ``` choco install ffmpeg ``` **Windows(手动安装)** 1. 从 [ffmpeg.org/download.html](https://ffmpeg.org/download.html) 下载 2. 解压至 `C:\ffmpeg` 3. 将 `C:\ffmpeg\bin` 添加到系统 PATH ### 从源码构建 ``` # Clone repository git clone https://github.com/AIEraDev/clypra.git cd clypra # Install dependencies npm install # Configure environment cp .env.example .env # 编辑 .env 并添加你的 Clypra API key(text effects 必需) # 带 hot reload 的 Development mode npm run tauri dev # Production build npm run build npm run tauri build ``` ### 开发架构 代码库按领域组织,实现了清晰的关注点分离: ``` src/ ├── components/ # React components │ ├── editor/ # Core editor UI (Timeline, Preview, Filmstrip) │ ├── screens/ # Full-screen views (Launch, Settings) │ └── ui/ # Reusable UI primitives (Modals, Icons, Buttons) ├── store/ # Zustand state stores (by domain) │ ├── timelineStore.ts # Timeline structure (tracks, clips, gaps) │ ├── playbackStore.ts # Playback state and AV sync │ ├── projectStore.ts # Project metadata and media assets │ └── ... # uiStore, settingsStore, historyStore ├── core/ # Core engine logic │ ├── runtime/ # ProjectSession and lifecycle management │ ├── scheduler/ # Frame scheduler for preview rendering │ ├── resources/ # PreviewMediaPool (video/audio elements) │ ├── render/ # Canvas rasterization and compositing │ └── timeline/ # Timeline calculations and utilities ├── lib/ # Shared utilities │ ├── platform/ # Tauri IPC wrappers │ ├── monitoring/ # Performance monitoring │ ├── workers/ # Web worker pool │ └── ... # Audio, video, filmstrip utilities ├── hooks/ # Custom React hooks ├── types/ # TypeScript type definitions └── App.tsx # Application entry point src-tauri/ ├── src/ │ ├── commands/ # Tauri command handlers │ │ ├── thumbnail.rs # Video decode commands │ │ ├── export.rs # Export pipeline │ │ └── ... │ ├── thumbnail_engine/# FFmpeg decoder pool │ │ ├── decoder.rs # Hardware-accelerated decoder │ │ ├── cache.rs # LRU caching │ │ └── ... │ └── lib.rs # Tauri application setup └── Cargo.toml # Rust dependencies ``` ### API 配置 Clypra 使用 Clypra API 提供文本特效和模板。要启用这些功能: 1. 复制 `.env.example` 到 `.env`: cp .env.example .env 2. 将你的 API 密钥添加到 `.env`: VITE_CLYPRA_API_KEY=your_api_key_here 3. **重要提示**:切勿将 `.env` 提交到版本控制(已在 `.gitignore` 中忽略) 该 API 提供: - 具有可自定义样式的文本特效库 - 带有 WebM 视频预览的基于 Canvas 的文本模板 - Google Fonts 集成 ### 测试 ``` # 运行所有测试 npm test # 运行 Rust 测试 cd src-tauri && cargo test # 运行特定 test suite npm test -- src/lib/__tests__/timelineUtils.test.ts # Run with coverage npm test -- --coverage ``` ### 代码质量 ``` # TypeScript type checking npx tsc --noEmit # Rust linting cd src-tauri && cargo clippy -- -D warnings # Format code npm run format cd src-tauri && cargo fmt ``` ## 项目结构 ### 状态管理架构 Clypra 使用 Zustand 和按领域分离的 store,以保持清晰的所有权边界: - **timelineStore**:时间轴结构(轨道、片段、转场、间隙) - **playbackStore**:播放状态、播放头位置、音视频同步 - **projectStore**:项目元数据、媒体资产、持久化 - **historyStore**:撤销/重做命令栈 - **uiStore**:UI 状态(模态框、选择、拖拽状态) - **settingsStore**:用户偏好和应用设置 每个 store 拥有其领域并公开操作。跨 store 通信通过显式调用进行,而非共享可变状态。 ### 视频处理流水线 1. **导入**:FFmpeg 探测提取元数据(时长、尺寸、编解码器) 2. **缩略图**:Rust 解码器生成胶片条图块(L0-L3 密度等级) 3. **预览**:HTMLVideoElement(实时播放)或 Canvas(合成帧) 4. **导出**:帧调度器 → RGBA 帧 → FFmpeg 编码器 → MP4/MOV ### 性能监控 应用包含全面的性能监控: - **解码器指标**:缓存命中、驱逐、解码延迟 - **导出指标**:帧写入时间、fps、总时长 - **渲染指标**:图层渲染时间、Canvas 池效率 - **缓存指标**:胶片条缓存命中率、内存使用情况 在开发环境中,可通过 `window.__performanceMonitor` 访问指标。 ## 贡献 我们欢迎您的贡献!请查阅 [CONTRIBUTING.md](./CONTRIBUTING.md) 了解指南。 ### 开发工作流 1. Fork 本仓库 2. 创建功能分支 (`git checkout -b feature/amazing-feature`) 3. 进行更改并附带测试 4. 确保所有测试通过 (`npm test && cd src-tauri && cargo test`) 5. 使用约定式提交进行提交 (`feat:`、`fix:`、`docs:` 等) 6. 推送到你的 Fork 并开启 Pull Request ### 代码风格 - **TypeScript**:启用严格模式,ESLint + Prettier - **Rust**:`cargo fmt` + `cargo clippy`(无警告) - **提交**:约定式提交格式 - **文档**:公共 API 使用 JSDoc,复杂逻辑使用内联注释 ## License 本项目基于 MIT License 授权 - 详见 [LICENSE](./LICENSE) 文件了解详情。 ### FFmpeg 许可 Clypra 使用 FFmpeg 进行视频处理。FFmpeg 的授权基于: - LGPL 2.1+(默认构建) - GPL 2+(如果使用仅限 GPL 的组件构建) 二进制发布版包含基于 LGPL 协议的 FFmpeg。如果您使用 GPL 组件构建,请确保符合 GPL 规定。 ## 致谢 - **Tauri**:跨平台原生应用框架 - **FFmpeg**:视频/音频处理引擎 - **React**:UI 框架 - **shadcn/ui**:组件库基础 ## 支持 - **问题**:[GitHub Issues](https://github.com/AIEraDev/clypra/issues) - **讨论**:[GitHub Discussions](https://github.com/AIEraDev/clypra/discussions) - **文档**:[项目 Wiki](https://github.com/AIEraDev/clypra/wiki) ## Open Core 模式 Clypra 采用 **Open Core** 商业模式: ### 免费且开源 (MIT License) ✅ **核心视频编辑器** - 多轨时间轴、帧精确编辑、硬件加速处理 ✅ **特效引擎** - 专业视频特效、转场、滤镜(通过 `@clypra-studio/engine`) ✅ **音频工具** - 波形可视化、音量控制、音视频同步 ✅ **导出流水线** - 通过 FFmpeg 进行.264, H.265, ProRes 导出 ✅ **文本叠加** - 自定义字体、样式和动画 ✅ **所有 UI 组件** - 完整源代码,无专有依赖 **无水印。无功能限制。无需订阅。永久。** ### Pro 功能 (AI 层) 🎯 **自然语言编辑** - “移除所有停顿”、“添加字幕”、“让这部分变短” 🎯 **自动字幕** - 带有说话人检测和可自定义样式的转录 🎯 **智能重构图** - 针对 Instagram Stories、TikTok、YouTube Shorts 的自动裁剪 🎯 **场景检测** - AI 驱动的场景分割与 B-roll 建议 🎯 **音频增强** - 降噪、EQ、压缩 🎯 **声音克隆** - 跨片段匹配旁白声音(即将推出) 🎯 **多语言配音** - 带有唇形同步的翻译与配音(即将推出) **定价**:免费版(每月 100 次 AI 调用) • Pro($10/月,无限制) • 企业版(定制) [了解更多关于 Pro 功能的信息 →](https://clypra.com/pricing) ### 为什么选择 Open Core? 我们坚信专业视频剪辑应该对所有人免费且易于获取。开源确保了: - **透明度** - 您可以审计每一行代码 - **所有权** - 您的剪辑、您的数据、您的工作流 - **社区** - 来自全球创作者的贡献 - **长久性** - 该编辑器不会被关闭或置于付费墙后 Pro AI 功能为开源核心的全职开发提供资金支持。实现双赢。 ## 路线图 有关即将推出的性能改进,请参阅 [PERFORMANCE-DESKTOP-ROADMAP.md](./PERFORMANCE-DESKTOP-ROADMAP.md)。 计划中的功能: - 移动端应用发布(通过 Capacitor 支持 iOS/Android) - 高级调色 - 多机位剪辑 - 扩展插件系统 - GPU 加速特效渲染 **Pro 路线图**(AI 功能): - 自然语言指令(2026 年第三季度) - 自动字幕(2026 年第三季度) - 智能重构图(2026 年第四季度) - 声音克隆(2027 年第一季度) - 多语言配音(2027 年第二季度)
标签:React, Rust, Syscalls, Tauri, 人工智能, 可视化界面, 用户模式Hook绕过, 网络流量审计, 自动化攻击, 视频编辑器