
今天拆的是 FilmCraft:一个用纯 Rust 从零写起、把剪片上每个动作都做成命令的桌面剪辑器;文章给全它在链条上的位置、五步上手路径、十六处实测阻塞,以及自研编解码带来的那笔真实成本。
filmcraft-cli commands --json 数出 710 条命令;moov 排在 mdat 后面。
h264、hevc、vp9、prores、aac、isobmff、matroska 各是一个 crate,GPU 合成跑在 wgpu 上,时间用整数 tick 表示,一秒 254,016,000,000 个1。filmcraft-cli 能导入、能排片、能出片,上面那三个数字就是这么来的。docs/agents.md 把这套约定写得很明白:它们不为 FilmCraft 专设,姊妹应用的 MCP 服务端可以照同一套做,一个 Agent 学会开一个应用,就能开下一个2。filmcraft-cli describe timeline.place 会把菜单位置、快捷键、参数一次打印出来2。四个入口分发的是同一批命令:filmcraft-cli exec <id> key=value,退出码 0 是成功、1 是命令失败、2 是用法错误;filmcraft --control 9876 起一条 JSON lines 的 TCP 连接,只监听 127.0.0.1;filmcraft-cli mcp 直接跑一个 headless 引擎,加 --bridge 则接到正在运行的桌面端。sourceIn 与 duration 都是 tick:{"id":7,"token":"<token>","method":"engine.execute",
"params":{"command":"timeline.place","params":{"item":1,"track":"V1",
"seconds":0,"sourceIn":284298240000000,"duration":1270080000000}}}ui.elements 拿到控件的自动化 id,ui.click 与 ui.key 按 id 点,ui.screenshot 截窗口。tools/list 数过。其中 8 个 ui_* 只在 bridge 模式存在:点击、拖拽、按键、输字、截窗口。headless 模式拿到 9 个:command_list、command_run、command_batch、doc_inspect、project_inspect、sequence_inspect、media_import、render_frame、render_preview。文档给的循环很朴素:先 inspect 拿 id,再 command_run,渲一帧看结果,错了就 edit.undo2。
docs/agents.md 原文,2026 年 10 月 28 日读取:headless 与 bridge 两种模式的对照表,下面紧跟着那句「没有 --automation-read-root 这类目录限制」。docs/agents.mdXNotSupported 就是这么撞到的。seconds、frame、timecode。参数名严格匹配:我照直觉给 effects.setParam 传 radius,立刻报「no param radius」,真实的参数名是 blurriness。
media_import 或 filmcraft-cli import 进工程。.fcproj,JSON 格式,带 schema 版本迁移、自动保存和崩溃恢复3。run script.jsonl。sequence.inspect 给出每条 clip 的起止与素材入出点(单位 tick)、效果、关键帧数、标记。render_frame 或 filmcraft-cli render --seconds S --out f.png 出一帧 PNG。file.exportMedia 带上 wait: true 会等到文件写完,途中每 100 毫秒发一次进度通知;jobs.list 里每个任务带 etaSeconds;客户端取消后,引擎在下一批停手并删掉半成品2。.deb 装完命令行在 /usr/bin/filmcraft-cli2。我下的是 99 MB 的 tar.gz,解出两个可执行文件,filmcraft-cli --version 直接回 0.13.0。--project 只接受已存在的文件,新建要用 --save-as:filmcraft-cli --save-as a.fcproj exec file.newProject name="Test"--project,报错是 No such file or directory (os error 2),这一步能劝退不少人。filmcraft-cli --project a.fcproj --save import clip.mp4
filmcraft-cli --project a.fcproj --save exec file.newSequence name="Main" fps=30item 是素材 id,track 写 V1,时间给 seconds 也行:filmcraft-cli --project a.fcproj --save exec timeline.place item=1 track=V1 seconds=0sequence.inspect 报 durationFrames: 450,正好 15 秒。filmcraft-cli --project a.fcproj export out.mp4 --preset "YouTube 1080p Full HD"claude mcp add filmcraft-headless -- /abs/path/filmcraft-cli mcp --demofilmcraft --control 9876 直接报 XNotSupported,窗口起不来;headless 这条路不受影响。
moov 落在 mdat 之后,WhatsApp 拒收,临时修法是重封装时加 -movflags +faststart。issues/3459moov 写在 mdat 之后。现状:issue #3459(2026-10-27 开);我自己解包 0.13.0 的导出文件,顺序是 ftyp → free → mdat → moov,与问题单一致4。你能怎么办:先重封装再上传,或等默认布局改掉。.fcproj 里效果和 Motion/Opacity 都在,sequence_inspect 显示已启用,渲出来的帧还是原样。触发条件:Windows、headless、走 MCP 或命令行。现状:issue #3403(2026-10-26 开,priority: high,带 automation 标签)5。我在 Linux headless 上做了对照:把 Gaussian Blur 的 blurriness 设成 80,同一帧的像素差 79%,说明 Linux 这条路是合成的,这条问题单的适用范围到 Windows 为止。你能怎么办:Windows 上先抽一帧肉眼验,再批量渲。docs/agents.md 原文写着没有 --automation-read-root 这类限制,服务端能读到用户能读到的所有地方2(2026-10-28 读)。你能怎么办:把它放进容器或专用账户,别在个人主目录下开这个 MCP。FILMCRAFT_CONTROL_TOKEN。现状:issue #3436(2026-10-27 开),原因只写到 stderr,日志文件、界面、bridge 的报错里都没有6。你能怎么办:起桌面端之前先 export 一个 token,bridge 用同一个值。.prproj。现状:README 与 docs/gaps.md 的 G2 都写明不支持,现成路线是 FCP7 XML、AAF 或 OTIO7(2026-10-10 更新)。你能怎么办:先在 Premiere 里导出 XML 或 OTIO;分箱、效果和多数元数据会丢。gaps.md 的 G3,H.264 解码器只覆盖 8-bit 4:2:0,没有软件回退7。你能怎么办:先转成 8-bit 4:2:0 的代理文件。gaps.md 的 G11,估算 200–400 小时7。你能怎么办:把 FilmCraft 当成出片或出 XML 的中间站,特效交给下游。gaps.md 的 G57。你能怎么办:Linux 上先出 H.264 或 ProRes,再换工具转码。effects.addKeyframe 打在 clip 出点,effects.deleteKeyframe 报删除成功,关键帧还在。触发条件:关键帧时间等于 clip 的出点。现状:issue #3386(2026-10-26 开)10。你能怎么办:把关键帧放在出点前一帧。effects.apply 返回 null,看不出有没有生效。触发条件:批量加效果时。现状:我在 0.13.0 上实测。你能怎么办:回读 sequence.inspect 确认效果挂上了,别拿返回值当判据。radius,报「no param radius」。触发条件:凭直觉写参数名。现状:我实测,参数名是 blurriness,默认值 0,看起来像效果没生效。你能怎么办:先 describe <id> 再写参数。docs/localization-parity.md 记着 zh-cn 覆盖 3,485/3,49811(2026-10-10 测)。你能怎么办:把引擎报错也当中文读,或者干脆留英文界面。
| 项 | 价格 | 说明 |
|---|---|---|
| 软件 | 0 美元 | 双许可,可商用1 |
| 安装包 | 83–104 MB | Windows msi 83.5 MB、macOS dmg 103.7 MB13 |
| 导出算力 | 你机器的 CPU | 8 核上 1080p 约 3.6 帧/秒,实测见阻塞一节 |
| 硬件编码 | 需要 NVIDIA 或 Apple 芯片 | H.265 只走 NVENC 或 VideoToolbox1 |
| 中日文字体 | 0 美元 | craft-fonts 是 OFL,官方包已内置1 |
| Agent 订阅 | Claude Pro 20 美元每月 | 年付 17 美元每月,一次付 200 美元14 |
| 按量计费 | Opus 5.5 输入 4、输出 20 美元每百万 token | 走 API 时按这个算14 |
| 方案 | 你给它什么 | 它给你什么 | 它在这一层 | 许可与公开体量 |
|---|---|---|---|---|
| FilmCraft | 素材、.fcproj、710 条命令 | mp4/ProRes/MXF、XML/OTIO/AAF、帧 PNG | 本机剪辑引擎,自研编解码1 | MIT 或 Apache-2.0,16.6k star15 |
| Remotion(第 23 期) | React 组件 | mp4 | 渲染底座,浏览器 | 自订两层许可,68.3k star16 |
| HyperFrames(第 14 期) | HTML | mp4 | 渲染底座,浏览器 | Apache-2.0,73.9k star17 |
| OpenMontage(第 22 期) | 产线描述、编码 Agent | 成片 | 编排层,12 条产线 | AGPL-3.0,72.5k star18 |
| Hypit(第 15 期) | SVML 工作流 | 成片、技能包 | 工作流描述语言 | 改过的 Apache-2.0,26.1k star19 |
| video-shotcraft(第 42 期) | 124 张镜头卡、模板 | 1080p 宣传片 | 技能包,镜头库 | Apache-2.0,14.1k star20 |
| Palmier Pro(第 24 期) | 时间线、Agent | 成片 | 桌面剪辑器,已转闭源 | GPL-3.0 停在 v0.7.6,14.6k star21 |
| OpenChatCut(第 16 期) | 对话 | 可继续改的时间线 | 桌面剪辑器 | AGPL-3.0,2.7k star22 |
| BaoCut(第 38 期) | 对话、编辑事务 | 工程与改动回执 | 桌面剪辑器 | 社区许可,1.6k star23 |
.prproj,或者你要靠插件扩展特效,或者素材是摄影机 10-bit 4:2:2 原片。这三件事都在 gaps.md 里排着,等它们落地再回来。github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
claude.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.