这个项目能做什么
FreeCut 是一款采用 MIT 许可、基于浏览器的多轨视频编辑器。它无需安装,也不会上传媒体:项目和媒体均保留在本地,而编辑、预览、分析、转录、AI 生成和导出则通过 WebGPU、WebCodecs、Web Workers、OPFS 和文件系统访问 API 在浏览器中运行。项目、关联的媒体元数据、缩略图、波形、生成的 AI 资产、转录文本、场景剪辑和缓存都会以纯文件形式写入磁盘上所选的工作区文件夹中。
编辑和时间线
- 支持视频、音频、文本、图像、形状、蒙版、Lottie 和复合片段项的多轨时间线。
- 每个项目可有多个时间线,作为带标签页的序列,并通过复合片段统一。
- 链接的音频/视频编辑,支持分割、连接、波纹、滚动、滑动、滑移和变速拉伸工具。
- 以剪辑为中心的转场,支持实时调整大小、对齐、源时间锚定和预览叠加。
- 轨道静音/可见性/锁定控制、链接同步徽章、轨道推拉和关闭间隙工作流。
- 胶片条缩略图、立体声波形、吸附参考线、标记、时间码和撤销/重做。
- 源监视器,支持标记入点/出点、补丁目标和插入/覆盖编辑。
- 项目模板、根据首个媒体自动匹配画布/帧率、可配置键盘快捷键。
预览和播放
- 实时预览,支持变换、裁剪、边角固定、蒙版和组操作手柄。
- 通过自定义时钟和合成运行时实现帧精确播放。
- 快速擦洗叠加、解码器预热、自适应预览质量和源预热。
- 用于波纹、滚动、滑移和滑动操作的双联和四联编辑面板。
- GPU 色彩示波器:波形、矢量示波器和直方图。
- 独立的项目主总线和监视器/设备音量。
音频
- 片段音量、音频淡入淡出、轨道推子、主总线推子和立体声 LED 电平表。
- 每个片段的音高移位(以半音/音分为单位),支持 SoundTouch 预览播放。
- 片段均衡器和轨道均衡器阶段,包括紧凑的六段浮动均衡器面板。
- 音高、均衡器、淡入淡出、音量和转场音频路径在预览和导出中均保留。
效果、蒙版和合成
- 以 WebGPU 为先的视觉效果和合成路径,在可行处提供回退方案。
- 模糊:高斯、方框、运动、径向、缩放。
- 颜色:亮度、对比度、曝光、色相偏移、饱和度、自然饱和度、色温/色调、色阶、曲线、色轮、渐变映射、LUT(.cube)、灰度、棕褐色、反相。
- 扭曲:像素化、RGB 分离、扭曲、波浪、膨胀/收缩、万花筒、镜像、凹槽玻璃、波纹玻璃、玻璃马赛克、德罗斯特效应。
- 风格化:暗角、胶片颗粒、锐化、色调分离、发光、边缘检测、扫描线、半色调、ASCII 艺术、颜色故障、块状故障、VHS、CRT、墨迹、像素排序。
- 键控:色度键,支持容差、柔边和溢出抑制。
- 25 种混合模式,包括正片叠底、滤色、叠加、柔光、差值、色相、饱和度、颜色和明度。
- 片段蒙版和钢笔路径,支持可关键帧的几何变换。
- 颜色选择器,支持十六进制和 Alpha 输入,以及带放大镜的应用内取色器。
转场
- 淡入淡出、擦除、滑动、3D 翻转、时钟擦除和虹膜转场,支持方向变体。
- 溶解、闪光、故障、漏光、像素化、色差和径向模糊。
- 可调整时长、对齐、源锚定,并为非 WebGPU 路径提供 Canvas 2D 回退。
关键帧动画
- 贝塞尔曲线图编辑器、动画摄影表、分割视图和多曲线叠加。
- 缓动预设(线性、缓入/缓出、三次贝塞尔、弹簧),带实时预览编辑器和保存的自定义预设。
- 程序化运动修改器(漂移、摇摆、呼吸、旋转、抖动)在渲染时评估,支持一键烘焙为关键帧。
- 运动文本:逐字符、逐词和逐行文本动画。
- 自动关键帧模式、切线镜像、属性折叠面板和框选。
- 动画变换、裁剪、蒙版、文本、效果和颜色属性。
媒体和导入
- 导入视频、音频、图像、GIF、SVG、Lottie 动画和生成的资产,无需复制原始文件。
- 编辑导入的 Lottie 动画(.json 和 .lottie):重新映射颜色和主题、编辑文本、调整值槽并实时预览。
- 支持 Apple ProRes 解码,用于导入、预览和缩略图,包括浏览器无法原生解码的变体。
- 代理生成、缩略图提取、波形缓存和媒体重新链接。
本地 AI 和分析
- 在浏览器中设备端运行;不会上传任何内容。
- 使用 Parakeet 引擎(Whisper 回退)进行设备端转录,并生成字幕文本片段。
- 使用本地视觉语言模型进行 AI 字幕生成,支持可配置的采样节奏。
- 场景检测,采用快速直方图或帧精确的自适应内容分析,并可选择模型验证。
- 场景浏览器,用于搜索带字幕的媒体和重用检测到的时刻。
- 本地 Kokoro 文本转语音配音。
- 本地 MusicGen 音乐生成,支持预设、进度和取消。
- 设置中的本地模型缓存和卸载控制。
项目和存储
- 通过文件系统访问 API 实现工作区文件夹持久化。
- 多工作区切换器,支持已知工作区管理。
- 项目以纯文件形式存储在磁盘上,支持旧版浏览器存储迁移。
- 项目软删除、恢复、清空回收站和永久删除流程。
- 项目 ZIP 捆绑包导出/导入,使用 Zod 验证模式。
- 自动保存、项目缩略图、工作区缓存镜像和孤立文件清理。
导出
- 通过 WebCodecs 和基于 Worker 的渲染路径在浏览器内渲染。
- 可导出任何序列,而不仅仅是主时间线。
- 视频容器:MP4、WebM、MOV、MKV。
- 视频编解码器:H.264、H.265、VP8、VP9、AV1(在浏览器提供编码器的情况下)。
- 音频导出格式:MP3、AAC、WAV/PCM。
- 字幕:关闭、烧录、侧车文件或嵌入式软轨道(取决于容器)。
- 从低到超高质量预设,带运行时能力检查和回退。
入门指南
前置要求是 Node.js 22+(推荐)、npm 11+ 和现代 Chromium 浏览器。克隆仓库,运行 npm install 和 npm run dev,然后在 Chrome、Edge、Brave 或 Arc 中打开 http://localhost:5173。工作流程是:选择工作区文件夹、创建项目、通过将文件拖入媒体库导入媒体、将片段拖到时间线并编辑,然后直接从浏览器导出。
浏览器支持
推荐使用 Chrome 或 Edge 113+。FreeCut 依赖 WebGPU、WebCodecs、OPFS 和文件系统访问 API,因此完整工作流需要现代 Chromium 浏览器。Brave 可能禁用文件系统访问 API;可通过 brave://flags/#file-system-access-api 启用。
技术栈
React 19 和 TypeScript,Vite+ 用于开发/构建/代码检查/格式化/检查/测试,Vite 搭配 @vitejs/plugin-react,WebGPU 用于效果、合成、转场、蒙版、示波器和 AI 加速,WebCodecs 用于预览和导出管线,文件系统访问 API 和 OPFS 用于持久化和缓存,Zustand 搭配 Zundo 用于状态和撤销/重做,TanStack Router 用于基于文件的类型安全路由,Tailwind CSS 4 搭配 Radix UI 和 shadcn 风格组件,Mediabunny 用于媒体解码、元数据和音频编码,Transformers.js 用于本地浏览器 AI 模型,Kokoro.js 用于 WebGPU 文本转语音,以及 Web Workers 和 AudioWorklets 用于主线程外的媒体处理。
开发
大多数命令都是基于 vite-plus (vp) 的 npm 脚本:npm run dev(端口 5173)、build、preview、perf、lint(Oxlint)、format(Oxfmt)、test:run、verify(完整门禁,包括架构和死代码检查、Node 无头契约、构建后 Chrome 回归、公共编辑操作和生成的媒体/音频渲染)、headless:test 和 routes。真实 GPU 效果仍是明确的运维/发布门禁,因为托管的 PR CI 不提供可移植的 WebGPU 适配器。src/ 树组织为 features/(面向用户的 UI 模块)、runtime/(播放和渲染引擎)、infrastructure/(用于 GPU、分析、音频、浏览器、存储、缩略图的平台适配器)、shared/(框架无关的基元和跨功能状态),以及 app/、components/、config/、routes/ 和 types/。
贡献和许可
当前优先级是修复错误,然后是实时编辑器、播放和导出的性能改进,最后是经过讨论的新功能。错误可通过 GitHub 问题报告,需提供可复现步骤、浏览器版本和截图或录制;性能报告应包括工作流、源媒体详情、项目大小以及速度开始变慢的时间点。功能想法在实现前通过 Discord 或 GitHub Discussions 讨论。采用 MIT 许可。
评论
0 评分人数达到10人后显示
登录后参与讨论。