Browser Video Support
The Meta Horizon platform supports high resolution video, useful for immersive video. Browser has an efficient decoding pipeline and is optimized for high quality video playback.
High bitrate and high resolution media can put a load on the device. During high quality playback, only play a single video at the time and keep the complexity of your site to only what is required.
Codec and Container Support
The Meta Quest and Meta Quest 2 have hardware support for video decoding.
Browser supports the following container formats:
Browser supports the following codecs:
Maximum resolutions supported by Quest (width by height):
- vp8: 2160x3840
- vp9: 5760x2880 or 2560x5120 or 4096x4096 or 3840x3072
- h.264: 3840x3840 or 5760x2880
- h.265: 4096x4096 or 2880x5760
Maximum resolutions supported by Quest 2 (width by height):
- vp8: 2160x3840
- vp9: 8000x4000 or 5580x5580
- h.264: 6200x3100 or 4400x4400
- h.265: 8192x4096 or 5760x5760
For the resolution listed, the inverse is also supported. For instance, Quest 2 can display 8192 by 4096 and 4096 by 8192 video.
High-Resolution Video Best Practices
WebXR Media Layers are the most efficient way to display immersive video. If possible, design your experience on around API.
WebXR Layers offer a similar efficiency but need to be coded carefully to get to the same level of performance. Cross origin content may not work.
Regular WebXR has higher overhead and may also show some image degradation.
Browser also supports immersive display for video on regular 2D web pages. If a user puts a video in full screen, they can select to reproject it to a custom projection such as spherical 360 or 180 degree equirect. They can also choose between a monoscopic mode or a stereoscopic mode of left-right or top-bottom. For these experiences, these are the maximum sizes that the video is displayed in:
- Meta Quest: 3840x2160
- Meta Quest 2: 7680x3840
For this workflow, pick a video resolution that is lower or equal to these. For instance, on Quest it wouldn’t make sense to play a 5760x2880 video this way because it will be downscaled to 3840x2160.
During playback of 2D video, the operating system will do its best to match the frame rate of the device to the frame rate of the video to ensure a smooth experience that doesn’t show some frames more than others.