A couple of weeks ago Anthony Maës released an open source immersive video player based on Mike Swanson’s work. It’s also published as an app that you can download on the Vision Pro. It’s now my go-to app for playing immersive MV-HEVC videos. I was hopeful I could use this to make an app for my work.
For my purposes, I want an app that you can download and then just hit play to watch the thing I’ve made. Today that would be as close as I can get to the experience of watching Apple’s immersive videos in the TV app. So this weekend I set out to see if I could modify this player with a custom menu that only plays a video that I include with the app. Spoiler alert: I did it! Here’s roughly how:
- I forked the Openimmersive GitHub repository.
- I opened the forked project in Xcode.
- I spent some time trying to make things work by hard-coding a stream URL into that section of the app. That worked, but streaming a 115 Mbit/sec video file from my shared hosting account sucks even with fiber internet. Not to mention this could get expensive.
- So I copied the code for picking a file into ChatGPT and asked it to modify it to play a video file that was bundled with the app. It did it but it used AVKit which is Apple’s video playing framework. The issue with immersive video is that Apple doesn’t provide a framework for it. But this open source project is built on one (OpenImmersiveLib). So fixing this was a one-line change. I swapped out “import AVKit” with “import OpenImmersive” and it worked like a charm.
- I deleted the menu parts I didn’t need.
- I created a new app icon.
- I learned how to exclude my giant video file from the GitHub repository.
- I tested my app on my Vision Pro.
- I committed all my changes to my forked repository on GitHub.
- I followed these instructions for setting up my app on TestFlight.
- And voilà – you can test it via TestFlight!