¿Qué hace angles?
Escribe una pequeña especificación JSON, ejecuta un comando y lee una línea JSON. No abras ni edites el estudio; la especificación alcanza todo lo que puede crear y rechaza todo lo que no puede.
node <esta carpeta>/angles.mjs check spec.json # ~5s, sin video: una hoja, una fila de 4 fotogramas por variante
node <esta carpeta>/angles.mjs make spec.json # el mp4 (1920 de ancho, aproximadamente 4s de trabajo por segundo de video) + una hoja
- Verifica antes de crear. Pon las opciones que estás considerando en
variants. Una solachecklas muestra todas como filas etiquetadas en una pequeña imagen. Observa la hoja, elige una fila y luego ejecutamakeuna vez con los campos de esa fila fusionados en la especificación (yvariantseliminada). No renderices videos para comparar apariencias. - Examina una hoja, nunca el mp4. Lee la ruta de la
sheetque imprime. Es suficiente para juzgar el encuadre, el ángulo y el enfoque. - Si
ok: false, corrige solo lo que mencionen loswarnings. Estos enumeran las opciones válidas.node angles.mjs schemaimprime todas las opciones si las necesitas. No adivines.
{ "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" }] }
| Campo | Valores |
|---|---|
source | una grabación (.mov .mp4 .webm) o captura de pantalla (.png .jpg). Las grabaciones se cortan en fotogramas una vez y se reutilizan (--fresh lo rehace). |
style | close, raking (de cerca en un ángulo real); float, angle, flyby, focus, push, reveal, rise, tiltshift |
level | still, whisper (predeterminado), gentle, lively, bold. Cada uno es un presupuesto de velocidad, y el movimiento se reduce para ajustarse a él. speed ≤ budget se lee como calmado. |
trim, loop, aspect | { "in": s, "out": s }; true funde el final con el inicio; 16:9 (predeterminado), 1:1, 9:16, cualquier W:H |
beats | varios estilos en un solo 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 o #hex; none soft close float |
focus | { "at": s, "u": 0–1, "v": 0–1, "size": 30 }. Omitir u/v para enfocar donde cambia la grabación. |
overlays | [{ "at": 1, "dur": 1.5, "keys": ["⌘", "K"] }] o { "text": "…" }: insignias sobre la cámara |
ease, dir, travel | steady soft settle constant; left right; 0–2 (predeterminado .8) |
Gusto: la sutileza gana (whisper o gentle), una idea por clip (un estilo, o dos o tres beats), y un recorte de 3–8s que termina en la acción.
Requiere Chrome, ffmpeg, node 18+ y python3 con numpy y pillow; ejecuta npm i una vez aquí. Se sirve a sí mismo en el puerto 8790 (ajusta ANGLES_PORT para cambiarlo).