Use case
Four second still
Profiles: video
Input
Visual Spec document
video.json
{ "$schema": "https://visualspec.dev/schema/1.0/schema.json", "visualSpec": "1.0", "metadata": { "title": "Four second still", "language": "en", "status": "approved" }, "profiles": [ "video" ], "world": { "id": "world.studio", "name": "Studio", "environment": { "kind": "environment.interior" } }, "cameras": [ { "id": "camera.hold", "type": "photographic", "framing": "medium", "intent": "Hold the subject without a move." }, { "id": "camera.detail", "type": "photographic", "framing": "close-up", "intent": "Move in on the glaze." } ], "assets": [ { "id": "asset.room", "type": "audio", "uri": "https://example.com/media/room-tone.wav", "mediaType": "audio/wav", "duration": 4 } ], "motion": [ { "id": "motion.push", "targets": [ "node.detail" ], "essential": false, "duration": { "value": 2000, "unit": "ms" }, "tracks": [ { "property": "transform.scale", "from": 1, "to": 1.08 } ], "reducedMotion": { "strategy": "disable" } } ], "timelines": [ { "id": "timeline.main", "duration": 4, "fps": 24, "tracks": [ { "id": "track.picture", "type": "visual", "clips": [ { "id": "clip.hold", "start": 0, "duration": 2, "sceneRef": "scene.shot", "cameraRef": "camera.hold" }, { "id": "clip.detail", "start": 2, "duration": 2, "sceneRef": "scene.detail", "cameraRef": "camera.detail" } ] }, { "id": "track.audio", "type": "audio", "clips": [ { "id": "clip.tone", "start": 0, "duration": 4, "assetRef": "asset.room" } ] } ] } ], "videos": [ { "id": "video.main", "timelineRef": "timeline.main", "aspectRatio": 1.777, "audioAssetRefs": [ "asset.room" ], "shots": [ { "id": "shot.hold", "sceneRef": "scene.shot", "cameraRef": "camera.hold", "start": 0, "duration": 2, "intent": "Static hold." }, { "id": "shot.detail", "sceneRef": "scene.detail", "cameraRef": "camera.detail", "start": 2, "duration": 2, "intent": "Push in.", "transition": { "type": "dissolve", "duration": { "value": 12, "unit": "f" } } } ], "captions": [ { "id": "caption.hold", "start": 0, "end": 2, "text": "A still hold.", "language": "en" }, { "id": "caption.detail", "start": 2, "end": 4, "text": "Then a closer hold.", "language": "en" } ] } ], "entities": [ { "id": "entity.subject", "kind": "object.product", "name": "Subject", "appearance": { "fill": "#d9ed94" } } ], "scenes": [ { "id": "scene.shot", "kind": "2d", "viewport": { "width": 640, "height": 360 }, "background": "#20261f", "cameraRef": "camera.hold", "nodes": [ { "id": "node.subject", "kind": "image", "entityRef": "entity.subject" } ] }, { "id": "scene.detail", "kind": "2d", "viewport": { "width": 640, "height": 360 }, "background": "#20261f", "cameraRef": "camera.detail", "nodes": [ { "id": "node.detail", "kind": "image", "entityRef": "entity.subject" } ] } ], "rendering": { "targets": [ { "id": "target.film", "platform": "web", "width": 640, "height": 360, "quality": "preview", "capabilities": [ { "name": "video.timeline", "level": "required", "fallback": { "strategy": "flatten", "description": "Preview shows the shots as still frames." } } ] } ], "fallbackPolicy": "report-and-approximate" }}