View Categories

๐Ÿฅฝ VR Player

4 min read

The VR Player renders true stereoscopic 3D, runs in a Cardboard headset with gaze-driven controls, and detects the VR format automatically from the container, the file name and the frame shape.


๐Ÿ‘“ Two viewing modes #

  • ๐Ÿ“ฑ On-screen mode โ€” look around with the phone gyroscope or by swiping to pan. Good for a quick look without a headset.
  • ๐Ÿฅฝ Headset mode (Cardboard) โ€” drop the phone into a Cardboard-style viewer for a stereoscopic view with per-eye projection and lens distortion for your viewer profile, driven by real head tracking.

๐ŸŽฅ What it can render #

Projections

  • ๐ŸŒ Equirectangular โ€” 180ยฐ and 360ยฐ
  • ๐ŸŸ Fisheye โ€” 180ยฐ, 190ยฐ (RF52), 200ยฐ (MKX200), 220ยฐ (MKX220, VRCA220)
  • ๐Ÿ–ฅ๏ธ 2D screen โ€” an ordinary flat video is played on a screen floating inside the headset (see below)

Stereo layouts

  • Mono
  • Side-by-side (left / right), including right-eye-first layouts (_RL)
  • Top / bottom (over / under), including reversed layouts (_BT)

๐Ÿง  Automatic VR format detection #

The player figures out how to draw a video on its own, by merging up to three signals, from the most reliable to the least:

  1. Container metadata โ€” the spherical / stereo boxes embedded in the file (MP4 st3d / sv3d, Matroska StereoMode / ProjectionPrivate). The most trustworthy, and the rarest.
  2. File name โ€” the tags the VR ecosystem writes into file names (see below). This is what carries most real-world files.
  3. Frame aspect ratio โ€” the weakest hint, used only to fill in a stereo layout the other two left open (e.g. a 2:1 frame). It never invents a projection.

Once detected, the format is remembered per video, and you can always override it manually (see the format menu below).

๐Ÿ“„ Detection from the file name #

FunFlixDroid follows the two conventions the ecosystem settled on โ€” SKYBOX and HereSphere โ€” which agree on the vocabulary and complete each other.

A few rules to keep in mind so your files are recognized:

  • Tags are matched as whole tokens, so each one must be set off by an underscore, hyphen or space (Movie_180_LR.mp4, not Movie180LR.mp4). This is why a bare 180 inside a resolution or a date is not mistaken for a projection.
  • Matching is case- and order-insensitive, and spelled-out variants work too (Side_By_Side, SideBySide, Half_Over_Underโ€ฆ).
  • If several tags appear, the last one wins โ€” the format is usually appended at the end of the name.
  • A named lens (e.g. MKX200) beats a plain field of view (180): MKX200_180_LR is read as a 200ยฐ fisheye.
  • A stereo tag with no projection (e.g. just _SBS) is treated as a flat video, not VR.

Recognized tags

MeaningTags accepted (case-insensitive)
Equirectangular 180ยฐ180, 180x180
Equirectangular 360ยฐ360
Fisheye 180ยฐFISHEYE, F180, 180F, VR180, FISHEYE180
Fisheye 190ยฐFISHEYE190, RF52
Fisheye 200ยฐFISHEYE200, MKX200
Fisheye 220ยฐFISHEYE220, MKX22, MKX220, VRCA220
Side-by-side (L/R)SBS, LR, 3D, 3DH, HSBS, LeftRight, SideBySide, HalfSBSโ€ฆ
Side-by-side, reversedRL, RightLeft
Top / bottom (over-under)TB, OU, HOU, 3DV, TopBottom, OverUnder, HalfOUโ€ฆ
Top / bottom, reversedBT
Mono (single eye)MONO, 2D
Force flat playbackFLAT
Append F to a stereo tag (e.g. _LRF) for two full-size frames. EAC / equiangular cubemap files are recognized but not yet drawn.

Defaults, when a tag is missing: a 180 / 360 with no stereo tag is assumed mono; a fisheye lens with no stereo tag is assumed side-by-side, as the conventions prescribe.


๐ŸŽฏ In-headset controls (gaze) #

With the headset on, a floating overlay lets you drive playback by looking โ€” no buttons to fumble for:

  • โ–ถ๏ธ Play / pause, seek, and move through the queue (next / previous), with a thumbnail queue panel
  • ๐ŸŽš๏ธ Global and per-device script intensity, edge / pause hold, and cum mode
  • ๐Ÿ”Œ A device panel to toggle devices and cycle their scripts, mirroring the flat player
  • โญ๏ธ Skip to next action when there is a long gap ahead
  • ๐ŸŽฏ Recenter โ€” a 3-second gaze countdown puts “straight ahead” wherever you are looking (handy lying down); horizon tilt is never applied, to avoid motion sickness

๐Ÿ–ฅ๏ธ 2D videos in the headset #

A video the detection does not consider VR isn’t dropped out of the headset โ€” it is played on its own flat screen floating inside the scene, so you can keep the headset on and stay in sync with your device. You can also force this on any video via the format menu.


๐ŸŽ›๏ธ Manual format override #

Detection wrong, or the file name says nothing? A format menu lets you pick the projection and stereo layout by hand (or mark the video as flat 2D). Your choice outranks every signal for that video and is remembered next time.