Finally, a solution to Android Vulkan video performance (360, 8k, Quest 3 etc)!

So, I was asked to investigate really poor performance of 360 video for a customer who recently upgraded their code to UE5.3. On Oculus Quest their video playback went from smooth, to 12 FPS. What I discovered was really surprising - when you play video in Vulkan on Unreal Android, it renders each frame, copies it to CPU, then copies it back to a Vulkan texture. There are various boring reasons for this, but the long and short of it is that video playback is broken on Android unti it gets a complete rewrite. Unity has the same problem, although there is an expensive plugin (Renderheads AVPro) which fixes it there if you have several hundred dollars to spare.

It’s been broken for a couple of years at least now, and given support for GLES is pretty much dropped now, it needed fixing urgently. So I built a plugin to play video on Android which renders the video entirely through a hardware accelerated path, without copying anything to CPU. It isn’t free, but the cost is under half the cost of similar plugins for Unity. Get it here:

https://www.unrealengine.com/marketplace/en-US/product/direct-video-android-beta

2 Likes