> For the complete documentation index, see [llms.txt](https://multiset.gitbook.io/multiset/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://multiset.gitbook.io/multiset/basics/third-party-scans/360-videos/equirectangular-mp4.md).

# Equirectangular MP4

MultiSet accepts **already-stitched equirectangular 360 video** as input for the VPS reconstruction pipeline, so you are not limited to raw Insta360 `.insv` footage. If your camera writes a stitched 360 `.mp4`, or you have already stitched the footage yourself, upload it directly and it runs through the same reconstruction.

This is the route for **any 360 camera outside the raw `.insv` path**, whether the capture is **ground based or flown**. Export a stitched equirectangular `.mp4` from your camera or its desktop app, and upload that. Use it when:

* your 360 camera does not export a raw dual-fisheye file,
* you are flying a drone other than the [Antigravity A1](/multiset/basics/third-party-scans/360-videos/antigravity-a1-drone.md), with a 360 camera that produces stitched video,
* you already stitched the capture in the vendor's desktop or mobile app,
* you are re-using 360 video that was shot for another purpose.

### Cameras this covers

Any camera that exports a **monoscopic 2:1 equirectangular `.mp4`** works. Common examples:

| Camera                                             | Notes                                                          |
| -------------------------------------------------- | -------------------------------------------------------------- |
| **Insta360 X3**                                    | And other Insta360 models outside the X4 / X5 raw `.insv` path |
| **DJI Osmo 360**                                   | Export the stitched 360 video from the DJI app or DJI Studio   |
| **GoPro Max 2**                                    | Export the stitched `.mp4` from GoPro Player or Quik           |
| [**Ricoh Theta**](https://www.ricoh360.com/theta/) | The Theta series writes equirectangular video directly         |

If your camera is not listed, check its export against the [file requirements](#file-requirements) below. The pipeline cares about the format, not the brand.

{% hint style="info" %}
For raw Insta360 captures, upload the `.insv` through [Insta360 Scans](/multiset/basics/third-party-scans/360-videos/insta360-scans.md) instead. Letting MultiSet stitch the raw file server-side preserves more detail than re-ingesting someone else's stitch.
{% endhint %}

## File requirements

| Requirement             | Value                                                                                                            |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Container and codec** | `.mp4`, **H.264 or H.265**                                                                                       |
| **Projection**          | Monoscopic equirectangular, a full 360° × 180° frame                                                             |
| **Aspect ratio**        | Exactly **2:1**. Other aspect ratios are rejected.                                                               |
| **Resolution**          | **3840 × 1920 or higher** recommended, **5760 × 2880** is ideal. Lower resolutions lose detail in the final map. |
| **Frame rate**          | **60 FPS** for indoor captures. **30 FPS** is enough outdoors.                                                   |
| **Stereoscopic**        | Not supported. Over-under and side-by-side stereo captures are rejected.                                         |
| **Packaging**           | Compress the `.mp4` into a `.zip`, one `.mp4` per video                                                          |
| **File size**           | **50 GB maximum** per `.zip`                                                                                     |

{% hint style="warning" %}
The 2:1 check is strict. A 16:9 export, a cropped frame, or a 180° capture is not a full sphere and will be rejected at upload.
{% endhint %}

## Capture guidance

The reconstruction cares about the same things whether the file arrives raw or stitched, so the capture playbook on [Insta360 Scans](/multiset/basics/third-party-scans/360-videos/insta360-scans.md) applies almost unchanged. The essentials:

* **Lock exposure and white balance** before you press record. Fixed shutter indoors (1/120 to 1/640), auto shutter outdoors, fixed white balance either way.
* **Move at 1.0 to 1.5 m/s**, smoothly, with no stops, pivots, or mid-walk pauses in the recording.
* Keep the camera at **head height or above** and stay **0.5 to 1 m** clear of walls and furniture.
* **Close the loop**: finish where you started and overlap the first few metres of the path.
* Record **one continuous take per map**. Split large sites into separate captures and combine them with [MapSet : Multiple Maps](/multiset/basics/mapset-multiple-maps.md).

## Metric scale

There are two ways to get real-world scale, and which one applies depends on how the video was shot.

### Ground-based capture: record the calibration marker

For a walked capture, **record a printed ChArUco marker as part of the video**. Lay the board flat near the start of your route, pass slowly over it at the start and again at the end, and the reconstruction locks onto real-world metric scale with no extra step.

{% file src="/files/zZ6bw21hBbN5GVUjsUBo" %}

The marker rules are the same for every 360 camera, since the board is read from the stitched frames: print on flat A4 at **exactly 100% scale** (never "fit to page", which rescales the whole map), keep it stationary and flat on the floor rather than in your hand, and let it fill roughly a quarter of the frame for a couple of seconds per pass. See [Calibration marker](https://multiset.gitbook.io/multiset/basics/third-party-scans/360-videos/pages/iTxFSoCzYHS4kqRPuyAa#id-2.-calibration-marker-for-metric-scale) for the full method.

### Aerial or marker-less capture: scale after processing

If the video has no marker in it, or was flown (where a printed board cannot be resolved from altitude), set the scale once the map is **active**: open the map in the Developer Portal, click **View Splat**, then **Scaling**, measure something whose length you know, and enter that length in metres.

See [Map Scale](/multiset/basics/rest-api-docs/map-scale.md) for the measure-to-scale tool and the equivalent API.

## Uploading to MultiSet

1. Open the [MultiSet Developer Portal](https://developer.multiset.ai/) and choose **Upload Existing Map**.
2. **Scan Type:** select 360 video.
3. **Choose Provider:** select **Equirectangular MP4**.
4. **File Format:** select **Zip (.mp4 file compressed in .zip format)**.
5. Pick the map location, then drag and drop the `.zip` on the Upload Map step.

<figure><img src="/files/r3gNRTVFgZ1TENA8YGic" alt="Upload Existing Map: Choose Provider set to Equirectangular MP4, file format Zip, and the requirements list" width="375"><figcaption><p>Choose <strong>Equirectangular MP4</strong> as the provider, then upload the stitched <code>.mp4</code> inside a <code>.zip</code>.</p></figcaption></figure>

Allow up to one hour for processing. You will receive an email notification once the map is ready.

{% hint style="info" %}
**Capturing a larger area?** Record it as **multiple separate videos**, upload each `.mp4` as its own `.zip` so MultiSet processes them as independent maps, then combine them into a single coordinate frame with [MapSet : Multiple Maps](/multiset/basics/mapset-multiple-maps.md).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://multiset.gitbook.io/multiset/basics/third-party-scans/360-videos/equirectangular-mp4.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
