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.fab.com/listings/3259a389-1214-4312-a6aa-14fc8012ce7b

2 Likes

Hello, I have a similar issue but I’m not sure if your plugin could solve it. Could you share your contact info for direct discussion?

Hi, drop me an email on unreal@joemarshall.org.uk (it’s linked off the plugin page if it doesn’t post here correctly)

1 Like

Check your email messages. My email is nd.d.hip1@gmail.com.

Please check your spam messages.

Hi, I’ve bought the plugin a while ago and I can’t make it work with my Android device, it’s just showing a black screen. I’ve tried the Phone demo from Github and the video isn’t playing but I can see the 3d UI. I’ve tried contacting you by email but you’re not answering. I would appreciate your guidance and opinion on the issues I am facing. the plugin looks very useful, but currently I am unable to make it work.

Hi,

I’ve just released a new version to Fab store, which fixes some issues with recent oculus updates, and may well fix the problems discussed above. It should get through submission review quite soon (today or tomorrow). It also has a new direct drawing mode which allows for unlit static meshes to render video directly to the main framebuffer, without having to go via an Unreal texture at all. This improves performance and reduces GPU usage quite a lot, with some limitations.

Hopefully I’ve caught up with the emails relating to this by the way, I’m afraid for some reason some of them went into my spam folder.

thanks
Joe

Hi,

In your latest version of the plugin, version 2.02, the playback works again, but pausing the video / setting the play rate is not working.

Hope you are able to update it again soon.

Thank you

Hi, can you drop me an email about this if you’re still seeing the problem with pause / play. Was it just in the demo APKs - I’ve updated the demo apks so that they now support pause and play (press A button on right controller if you’re on a VR headset, or two finger touch if you’re on mobile). It works fine on my quest 3.

For anyone looking for where to get this, I’ve updated the original post with the new fab.com link by the way.

thanks
Joe

1 Like

Hi Joe, my email might also have gone into your spam folder.