--- title: Quickstart description: "Create, preview, and render your first Hyperframes video in under two minutes." --- Go from zero to a rendered MP4 in four steps: scaffold a project, preview it live, customize the composition, and render. ## What you'll build A 1920x1080 video with an animated title that fades in from above — rendered to MP4 on your local machine. The entire composition is a single HTML file. ## Prerequisites Hyperframes requires Node.js 20 or later. Check your version: ```bash node --version ``` ```bash Expected output v20.11.0 # or any version >= 20 ``` FFmpeg is required for local video rendering (encoding captured frames into MP4). ```bash macOS brew install ffmpeg ``` ```bash Ubuntu / Debian sudo apt install ffmpeg ``` ```bash Windows # Download from https://ffmpeg.org/download.html # or install via winget: winget install ffmpeg ``` Verify the installation: ```bash ffmpeg -version ``` ```bash Expected output ffmpeg version 7.x ... ``` ## Create your first video ```bash npx create-hyperframe my-video cd my-video ``` ```bash Expected output ✔ Created my-video/ ✔ index.html ✔ assets/ Done. Run `npx hyperframes dev` to preview. ``` This generates the following project structure: | Path | Purpose | |------|---------| | `index.html` | Root composition — your video's entry point | | `compositions/` | Sub-compositions loaded via `data-composition-src` | | `assets/` | Media files (video, audio, images) | ```bash npx hyperframes dev ``` ```bash Expected output ✔ Hyperframes dev server running → http://localhost:3000 ``` Open [http://localhost:3000](http://localhost:3000) to see the live preview. Edits to `index.html` reload automatically. The dev server supports hot reload — save your HTML file and the preview updates instantly, no manual refresh needed. Open `index.html` and replace it with this composition: ```html index.html

Hello, Hyperframes!

``` Three rules to remember: - **Root element** must have `data-composition-id`, `data-width`, and `data-height` - **Timed elements** need `data-start`, `data-duration`, `data-track-index`, and `class="clip"` - **GSAP timeline** must be created with `{ paused: true }` and registered on `window.__timelines`
```bash npx hyperframes render -o output.mp4 ``` ```bash Expected output ✔ Capturing frames... 150/150 ✔ Encoding MP4... ✔ output.mp4 (1920x1080, 5.0s, 30fps) ``` Your video is now at `output.mp4`. Open it with any media player.
## Requirements summary | Dependency | Required | Notes | |-----------|----------|-------| | **Node.js** 20+ | Yes | Runtime for CLI and dev server | | **bun** or npm | Yes | Package manager (bun recommended) | | **FFmpeg** | Yes | Video encoding for local renders | | **Docker** | No | Optional — for deterministic, reproducible renders | ## Next steps Learn how compositions, clips, and nested timelines work together Add fade, slide, scale, and custom animations to your videos Start from built-in templates like title-card and video-edit Explore render options: quality presets, Docker mode, and GPU encoding