{
 "id": "storyboard-caption-card-pops-then-swaps-to-second-card",
 "title": "Pop a translucent caption card over the video on a segment click, then hard-swap it for the second card",
 "family": "overlay",
 "status": "rendered-draft",
 "edition": "studies-300",
 "gaps": [
  "Visual fidelity is an authored draft judgement from sampled source frames; no independent blind review or native Resolve execution."
 ],
 "intervalKey": [
  "6PXWAvUG8Sg",
  "1721/15",
  "355/3"
 ],
 "source": {
  "filmId": "6PXWAvUG8Sg",
  "film": "How to storyboard with Sora",
  "url": "https://www.youtube.com/watch?v=6PXWAvUG8Sg",
  "frames": [
   6884,
   7100
  ],
  "fps": {
   "numerator": 60,
   "denominator": 1
  },
  "startSeconds": 114.73333333333333,
  "endSeconds": 118.33333333333333,
  "publicationDate": "2024-12-09",
  "masterSha256": "89c59f9481b5d9d2d48caedec91dc748f8943472e269cabaee8d6dd38e186c70",
  "clockBasis": "Downloaded 1920x1080 rendition at 60/1 fps; excerpt frame i = master frame 6884+i, re-encoded to 960x540 without omitted positions."
 },
 "sourceHash": "ea5ba92de12b9a1babbbbb0898f5eb83a6a1db0f4418379f2c582d56648f3096",
 "classification": "vector-code-approximation",
 "bindingLevel": "full-render-manifest",
 "observation": "A generated video (a red-crowned bird by a stream) fills the frame above a thin dark player bar with a progress track and two small storyboard-segment buttons. The pointer sits on the first segment button; at about local frame 8 it clicks, and by frame 9-10 (master 6893) a tall translucent dark card labelled '1' pops in over the left of the picture carrying the scene's caption in white; the progress marker jumps forward at the same time. The card holds while the video plays. At about frame 186 (master ~7070) the pointer has moved to the second button and the card is replaced in one frame by card '2' with a shorter caption; that holds to the end.",
 "mechanism": "Caption overlay bound to a segment control: the card enters with a two-frame fade and slight scale-up on the first click, and subsequent segments hard-swap the card contents rather than re-animating it.",
 "phases": [
  {
   "frame": 0,
   "label": "Video, no card, pointer on segment 1"
  },
  {
   "frame": 8,
   "label": "Click segment 1"
  },
  {
   "frame": 9,
   "label": "Card 1 pops in, marker jumps"
  },
  {
   "frame": 172,
   "label": "Pointer moves to segment 2"
  },
  {
   "frame": 186,
   "label": "Card hard-swaps to 2"
  },
  {
   "frame": 210,
   "label": "Hold"
  }
 ],
 "checks": {
  "recipeSha256": "6a6ef8ac1317315b3b323a232d7122f097dca596f1efe1b4727d6a9e5a64837e",
  "renderManifestSha256": "2f77c85b7874955d4585d0c6ecc67901db1af387ae5b94407e38478ac8cdce87",
  "adaptationManifestSha256": "5c7d62f612071a0f7bc6c1aaf8b4b8737b308b70446ef2cbfc9223185371371d",
  "implementationFiles": 15,
  "movies": {
   "source": {
    "sha256": "ea5ba92de12b9a1babbbbb0898f5eb83a6a1db0f4418379f2c582d56648f3096",
    "bytes": 977103,
    "width": 960,
    "height": 540,
    "fps": "60/1",
    "frames": 216,
    "duration": 3.6,
    "codec": "h264",
    "pixelFormat": "yuv420p",
    "audioStreams": 0
   },
   "original": {
    "sha256": "8dfea22aca2b14e8a61a112f907147a02764ca19f97012489ac7e264f78bef70",
    "bytes": 81533,
    "width": 1920,
    "height": 1080,
    "fps": "60/1",
    "frames": 216,
    "duration": 3.6,
    "codec": "h264",
    "pixelFormat": "yuv420p",
    "audioStreams": 0
   },
   "adaptation": {
    "sha256": "0745b2f1613dc4a7dc14f8961265453f571b0af9c7682f6a64555ea6030d9978",
    "bytes": 71746,
    "width": 1920,
    "height": 1080,
    "fps": "60/1",
    "frames": 216,
    "duration": 3.6,
    "codec": "h264",
    "pixelFormat": "yuv420p",
    "audioStreams": 0
   }
  },
  "preparedArchive": {
   "sha256": "de68cdedb1a8e1a46ea18ef50d1407fa38397b81fbf7db3b0acc8a27af41563b",
   "bytes": 148577,
   "members": 20,
   "crc": "pass"
  },
  "selectedSvg": {
   "sha256": "7db11ceb5a911a4612e34ba4e6abfd5e728f23dc002ec1a3eae4a5205fbc5dc4",
   "bytes": 4037,
   "drawableElements": 27,
   "rasterEmbedded": false,
   "frame": 162,
   "meaningful": true
  },
  "contentDiffers": true,
  "renderSeconds": 37.9
 },
 "assets": {
  "source.mp4": {
   "path": "items/storyboard-caption-card-pops-then-swaps-to-second-card/source.mp4",
   "sha256": "ea5ba92de12b9a1babbbbb0898f5eb83a6a1db0f4418379f2c582d56648f3096",
   "bytes": 977103
  },
  "remake.mp4": {
   "path": "items/storyboard-caption-card-pops-then-swaps-to-second-card/remake.mp4",
   "sha256": "8dfea22aca2b14e8a61a112f907147a02764ca19f97012489ac7e264f78bef70",
   "bytes": 81533
  },
  "adaptation.mp4": {
   "path": "items/storyboard-caption-card-pops-then-swaps-to-second-card/adaptation.mp4",
   "sha256": "0745b2f1613dc4a7dc14f8961265453f571b0af9c7682f6a64555ea6030d9978",
   "bytes": 71746
  },
  "editable.svg": {
   "path": "items/storyboard-caption-card-pops-then-swaps-to-second-card/editable.svg",
   "sha256": "7db11ceb5a911a4612e34ba4e6abfd5e728f23dc002ec1a3eae4a5205fbc5dc4",
   "bytes": 4037
  },
  "resolve.txt": {
   "path": "items/storyboard-caption-card-pops-then-swaps-to-second-card/resolve.txt",
   "sha256": "ab2dc6d121f0a66fc05ee447821cc121baccad60eb3f32aff4449191ea0b5f59",
   "bytes": 6400
  },
  "package.zip": {
   "path": "items/storyboard-caption-card-pops-then-swaps-to-second-card/package.zip",
   "sha256": "de68cdedb1a8e1a46ea18ef50d1407fa38397b81fbf7db3b0acc8a27af41563b",
   "bytes": 148577
  },
  "recipe.json": {
   "path": "items/storyboard-caption-card-pops-then-swaps-to-second-card/recipe.json",
   "sha256": "6a6ef8ac1317315b3b323a232d7122f097dca596f1efe1b4727d6a9e5a64837e",
   "bytes": 9445
  }
 },
 "builtAt": "2026-09-18T05:50:40Z"
}