用 TRAE 开发桌面视频剪辑工具:我的经验分享

用 TRAE 开发桌面视频剪辑工具:我的经验分享

大家好,我是 zcatclaw。最近用 TRAE 做了个桌面视频工具 Clip Up,给大家聊聊开发过程和一些体会。

Clip Up 是用来批量处理视频色彩还原的工具。起因是 Pocket 3 拍的 D-log 视频,调色太麻烦了,大疆官方的 app 居然没有批量处理色彩还原的功能,只能一个个来。作为一个程序员,这哪忍得了,那就自己写一个呗。

如果你也有批量处理视频的需求,可以参考一下。


技术栈

  • Electron + React + TypeScript

  • Vite + Electron Forge

  • TailwindCSS + shadcn/ui + Radix UI

  • FFmpeg(ffmpeg-static + ffprobe-static)

  • Lucide React


一、Electron + React + Vite 怎么搭

为什么选 Electron?

Tauri 也考虑过,但当时不太熟,怕踩坑。最后还是选了 Electron,好歹之前用过。Vite 就是为了 HMR 快,开发体验比 webpack 好太多。

另外提一下,FFmpeg 是独立的命令行工具,跟 Node.js 没什么关系。这里用的 ffmpeg-static 只是把 FFmpeg 二进制文件打包进项目里,方便分发。

初始化

Electron Forge 的 Vite 模板够用:


npm create electron-app@latest clip-up -- --template=vite-typescript

然后装 React 那套就行。

进程通信

这是 Electron 最容易出错的地方。我的做法是用 contextBridge 暴露 API:


// preload.ts

contextBridge.exposeInMainWorld('electronAPI', {

selectFiles: () => ipcRenderer.invoke('select-files'),

processVideo: (input: string, output: string, options: Options) =>

ipcRenderer.invoke('process-video', input, output, options)

})

比直接开 nodeIntegration 安全,也好维护。


二、FFmpeg 批量处理

色彩还原原理

D-log 转 Rec.709 其实就是色彩空间的转换。用 FFmpeg 的 zscale 滤镜:

  • 简单模式:直接用 gamma 参数转

  • 高级模式:用 zscale 走线性中间转换,色彩更准

另外还支持 LUT 文件,可以自定义颜色映射。

批量处理实现

核心是 batchConvert 方法,支持并发控制:


async batchConvert(

files: BatchFile[],

concurrency = 2, // 默认并发 2 个

options: BatchOptions = {},

): Promise<BatchResult[]>

实现思路:

  1. Promise.all 控制并发数

  2. 同时跑 concurrency 个转换任务

  3. 每个任务完成后自动启动下一个

  4. 通过回调实时更新 onProgress(整体进度)和 onFileProgress(单个文件进度)


// 进度回调示例

options.onProgress = (index, total, result) => {

console.log(`完成 ${index + 1}/${total}`)

}

options.onFileProgress = (index, total, percent) => {

console.log(`文件 ${index + 1}: ${percent.toFixed(1)}%`)

}

性能

  • 默认并发 2 个 FFmpeg 进程,不至于太卡机器

  • 用流式处理获取 FFmpeg 输出,实时解析进度

  • 进程用完就关,不复用


三、UI 这块怎么做的

选 shadcn/ui 的原因

主要看它代码在自己项目里,想改就改。不像有些 UI 库,引进来一堆黑盒组件,改不动。

组件结构

Clip Up 就三块:左边文件列表加拖拽,中间预览,右侧参数设置。用 React Router 做了路由,不同步骤不同页面。

TailwindCSS 技巧

  • cn() 合并类名(配合 class-variance-authority)

  • dark: 写深色模式

  • md:lg: 搞响应式


写在最后

第一次用 AI 编程工具做完整的桌面应用,整体挺意外的。TRAE 帮我写了大部分重复代码:组件模板、FFmpeg 命令拼装、配置改动这些。但核心逻辑和架构还是得自己来。

如果你也想做桌面应用,用 TRAE 先跑一遍确实能省很多功夫。很多基础问题它都能快速解决。

项目在 GitHub:Zcating/clip-up-project,欢迎 star!


1 个赞