Que fait Angles ?
Écrivez une petite spécification JSON, exécutez une commande et lisez une ligne JSON en retour. N'ouvrez pas et ne modifiez pas le studio ; la spécification atteint tout ce qu'il peut créer, et rejette tout ce qu'il ne peut pas.
node <ce dossier>/angles.mjs check spec.json # ~5s, pas de vidéo : une planche, une rangée de 4 images par variante
node <ce dossier>/angles.mjs make spec.json # le mp4 (1920 de large, environ 4s de travail par seconde de vidéo) + une planche
- Vérifiez avant de créer. Placez les options que vous évaluez dans
variants. Uncheckles affiche toutes sous forme de rangées étiquetées dans une seule petite image. Regardez la planche, choisissez une rangée, puis exécutezmakeune fois avec les champs de cette rangée fusionnés dans la spécification (etvariantssupprimés). Ne générez pas de vidéos pour comparer les rendus. - Regardez une planche, jamais le mp4. Lisez le chemin de la
planchequ'il affiche. Cela suffit pour juger le cadrage, l'angle et la mise au point. - Sur
ok: false, corrigez uniquement ce que leswarningsnomment. Ils listent les choix valides.node angles.mjs schemaaffiche chaque choix si vous en avez besoin. Ne devinez pas.
{ "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" }] }
| Champ | Valeurs |
|---|---|
source | un enregistrement (.mov .mp4 .webm) ou une capture d'écran (.png .jpg). Les enregistrements sont découpés en images une fois et réutilisés (--fresh refait l'opération). |
style | close, raking (en gros plan à un angle réel) ; float, angle, flyby, focus, push, reveal, rise, tiltshift |
level | still, whisper (par défaut), gentle, lively, bold. Chacun est un budget de vitesse, et le mouvement se réduit pour s'y adapter. speed ≤ budget est considéré comme calme. |
trim, loop, aspect | { "in": s, "out": s } ; true fond la fin dans le début ; 16:9 (par défaut), 1:1, 9:16, n'importe quel L:H |
beats | plusieurs styles dans un seul clip : [{ "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 ou #hex ; none soft close float |
focus | { "at": s, "u": 0–1, "v": 0–1, "size": 30 }. Omettez u/v pour faire la mise au point là où l'enregistrement change. |
overlays | [{ "at": 1, "dur": 1.5, "keys": ["⌘", "K"] }] ou { "text": "…" } : badges au-dessus de la caméra |
ease, dir, travel | steady soft settle constant ; left right ; 0–2 (par défaut .8) |
Astuce : la subtilité gagne (whisper ou gentle), une idée par clip (un style, ou deux ou trois beats), et un trim de 3 à 8 secondes se terminant sur l'action.
Nécessite Chrome, ffmpeg, node 18+ et python3 avec numpy et pillow ; exécutez npm i une fois ici. Il se sert lui-même sur le port 8790 (définissez ANGLES_PORT pour le changer).