将录制的演示迁移为可编辑的 take
你正在将一个已完成的视频文件转换为 vosso take:一个文档,其缩放、裁剪、速度和图层都是数据,托管在版本历史中,并可在 studio 中编辑。文件因来自外部而失去的东西是你必须承载的诚实:它没有光标轨迹,因此无法自动缩放,摘要几乎看不到什么——你的眼睛就是联系表,每一次缩放都靠目测定位。
两条路径:
- 人类路径:将文件拖放到 https://vos.so/studio —— 它会以浏览器录制形状进入并直接在 take 编辑器中打开。当有真人参与时,这是最短路径;把链接交给他们。
- Agent 路径(本技能):自己构建 take 目录并运行标准流水线。下方有端到端的验证流程。
1. 探测源文件
ffprobe -v quiet -print_format json -show_streams -show_format demo.mp4
保留:宽度、高度、时长、帧率、是否存在音频流。Loom/Screen Studio 导出通常是 1080p H.264,摄像头气泡和任何编辑都已烘焙进去——它们作为像素迁移,而不是作为图层。在交接说明中要如实说明:迁移使文件从此可编辑,但不会解冻旧编辑。
2. 构建 take 目录
mkdir take
ffmpeg -i demo.mp4 -c:v libvpx-vp9 -crf 34 -b:v 0 -row-mt 1 \
-c:a libopus take/recording.webm # 如果没有音频流则去掉 -c:a
然后根据探测结果编写 take/meta.json(每个字段都是必需的;时间以毫秒为单位;producer: "migrated" 标记来源):
{
"producer": "migrated",
"dpr": 1, "zoom": 1,
"t0": 0,
"durationMs": 36766,
"width": 1920, "height": 1080,
"fps": 30,
"hasAudio": false
}
t0 可以是任意纪元毫秒;width/height 是视频像素(没有浏览器视口)。仅在 webm 实际携带音轨时将 hasAudio 设为 true。
3. 规划并诚实地查看
vos plan take --fresh # 构建 doc.json;cursorKept false, zoomAuto 0
vos frames take --times 0,10%,25%,50%,75%,90%,100% # 联系表就是你的眼睛
vos digest take # 运行,但期望不多:仅头部/尾部以及硬场景切换
# - 没有点击、没有打字、没有停留
不可能实现自动缩放,也不应该伪造。阅读缩略图,找到 2–4 个关键瞬间,并通过目测编写手动跨度:
# doc.json - 你添加的每个跨度都带有 "source": "manual"
# zoom: [{ "id": "m1", "in": 10.5, "out": 14.0, "level": 1.6,
# "cx": 0.52, "cy": 0.35, "source": "manual" }]
# segments: 裁剪无用的开头/结尾;speed:仅在画面确实空闲时使用
将 export.resolution 设置为与素材匹配(1080p 源就是 1080p — 迁移不会增加像素)。vos validate take 必须通过;用 vos render take check.webm --range a..b --draft 进行抽查。
4. 推送——旧演示变成活的文档
vos push take --folder <project> --label "migrated from <source>" \
--note "<内容说明;旧编辑已烘焙;你重新剪辑的内容>"
以循环结束:观看页面播放它,studio 编辑你编写的每个跨度以及文件从未有过的一切(背景、文字层、速度),而 vos pull 将人工编辑带回来。关键在于交接说明中的一句话:这是你最后一次盲目编辑演示——下一次用 vos record 录制,摄像机会自动规划。
诚实的限制(要说出来,永远不要掩饰)
- 没有光标轨迹 ⇒ 没有自动缩放、没有点击效果、没有打字缩放、也没有框架检查——每一次缩放都由你目测完成,并且你要如实说明。
- 旧编辑、摄像头气泡和字幕都是烘焙的像素。
- 迁移会重新编码一次(VP9);质量差的源文件仍然质量差——迁移不会恢复质量。
- 一个规格尺寸的输出阶梯(存储缩略图、海报)的工作方式与原生 take 完全相同——当要求发布时,
launch-kit技能会接手。