Browser playback architecture
How local VR video playback works in a browser
An online VR player can turn a local 180°, 360°, side-by-side or top-bottom file into an interactive view without sending the video to a media server. Here is the path from file selection to WebGL rendering.
1. The browser receives a local File object
A file picker or drop target gives the page a browser File object. WatchVR creates a temporary object URL and assigns it to a video element. That URL refers to data already available inside the browser; it is not a public address or an upload to WatchVR.
const objectUrl = URL.createObjectURL(file);
video.src = objectUrl;
// Release the browser-local reference when finished.
URL.revokeObjectURL(objectUrl);2. The device decodes the video
The browser and operating system provide the video decoder. A file extension identifies its container, but the codec inside determines whether playback works. This is why two MP4 files can behave differently on the same device. Once frames are available, the player exposes them to WebGL as a changing video texture.
3. WebGL maps a flat frame to a 180° or 360° surface
WatchVR places the camera inside an inward-facing surface. A 180° source uses the front half, while a 360° source wraps around the full view. Drag, touch and motion controls rotate the camera, letting a normal screen show one direction at a time instead of the complete equirectangular frame.
4. Texture coordinates select SBS and top-bottom views
Side-by-side video stores the left and right eye frames next to each other; top-bottom video stacks them vertically. Shader settings select the relevant half of the texture at display time. Mono uses the full frame. The player does not encode or export a converted replacement video.
- SBS/LR: half-width texture with a horizontal offset.
- Top-bottom/TB: half-height texture with a vertical offset.
- Mono: the complete source texture.
5. What local playback means for privacy
The selected video stays in the browser playback path and WatchVR does not upload or store it. The website still receives ordinary requests for its HTML, JavaScript, fonts and images, and aggregate website analytics operate as described in the privacy notice.
Browser and device limits
Playback requires JavaScript, WebGL2, sufficient device memory and native support for the video codec. Maximum resolution, mobile fullscreen behavior and hardware decoding vary by browser and device. The practical VR playback guide explains how to choose the correct projection and layout and troubleshoot common failures.