A free and open source spatial & immersive video player for the Apple Vision Pro.
Maintained by Anthony Maës & Acute Immersive, derived from Spatial Player by Mike Swanson. See the announcement on Medium!
Because of significant interest in filmmakers for Immersive Video in the early days of the Apple Vision Pro, many developers have built their own players, often derived from Mike's open-source Spatial Player.
OpenImmersive aims to provide this community with a more complete player, with playback controls, error handling, media loading from HLS streaming and from the local photo gallery. The project and code are intentionally kept as concise as possible to find the right balance between turnkey readiness and modifiability.
- The xcode project contains OpenImmersiveApp, the visionOS app, which depends on OpenImmersiveLib, an easy-to-integrate Swift package that lives on its own github repository: https://github.com/acuteimmersive/openimmersivelib
- This player supports immersive and spatial videos in MV-HEVC, AIVU, Side-by-Side and Over-Under formats.
- Load a video from various sources: photo gallery, local files/documents, HLS streaming playlist URL, or by dragging a video onto the window.
- Control playback with Play/Pause buttons, +15/-15 second buttons, and an interactable scrubber in an auto-dismiss control panel.
- Select resolution/bandwidth and audio track when streaming videos.
- Play AIV with full spatial audio support!
- Add your custom UI panels to the player like the timecode readout built into the app.
- macOS with Xcode 26 or later
- for on-device testing: visionOS 26.0 or later
- Clone the repo
- Open the project in Xcode
- Update the signing settings (select the correct development team)
- Select the build target (visionOS Simulator or Apple Vision Pro)
- Run (⌘R)
Or install the app from the visionOS AppStore.
- Open your visionOS app in xcode.
- Go to File > Add Package Dependencies...
- Copy-paste the repo URL
github.com/acuteimmersive/openimmersivelibin the search bar at the top right of the popup. - Click Add Package, and use
import OpenImmersiveto use the lib's classes and structs in your app.
While this project aims to remain relatively concise and lightweight to allow for modifiability, the community could use improvements and new features. Contributions are greatly appreciated!
- Subtitles support
- Improved Spatial Audio support
- Format auto detection from HLS manifest
- SharePlay support
Special thanks to Zachary Handshoe from SpatialGen for his contributions. Special thanks to SINTEF and Gassco for supporting development.
