QuestJam

Somewhere to put
what you shot.

A streaming platform for flat, 180°, 360° and fisheye video. Browse it in a browser, step into it with WebXR, or open it in the headset player you already use. Watching is free, unmetered, and open to anyone with or without an account.

  • Web & WebXR
  • Creator portal
  • Live broadcasting
  • General audience

Playback

One video element, three surfaces.

There is exactly one video element in the app. The flat player and the WebXR renderer both read from it, so entering VR is a change of presentation rather than a reload — you can drop into a headset mid-scene and come back out without losing your place.

The QuestJam library: a featured billboard reading Ridge Traverse, 180 degree stereoscopic 8K, with a Watch button; a Continue watching shelf of cards tagged 180°, 360° and FISHEYE 3D with a resume-position bar; and a headset playing the same scene, labelled WebXR, no install.

Projection is geometry

Each projection is a purpose-built mesh with its UVs baked in — an equirectangular sphere for 360, a half-sweep dome for 180, a radial dome for fisheye lenses, a gently curved screen for flat.

Stereo is a shader

WebXR renders both eyes through one camera, so a draw call cannot ask which eye it is. The shader works it out by distance — exact rather than heuristic, with no reliance on frustum asymmetry or IPD sign.

Colour is left alone

No gamma pass and no tonemap. A player's job is to put the decoded frame on screen unchanged; anything else re-grades footage somebody already graded.

For creators

Upload a master. Get a ladder.

Set projection and stereo layout next to a live diagram of what those settings mean, and publish. Uploads are probed and packaged into an adaptive bitrate ladder automatically.

Adaptive ladder Five rungs by default, spread across the source's range rather than taken from the top of it. That is the difference between an adaptive ladder and a set of large files — a viewer who cannot hold the fourth rung needs somewhere to drop to.
Stereo bitrate A 1.6× multiplier, because side-by-side and over-under pack two eyes into one frame: the same nominal resolution carries twice the information and looks soft at flat-video rates.
Device profiles Which rung a given headset is offered is decided server-side. An 8K H.264 rung in a Quest 2's quality menu is a menu item that plays black.
Private preview Creators get a tokenised headset feed that includes their own unpublished titles — the way to check a title in a headset before anyone else sees it.

Getting paid

A pool, not a paywall.

Watching is free, unmetered and open to anyone. A monthly membership — QuestJam Plus — funds a pool, and the pool is split between creators in proportion to how long people spent watching them.

It is the model every general-audience video platform runs on, and it is the reason nothing on the site has a price on it.

Compatibility

The player you already use.

The same library, exposed four ways. There is no per-player code path — all of them read from one call, so a title published in the portal appears everywhere at once and can never describe itself differently to two different apps.

DeoVRA JSON feed, with a quality menu.
Play'aThe same JSON feed.
SkyBox VRDLNA/UPnP — appears as QuestJam Library, with byte-range seeking so scrubbing works.
Pigasus VRDLNA/UPnP, the same way.
WhirligigAn M3U playlist, or any direct file URL.

For players with no metadata channel, every file is also served under a conventional name — so a clip called clip1.mp4 still announces its layout without being renamed.

Live

Broadcast from a phone, watch in a headset.

A capture client runs both of a phone's rear cameras and encodes one stream per eye. The server composes them side by side and packages HLS for headsets, while relaying the raw streams to a roughly 200 ms browser monitor for whoever is holding the camera.

VRecord is one such client. It is not the only one it can be — the ingest end is specified so that it never needs to be, and any client that speaks the protocol will do.

No identity checks

No age gate, no document upload and no third-party identity provider, because there is nothing here that needs one. Everything on the site is suitable for a general audience.

Keys authorise a broadcast

A creator is authorised by a stream key, which authorises one broadcast rather than a person, and is spent by the end of it.

Not archived by default

Segments are deleted as they age out of the playlist, so a broadcast is not silently kept. Live has sound, and no recording.