项目缘起
我拥有一台 DJI Action 4 运动相机,常在骑行过程中录制视频,因此希望以较为快捷的方式完成简单的视频剪辑工作。基本思路是借助 FFmpeg(理所当然的选择)对视频进行切分与拼接:首先需要确定各视频的入点与出点,随后完成拼接。若无需重新渲染,FFmpeg 可以直接以无损方式复制视频流(例如 LosslessCut 便是基于 FFmpeg 的图形界面剪辑工具)。
然而,手工编写命令行参数几乎不具可行性,而精确定位剪辑点同样颇为费时。
设计思路
受 ninve 项目的启发,我决定开发一款终端界面的视频编辑器:以 mpv 负责预览(并用于确定入点与出点),以 FFmpeg 负责导出。
当前进展
该项目距离完善仍有相当距离,目前仅实现了最小可用版本(MVP),代码以 Rust 编写。
使用(MVP)
cargo build # 或 cargo run
键位操作(vim 风格):
i/o— 标记入点 / 出点a— 将片段加入时间线(V1)x— 删除h/l— 移动播放头Space— mpv 预览e— 导出(裁剪 / 拼接,保留音频)t— 转场选择u、Ctrl+r— 撤销 / 重做
基于 Rust + ratatui 构建;mpv 通过 Unix socket JSON IPC 提供预览。设计文档:SPEC.md、PLAN.md、CHANGELOG.md(Go 双分支实验保留在 go 分支)。
GitHub:hiraethecho/cutui