# Share immersive films

> Export 360 video, stereo films and Apple spatial video, or publish a film player on graspable.cloud.

Source: https://graspable.dev/docs/film-delivery

Film delivery is available from **0.17.2**. A rendered film can be watched on a screen or in a supported headset. Publish the interactive project instead when viewers need to move through the scene or interact with its objects.

## Render and save

Open **Animate**, choose your take and set **In** and **Out**. Under **Export film**, choose a format and size, then **Export video**. Graspable saves the take first, renders its camera sequence and mixes the unmuted sound clips. Keep the preview open and leave any active XR session before rendering.

| Format | What it contains | Where to use it |
|---|---|---|
| MP4 | A framed 2D film with sound | Websites and ordinary video platforms |
| 360° MP4 | A monoscopic, full-sphere equirectangular film with spherical metadata | YouTube 360 and compatible headset players |
| Stereo MP4 | Full side-by-side left and right camera views | Graspable's headset player and compatible stereo players |
| Apple spatial video | A framed stereoscopic MV-HEVC MOV with spatial metadata | Apple Vision Pro and compatible Apple playback |
| Apple 360° video | Monoscopic HEVC with Apple's projected-media metadata | Files and Quick Look on visionOS 26 or later |
| WebM | A framed 2D film with sound | Compatible web browsers |

Stereo rendering uses two distinct cameras. **Eye separation** controls their distance in millimeters; it does not add depth to an existing flat video. Apple spatial export needs a fixed lens across the selected range. Split a film with lens changes into separate exports.

Apple spatial encoding requires a supported Mac running macOS 15 or later; Apple 360 encoding requires macOS 26 or later. Graspable checks the encoder before you start. The encoder is included in supported desktop builds. Windows and Linux can render the browser formats; native Apple encoding is unavailable there.

The saved film appears in the project's files and in **Publish → Rendered film**. **Download video** saves a local copy. **Preview film player** opens its player. If native Apple encoding is canceled or fails, the completed browser video remains saved and available.

## Publish on graspable.cloud

Choose **Publish**, select **Rendered film**, then choose the saved film. Set the address and visibility and publish. This creates a player with playback, seeking, sound, full screen and downloads. It uses the same publishing account and permissions as an interactive project. Publishing a film to an existing project address replaces the content served at that address.

Viewers can drag to look around a 360° film on a screen. In a compatible WebXR browser, **Watch in headset** starts immersive viewing. Stereo sources supply a different image to each eye. A native Apple master, when attached, is offered as a separate download. Browser support varies; the downloadable file remains available when immersive playback is unavailable.

On an iPhone or another supported phone, open the published HTTPS address and choose **Enable motion**. Allow motion access when Safari asks, then turn or tilt the phone to look around a 180° or 360° film. **Center view** makes your current phone position face the film's starting direction. Portrait and landscape both work; **Disable motion** keeps your current view and returns to dragging. If permission is denied or the phone supplies no sensor data, you can still drag. Motion viewing does not require WebXR and does not control the view during a headset session.

A spherical video lets viewers turn their heads, but it cannot reveal new views when they walk sideways. For that freedom of movement, publish the original interactive scene. Generated render folders are omitted from a film's downloadable source bundle; the scene, takes and original assets remain available for re-rendering.

## Upload to YouTube 360

1. Export **360° MP4**. Choose 4096 × 2048 when the scene and device can handle it.
2. Download the MP4 and upload it through YouTube Studio. Graspable adds spherical projection metadata during export.
3. Wait for processing, then confirm that the player offers panning and shows the correct orientation. Check it in a headset before publishing widely.

YouTube says 360° processing can take up to an hour. Its [360° upload guide](https://support.google.com/youtube/answer/6178631?hl=en) describes playback verification. Graspable's metadata has been checked locally; automated YouTube ingestion testing is not included.

## Watch on Apple Vision Pro

Export **Apple spatial video** for a framed film with stereoscopic depth, or **Apple 360° video** for a surrounding panorama. Download the MOV and transfer it using AirDrop or iCloud Drive. Open it in Files or Quick Look on a compatible Vision Pro. Apple's [projected-media guidance](https://support.apple.com/en-ca/125014) covers panoramic playback on visionOS 26 and later.

These are different deliveries: a framed spatial film is not a 360° film. This build does not author Apple Immersive Video packages or stereo omnidirectional panoramas. Existing correctly formatted 180° and stereo spherical sources can be described in a film manifest for the web player; the timeline renderer currently generates mono 360° only.

## Work with agents

Agents use `inspect_film` to list a few deliveries, inspect a manifest or obtain the exact revision of a source video. `encode_spatial_video` converts a supported source with a revision check and returns a compact receipt. Video bytes and generated player code do not enter these tool responses. The local API can also attach a native master to a delivery. Editing an existing film still uses ordinary guarded file edits and project history.

A delivery manifest is a small `.film.json` file:

```json
{
  "version": 1,
  "title": "The observatory",
  "video": "public/films/observatory.mp4",
  "projection": "equirectangular-360",
  "stereo": "mono"
}
```

Paths refer to files inside the project. Optional `poster` and `download` fields attach a poster or native master. `projection` also supports `flat` and `equirectangular-180`; `stereo` also supports `left-right` and `top-bottom`. Imported videos must already match the declared layout. Changing a manifest does not convert their pixels or add platform metadata.

## Current limits

Timeline rendering is limited to two minutes, 4096 × 2048 and 192 MB per local export. Cloud film delivery currently limits each media file to 80 MiB; shorten the range or reduce the size if needed. Browser codec availability can also limit export. Capture renders the 3D scene; HTML overlays and arbitrary post-processing pipelines are not reconstructed. Keyed motion uses exact frames, while live physics and procedural effects may vary. A failed or canceled render does not publish anything.

Desktop rendering, file metadata, native encoding and emulated headset playback have automated and browser checks. Physical Quest and Vision Pro playback still require hardware validation. OpenUSD preserves editable scene data; it is not a video codec. See [OpenUSD scenes](https://graspable.dev/docs/openusd.md) for interchange support and conversion limits.
