Angles 是做什么的?
编写一个小的 JSON 规范,运行一个命令,然后读取一行 JSON 输出。不要打开或编辑 Studio;该规范足以表达它可以制作的所有内容,并且它会拒绝任何无法处理的内容。
node <this folder>/angles.mjs check spec.json # ~5 秒,无视频:一张图片,每个变体一行显示 4 帧
node <this folder>/angles.mjs make spec.json # mp4(宽 1920,每秒钟视频约需 4 秒处理时间)+ 一张图片
- 先检查再制作. 将您正在权衡的选项放在
variants中。一次check会在一个小的图像中将它们全部显示为带标签的行。查看该图片,选择一行,然后用该行的字段合并到 spec 中(并删除variants)执行一次make。不要渲染视频来比较外观。 - 查看图片,不要看 mp4. 读取它打印的
sheet路径。这足以判断构图、角度和对焦。 - 如果
ok: false,仅修复warnings中指出的问题. 它们列出了有效的选择。node angles.mjs schema会在需要时打印出所有选择。不要猜测。
{ "source": "~/Desktop/demo.mov", "out": "~/Desktop/angles", "trim": { "in": 2, "out": 8 },
"look": "bright", "background": "mist", "shadow": "soft",
"variants": [{ "style": "close", "level": "gentle" }, { "style": "raking" }, { "style": "float" }] }
| 字段 | 值 |
|---|---|
source | 录制文件 (.mov .mp4 .webm) 或截图 (.png .jpg)。录制的文件会被切分成帧并复用(使用 --fresh 重新处理)。 |
style | close, raking(近距离真实角度);float, angle, flyby, focus, push, reveal, rise, tiltshift |
level | still, whisper (默认), gentle, lively, bold。每个都是一个速度预算,相机运动会适应它。speed ≤ budget 表示平静。 |
trim, loop, aspect | { "in": s, "out": s };true 将使结尾交叉淡入开头;16:9 (默认), 1:1, 9:16, 任意 W:H |
beats | 在一个剪辑中使用多种风格:[{ "at": 0, "style": "float" }, { "at": 4, "style": "close" }] |
look, lookAmount | bright, crisp grain, glossy, sunlit, pixel macro, cool studio, film print, none;0–1 |
background, shadow | mist linen sky sage blush dusk 或 #hex;none soft close float |
focus | { "at": s, "u": 0–1, "v": 0–1, "size": 30 }。省略 u/v 可以对录制内容变化的地方进行对焦。 |
overlays | [{ "at": 1, "dur": 1.5, "keys": ["⌘", "K"] }] 或 { "text": "…" }:相机顶部的标记 |
ease, dir, travel | steady soft settle constant;left right;0–2 (默认 .8) |
品味:微妙更佳(whisper 或 gentle),每个剪辑一个创意(一种风格,或两三个 beats),并且修剪 3–8 秒并以动作结束。
需要 Chrome、ffmpeg、node 18+ 和带有 numpy 和 pillow 的 python3;在此文件夹中运行 npm i 一次。它将自身托管在端口 8790 上(设置 ANGLES_PORT 以更改端口)。