EffectCraft 时间模型与 .ecproj 工程文件快速上手:Tick 整数时间轴 + 人类可读的 JSON 工程格式

发布时间:2026/10/8 22:42:11
EffectCraft 时间模型与 .ecproj 工程文件快速上手:Tick 整数时间轴 + 人类可读的 JSON 工程格式
EffectCraft 时间模型与 .ecproj 工程文件快速上手Tick 整数时间轴 人类可读的 JSON 工程格式【免费下载链接】effectcraft项目地址: https://gitcode.com/gh_mirrors/ef/effectcraftEffectCraft 是一款用纯 Rust 编写的开源动效与特效合成工具可视为 After Effects 的免费开源替代品。它有两个底层设计最容易被新手忽视却最值得先了解Tick 整数时间轴——所有时间都是精确整数24 到 120 fps 帧率下永远不漂移人类可读的.ecproj工程文件——带版本号的纯 JSON能直接 diff、能被命令行和 AI 自动化。一、为什么用 Tick 整数时间轴传统软件常用浮点秒数存时间。问题在于0.1 秒在二进制里无法精确表示反复加减后误差会累积——视频编辑里这叫漂移轻则音画不同步重则帧算错。EffectCraft 的解法见 crates/time/src/lib.rs一切时间 Tick 整数。每秒固定为254,016,000,000约 2540 亿个 Tick类型就是一个 64 位整数Tick(i64)这个数值被精心挑选过能整除所有常见广播帧率23.976、24、25、29.97、30、48、50、59.94、60、120 fps和所有常见音频采样率8 kHz 到 192 kHz含 44.1k 系列所以第 N 帧的起点音频第 M 个采样点的位置都是精确的整数除法剪辑、帧计算、音视频对齐在任意帧率下都永不漂移代码里还有防护从文件、用户输入或外部指令进来的极端数值如 1e308、NaN会被钳制到安全范围零帧率也不会触发除零——恶意数字永不溢出是它测试里明确验证过的。一句话帧率和采样率只是显示层的换算底层永远是整数 Tick。时码只是皮肤SMPTE、丢帧、英尺帧整数 Tick 之上效果时间轴见 crates/time/src/lib.rs提供了几种专业显示方式全部是 Tick 的格式化而非另一种时间显示模式例子说明时码 Timecode00:01:30:12SMPTE 格式支持drop-frame 丢帧时码0;00;59;29直接跳到0;01;00;0229.97/59.94 可用帧 Frames45直接显示帧号英尺帧 FeetFrames001207胶片计数法35mm每英尺 16 帧/16mm每英尺 40 帧音频采样点 Samples00:00:01:00001与音频工程精确对齐秒 Seconds1.250小数秒时码输入也足够宽容01:02:03:04、1.2.3.4、纯数字右对齐100000:00:10:00、相对值15表示当前时间后 15 帧都能解析——与主流 NLE 的时间码输入框行为一致。二、.ecproj一个你能读懂的工程文件EffectCraft 的工程文件是带版本号的 pretty-printed JSON扩展名.ecproj。与.aep这类专有二进制不同你完全可以用文本编辑器打开它甚至直接改schema字段工程 schema 版本号当前为 1。打开时若文件 schema 比当前程序新会明确报错而不是尽力而为地损坏数据savedBy字段写出文件的 EffectCraft 版本号。若用旧版打开新写的工程会提示保存后未知设置会丢失见 crates/engine/src/commands/file.rs 的打开逻辑保存前自检to_file_json会把 JSON先回读一遍再写盘——读不回来的值如 NaNJSON 无法表达绝不会被存成坏文件见 crates/project/src/lib.rs自动保存使用紧凑 JSON无缩进更小更快文档模型是清晰的四层树Project → 项目项文件夹/合成/素材/纯色→ 合成 Comp → 图层 Layer → 属性树结构定义在 crates/project/src/lib.rs。三、人类可读工程文件的三个实际好处1️⃣ 版本控制友好——.ecproj是纯文本 JSON放进 Git 后 diff 干净、可追溯团队评审这帧到底改了什么一目了然。这也是 README 里明确宣传的卖点之一。2️⃣ 命令行与无头渲染——同一个工程文件可被 CLI 直接操作改属性、渲染出片都不需要打开 GUI见 apps/effectcraft-cli/src/main.rs# 改属性并保存 effectcraft-cli set Main #1 transform/position [100,360] --time 0 main.ecproj --save # 无头渲染 effectcraft-cli render --comp Main --out main.mp4 main.ecproj3️⃣ 自动化与 AI 代理——所有菜单、时间轴拖拽、属性编辑都走同一个命令注册表代理可通过 JSON 控制通道或 MCP 服务器操作工程文件协议见 docs/control-protocol.md 与 docs/agents.md。此外还有观察文件夹功能把.ecproj丢进监视目录即可自动入渲染队列并写出状态文件crates/engine/src/commands/watch_folder.rs。四、延伸阅读时间模型源码crates/time/src/lib.rsTick、FrameRate、丢帧时码换算工程文档模型crates/project/src/lib.rsProject树、to_file_json自检保存文件命令实现crates/engine/src/commands/file.rs打开/保存/XML 副本命令与控制协议docs/control-protocol.md、docs/agents.md 小结Tick 整数时间轴解决精确性可读 JSON 工程文件解决可维护性与自动化。这两点让 EffectCraft 既像专业 NLE 一样严谨又像现代开发工具一样好集成。【免费下载链接】effectcraft项目地址: https://gitcode.com/gh_mirrors/ef/effectcraft创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考