Camera-follow captions

Each sentence written across a canvas far bigger than the frame while a camera follows the words as they are said: every word a step bigger than the last with the camera pulling back to keep it the same size (or the camera gliding along lines of text), motion blur on every move, and a pull-back at the sentence's end to show it whole. Give a transcript with --words; *starred* words and the ones in `accents` take the accent.

  • captions/camera-follow
  • Captions
  • captions
  • Overlay with alpha
  • 6 s (1.5–120 s)
Style
Live in your browser
Camera-follow captions at 16:9
0.00 / 6.00 s
npx volito render captions/camera-follow --words talk.json --style tomato --out camera-follow.mov
Playing live with volito/browser, the engine a render uses. Each tab lays the item out again for that shape, not a crop. The graphic is transparent; the grey stands in for your footage.

Render it

npx volito render captions/camera-follow --words talk.json --out camera-follow.mov

Captions take their timing from a transcript: --words reads Whisper JSON or [{w, s, e}], one entry a word. Add text to caption your own wording on the voice's timing; without a transcript, text runs at pace seconds a word. Starred words and the ones listed in accents are the key words.

That writes ProRes 4444 with alpha, ready to drop over footage. The same item in another shape, brand or format:

volito render captions/camera-follow --words talk.json --aspect 9:16 --style cobalt --out camera-follow-9x16.mov
volito render captions/camera-follow --words talk.json --format mp4 --out camera-follow.mp4
volito still captions/camera-follow --t 4 --out camera-follow.png
volito info captions/camera-follow     # every prop and part
volito add captions/camera-follow      # copy its source into ./motion to edit

From Node:

import { findItem, readWords, renderVideo } from "volito";

await renderVideo(findItem("captions/camera-follow"), { words: readWords("talk.json"), out: "camera-follow.mov" });

Or ask an agent with the MCP server connected: “Render the Volito camera-follow captions (captions/camera-follow) in 9:16, in our brand.”

Props

Set each with --prop name=value, or all at once with --props and a JSON object.

PropTypeDefaultTakes
text
what is said; leave empty to caption the transcript as it is. Wrap a word in *stars* for the accent
longtextCaptions that follow every word you say, *right* on time.≤ 600 chars
accents
Accent words
words to put in the accent wherever they are said, comma separated
text—≤ 120 chars
camera
grow: each word a step bigger, the camera pulling back to keep up · track: lines of one size, the camera gliding along them
choicegrowgrow | track
framing
how big the newest word is on screen
choicestandardstandard | tight | wide
growth
grow camera: how much bigger each word is than the last
choicestandardstandard | steady | bold
blur
Motion blur
choicestandardstandard | subtle | heavy | off
ending
Sentence end
pull back: the camera shows each sentence whole once it is said · hold: it stays on the last word
choicepull backpull back | hold
ground
Behind the words
vignette: a soft dark edge over the footage · none: straight on the footage with a shadow · panel: the brand's ground, full frame
choicevignettevignette | none | panel
casechoiceupperupper | as typed | lower | style
pace
Seconds per word
without a transcript
number0.420.1 – 2
ticks
Sound on every word
booleanfalse—

Parts

Each part takes any move, ease or idle: --motion ground.in=pop.

PartWhat it is
groundthe vignette or panel behind the words
wordsthe words and the camera over them

Tags: captions, kinetic typography, camera, zoom, transcript, words, social, reels, hook

More in Captions