Use case

Four second still

Profiles: video

Input

Visual Spec document

video.json

video.jsonJSON
{  "$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"  }}