--- title: "Troubleshooting" description: "Solve common Studio, project, media, animation, preview, and rendering problems." --- Start with the symptom you can see. Keep the exact error and note whether the problem happens in Studio, validation, or only in the final render. ## Start here ```bash npx hyperframes doctor ``` This checks the runtime, browser, FFmpeg, and other local requirements. ```bash npx hyperframes lint npx hyperframes check ``` Open Studio or capture important frames: ```bash npx hyperframes snapshot --at 0,3,8 ``` Copy the complete error and add what you did, what you expected, and what must not change. For selection, canvas, timeline, autosave, and Studio-only failures, use [Studio troubleshooting](/studio/troubleshooting). ## Project and environment problems ### "No composition found" The project needs an `index.html` containing a valid composition root with `data-composition-id`, width, and height. Create a new project: ```bash npx hyperframes init my-video ``` Or compare the current source with [Compositions](/concepts/compositions). ### "FFmpeg not found" FFmpeg is required for local video encoding. ```bash macOS brew install ffmpeg ``` ```bash Ubuntu or Debian sudo apt install ffmpeg ``` ```powershell Windows # Download a 64-bit Windows build from: # https://ffmpeg.org/download.html#build-windows # Then add its bin directory to PATH. ``` Verify with `ffmpeg -version`, then rerun `npx hyperframes doctor`. ### Docker render will not start Run `docker info`. Confirm Docker is installed, its daemon is running, your user has permission, and the first image download can reach the registry. ### Preview checks an unexpected port range When starting a managed background preview, choose the discovery range with an explicit port: ```bash npx hyperframes preview --background --port 4567 ``` Discovery checks ports 4567–4666. If this project has a saved preview on another port outside that range, only that saved port is checked separately. When moving an existing managed preview to the requested port, add `--force-new` to stop and replace it. Without `--port`, discovery starts at the saved preview's port. `preview --status --port 4567` uses the same discovery range and checks an out-of-range saved port separately. Among previews for this project, status prefers the exact requested port, then the saved preview's port, then another match. The saved log path appears only when the selected server is verified as that background preview. If the listener PID cannot be determined, JSON reports `pid: null` and text output omits the PID. `preview --stop` checks only this project's saved port when a session exists, even with an explicit `--port`. Without a saved session, `--stop --port 4567` discovers previews in ports 4567–4666. Shutdown waits check only the port being stopped. ## Media problems ### Video is black in preview but renders The browser may not decode the source codec even though FFmpeg can. HyperFrames normally creates and uses a compatible preview proxy. If the frame remains black: 1. confirm automatic proxying is not disabled; 2. run `npx hyperframes doctor`; 3. run `npx hyperframes lint --verbose` to identify affected files; 4. confirm the source file exists and can be read. ### Video, image, or audio is missing Prefer a local project asset. Confirm its path, filename capitalization, and whether it was moved or renamed. Remote media can fail because of permissions, expiring URLs, or cross-origin restrictions. ### Preview stutters Common causes: - very large source images; - several large `backdrop-filter` blurs; - expensive shadows or filters on animated elements; - too many large overlapping layers. Check whether the slowdown occurs in one scene. Resize oversized media and simplify the expensive element before reducing the whole project’s quality. ## Animation and composition mistakes These problems often appear in agent-written or manually edited source. ### A video freezes while its box animates Do not animate `width`, `height`, `top`, or `left` directly on a `