Sequences (ordered shots = scene + in/out + transition) with full validation, CRUD, and a client-driven film render the server orchestrates: browser renders each shot through the existing /render/* endpoints, server ffmpeg-concatenates in order with cuts or xfade dissolves, muxes a film-level audio bed, reaps after 48h. render.js refactored so there is one frame-post path in the repo (captureFrames/withRenderSize/begin/end/poll); new web/film.js drives the loop. Also fixes a pre-existing mux bug: no apad meant short audio truncated PICTURE. Orchestrator: deploy compose/script now carry SCENEGOD_SEQUENCES + SCENEGOD_FILMS volumes so shot lists survive a rebuild. Verified live: demo-two-shot renders one 11.500s mp4 with a genuinely compositing dissolve; a film built from the M7 templates (street wide -> dissolve -> closer -> cut -> record store) renders 11.800s at 960x540. 15 test groups green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
27 lines
458 B
JSON
27 lines
458 B
JSON
{
|
|
"version": 1,
|
|
"name": "demo-two-shot",
|
|
"title": "Demo — three shots, one dissolve",
|
|
"shots": [
|
|
{
|
|
"scene": "sync2-sunset",
|
|
"in": 0.0,
|
|
"out": 4.5,
|
|
"transition": "dissolve",
|
|
"transitionDur": 0.5
|
|
},
|
|
{
|
|
"scene": "sync2-sunset",
|
|
"in": 4.5,
|
|
"out": 8.0,
|
|
"transition": "cut"
|
|
},
|
|
{
|
|
"scene": "sync1-demo",
|
|
"in": 0.0,
|
|
"out": 4.0,
|
|
"transition": "cut"
|
|
}
|
|
]
|
|
}
|