360° VR Video

Play panoramic 360, VR and Stereoscopic video within Video.JS

This example displays the basic usage of configuring 360° video sources. WebXR and Native Cardboard mode support is added with special WebXR events for debugging.

Introduction

360° feature has been developed and improved over many years keeping up with changing browser apis , requirements and IOS problems introduced.

This feature has been updated to accomodate the new WebXR api. WebXR is now the new standard for WebVR which Chrome currently supports. The new orientation sensor api available in Chrome browsers in Android has been added.

The rendering of the video makes use of WebGL in browsers that support it, utilising the graphics card available. NVidia, Radeon and Integrated GPU's will render better. Any Html5 video will be supported including Mpeg Dash and HLS Native and HLS.JS.

Supports Occulus headsets, Vive, Valve Index, mixed reality headsets and Apple Vision headset.

Cubemap Video Support

According to the investigations and work at Facebook https://code.facebook.com/posts/1638767863078802/under-the-hood-building-360-video/. Cubemap encoded videos help reduce wasted pixels and therefore bandwidth. The videos frames are tiled into a 3 x 2 formation.

Due to their discoveries equirectangle videos have wasted pixels around the edges and duplicated pixels where it wraps. Cubemaps have defined edges and therefore no redundant pixels are in the video. These are space and performance saving optimisations. Facebook have an Ffmpeg encoder filter called Transform360. Which will help transform Equirectangle sources to Cubemap video sources. The demo was produced using this filter.

Fisheye Camera Support

There is support for both Ricoh Theta dual 360 Fisheye and 180 degree Fisheye support. 180 degree Fisheye cameras like security cameras and Go Pro, angles to lock rotation and position may vary. A configuration is required for the location of the camera.

360 Video Controls

Various user controls are supported for controlling the video camera view. Desktop rotation controls include keyboard key codes, mouse drag and pointer lock controls for rotating and panning, mouse wheel for zooming. An external player api is provide to also control rotation using scripting.

Mobile rotation controls include touch for rotation when not in fullscreen mode. In non VR fullscreen mode mobile orientation apis are used for controlling rotation with the deivce.

In VR headsets mode on Mobile and in WebXR enabled browsers on desktop. WebXR apis are used to control rotation using orientation apis of the VR Oculus or Samsung Gear headsets or the mobile device. On mobile in WebXR cardboard mode it will fallback to the device's orientation.

VR Controllers are supported to control a virtual video controlbar. When connected the Oculus, Quest, Vive and Index gaming controllers will be enabled as a laser pointer.

Thumbstick on VR Controllers can be used to rotate the headset viewport without head turning.

In Quest and Apple Vision headsets with hand tracking support. Hand tracking VR controllers can be used for VR control.

See VR Controller Documentation for how the controllers work with the VR video controlbar.

Grip Controller Hand Controller

WebXR Support

VR support for VR headsets like Oculus Rift, Oculus Quest, Apple Vision, Vive, Samsung Gear VR, Google DayDream View, Microsoft Mixed Reality and Google Cardboard is possible with a VR stereo view of the video and autonomous rotating, panning and zooming control using native WebXR/WebVR support if enabled in the browser.

VR headset support is possible with WebXR browser API's found in Chrome, Firefox and Edge browsers. This relies on the Oculus Runtime for Windows, therefore OSX support has been dropped for now. These API's provide controls and status from the headsets which can then be used for controlling the video camera view.

Microsoft Mixed Reality with the Mixed Reality Simulator and supported headsets. Provides WebVR support with the Microsoft Edge browser.

WebXR is available on Android Chrome, Firefox and Samsung Gear VR Browser, this is now enabled by default.

Daydream View requires the Daydream application installed. And Chrome browser with WebVR enabled on Android.

VR Video Controls and subtitles text support is available in WebVR presentation mode.The video controls will display when clicking the VR display. And a reticle can be used for gaze control. Subtitles text will rotate with head tracking.

A flat 2D video Cinema screen mode in VR is supported. When launching from GearVR, Cardoard, or VR headets Occulus, Vive and Windows Mixed Reality. The video will display into a virtual Cinema screen. When subtitles are configured they will also be displayed over the Cinema screen.

Apple Vision Support

Apple vision in WebXR is supported. Work arounds have been implemented for video playback due to a bug with visionOS. visionOS does not have WebXR enabled by default and requires to be enabled in Safari. Enable WebXR.

Vision OS uses a special transient pointer WebXR input source which requires holding a pinch to keep the controller active. Pinching toggles the control bar and a second pinch makes selections.

Video in WebXR has a color gamma bug which should be eventually resolved in an update.

visionOS Safari makes itself known as an Ipad platform making it hard to determine what is a mobile device for mobile controls. A fix is in place to detect for visionOS to not turn on orientation controls or ask for permissions for orientation.

visionOS Controller

Mobile Support

360 video support is possible on Android with Firefox or Chrome or Safari on IOS.

On Ipad html fullscreen and VR picture in picture is supported.

Screen orientation lock is supported on Android and may be supported in IOS when enabled.

IPhone Support

IPhone does not support native html fullscreen. A Hack has been implemented to show VR rendering as a fullscreen video. Because no html fullscreen is supported orientation landscape lock while in fullscreen is not supported.

The fullscreen video of the VR rendering follows device orientation controls while in fullscreen.

IPhone does not support WebXR and there isn't a polyfill that works with Iphone yet.

IPhone Fullscreen

Ambisonics Support

Experimental support for 4 channel Ambisonics audio tracks in video is possible through an Ambisonics to Binaural audio decoder. Browsers firstly require mutli channel. The audio requires to be authored according to Google Spatial Media specification.

Amibsonics supports 2nd and 3rd order audio streams. The panning of the camera will pan the audio in headphones.

Producing 360 Videos

360° video can be produced using special surround cameras like ones supplied by https://www.360rize.com/.

The camera sources are required to be stitched together after into a panoromic flat spherical picture using special VR 360° software. Software like http://www.video-stitch.com/.

Live 360 is possible using a device like a Teradeck Sphere. This will publish to Wowza streaming servers which can then be packetised into Mpeg Dash and HLS.

Video Capture Support

Using the Snapshot Plugin, support is available to capture VR Video rendering.

VR Picture in picture support

Not normally supported by default. Features have been implemented to support picture in picture toggling of the VR rendering. This is a unique feature requiring hacks to show VR rendering as picture and picture. In Safari such hacks can break at any stage requiring work arounds when needed.

VR Picture In Picture

WebXR Headset Offsets

There is a bug with WebXR where the camera will start 180 degrees from the default position. An offset on the Y rotation is applied to look to the front of camera.

With a config xrTiltOffset, the X rotation offset will match the tilt up and down rotation of the default camera. Useful for sitting in a chair.

Features

Known Issues:

More Information:

Request a free trial

Try the feature for 30 days. Free support is provided. Provide your website domain(s) it will be used for.

Pricing

Choose a suitable pricing option for one time payment. Contact for feature requests or customisations.

Enter required website domains seperated by spaces or commas.

Single Domain

$AUD

$USD

✔ All features

✔ All features

✔ Free Support

Buy Now

Suits Small Sites

Multi Domain

$AUD

$USD

✔ All features

✔ All features

✔ Priority Support

Buy Now

Suits Larger Sites

Unlimited / SAAS Platform

$AUD

$USD

✔ All features

✔ All features

✔ Priority Support

✔ Unlimited domains

Buy Now

Integrate into own application and platform

Not For Profit / Education

$AUD

$USD

✔ All features

✔ All features

✔ Free Support

Buy Now

For Charity / Personal / Education

Unlimited / SAAS Platform / Source Code

✔ All features

✔ Includes Support

✔ Source Code Includes Repository Updates

Contact

Integrate into own application and platform