跳到主要内容

.channek 工程格式

.channek 是 Channek 的时间轴工程文件——纯数据、格式公开,你的创作不会被锁死在 app 里。规范的权威载体是 npm 包 @channek/project-format 的类型定义与 schema;本页只讲三条设计支柱与结构概览。

三条设计支柱

1. 单一真相源

一切时间轴数据(轨道、片段、效果、关键帧)只有这一份文档描述;预览与导出读同一份,不存在「预览版」与「导出版」两套。文档是纯数据、零渲染逻辑。

2. 有理时间,没有浮点秒

一切时间点与时长用有理数表示:

interface RationalTime {
value: number; // 整数计数
rate: number; // 每秒多少个计数
}

默认 rate 采用 flicks(每秒 705,600,000)——它能整除所有常见帧率与采样率。工程文件里绝不出现浮点秒或裸帧号,因此任意帧率素材混剪、来回编辑都没有累积漂移,seek 帧级精确。

3. 操作式编辑模型

对文档的每一次修改都是一条可序列化的编辑操作,经唯一的事务通道(EditTransaction)进入文档。人拖拽和 AI 调用产生的是同一种操作,所以:

  • 每次编辑天然可撤销 / 可重做;
  • 每条操作带来源标注(人改的还是 AI 改的,关联哪轮对话),可审计;
  • 不存在绕过通道的隐蔽修改。

结构概览

部分内容
媒体资源池素材去重登记。每个资源可有多个表示(representation):原始 / 代理 / 流 / 缩略图——预览播代理、导出切原始,不改文档结构。
媒体定位相对路径优先(相对工程文件所在目录,可移植)、绝对路径兜底、URI 统一远程源;支持图像序列。
程序生成源由生成器烘焙而来的素材:记录生成器种类、参数与缓存键,烘焙产物当普通素材引用。
轨道与片段多轨时间轴组合模型(组合思路参考 OTIO);片段引用资源池,不内嵌媒体。
扩展位每个可扩展对象带 metadata 命名空间字典,未知字段读写往返保留——第三方工具可以安全附加自己的数据。

兼容承诺

格式演进走版本迁移链:新版本 app 打开旧工程自动迁移;字段只增不改义。读写往返(读 → 写 → 读)保证幂等。