Rendering and publishing¶
uv run studio render my-video --draft # fast review copy -> out/my-video-draft.mp4
uv run studio render my-video # final -> out/my-video.mp4 + .srt + .chapters.txt
uv run studio thumbnail my-video # out/my-video-thumbnail.jpg
render runs sync first, so the narration and timings are always current.
How it works¶
- Each scene renders on its own.
- The scene clips are concatenated losslessly.
- The voice track is built from
audio/vo/, and the music bed is ducked under it (sidechain). - Audio is mastered to −14 LUFS / −1.5 dBTP with a two-pass loudnorm, AAC at 48 kHz.
Caching¶
Each scene render is keyed on its HTML, assets, duration and quality, so only changed scenes are
re-rendered. A single-scene change takes seconds; a full render runs at about real time on a
Linux machine, where HyperFrames captures frames from the GPU. On Windows and macOS it captures by
screenshot instead, which is slower, so lean on --draft while you work.
uv run studio render my-video --force # re-render every scene
uv run studio render my-video --force hook outro # re-render only these scenes
The cache lives in episodes/<slug>/build/ and is safe to delete.
Before you render¶
uv run studio check <slug>passes with 0 errors.- You have looked at frames from
npx hyperframes snapshot. studio renderwarns if the chapters don't meet YouTube's rules: at least 3 chapters, each at least 10 seconds.
Verification¶
After mastering, render runs studio verify on the file it just wrote and exits 1 if anything is
an error: wrong resolution, frame rate or length, loudness or true peak off target, black frames, a
silence longer than the script plans, a transcript that no longer matches the script (the music bed is
too loud), or missing captions and chapters. Skip it with --no-verify, or run it alone later with
uv run studio verify <slug>.
Outputs¶
| File | Use |
|---|---|
out/<slug>.mp4 |
The video: 1920×1080, 30 fps |
out/<slug>.srt |
Upload as YouTube subtitles. Captions are not burned in for landscape videos |
out/<slug>.chapters.txt |
Paste into the video description |
out/<slug>-thumbnail.jpg |
The thumbnail |
out/<slug>-draft.mp4 |
Draft-quality review copy |
Thumbnail¶
studio thumbnail renders episodes/<slug>/thumbnail/thumbnail.html with headless Chromium (the first
of chromium, google-chrome, chrome or msedge on PATH, else the Chrome HyperFrames renders with). The
first run creates that file from templates/thumbnail.html, using the episode title; edit it, then
run the command again.
Publishing to YouTube¶
- Upload
out/<slug>.mp4and the thumbnail. - Paste
out/<slug>.chapters.txtinto the description. - Upload
out/<slug>.srtunder Subtitles. - If you used a music bed, add its credit to the description.
The last 5–20 seconds keep the right ~45% of the frame clear for YouTube end-screen elements (the
outro template does this).