- Home /
Smooth Synchronized HD Video Playback
Ok. Here's what I need: multiple (say 5) short (5-ish minutes) HD movie clips (1080 preferred) running simultaneously. These clips are rendered as textures on meshes in the scene. Assume they are all visible and must be updated.
I have attempted several methods already. First I exported to ogg and used movie textures. This resulted in excessive, unplayable lag. I then experimented with exporting each movie file to jpg files of each individual frame. I was able to get one video working with the Resources folder, doing some caching of the textures to manage the memory usage. However, storing these files in Assets was impossible, lagging/crashing the editor extensively and making Unity unusable.
So I tried streaming the files from outside the project, first using File and then WWW. This worked for loading each frame as needed, but induced serious lag. Attempting to cache the Texture2D instances ballooned RAM usage and crashed my computer. I tried Texture2D.LoadImage(), WWW.LoadImageIntoTexture(), and both WWW.texture and WWW.textureNonReadable. WWW.textureNonReadable appeared to consume less memory when running standalone (outside the editor) but still crashed the system after attempting to fill multiple Texture2D arrays. I was not able to get Texture2D.LoadRawTextureData() working.
The bottleneck is the Texture2D conversion. Right now I'm working on getting all the video clips to share one large image file per frame to cut down on calls--but one clip still drops the game down to around 25 fps. If only I could have the images pre-saved outside of the project as Texture2D assets. Should I try using AssetBundles for that or will it kill my memory as well? I'm hoping the overhead on Resources.Load() won't destroy my FPS. That might work, but I'll still have to deal with a the memory usage. In addition, these solutions don't translate well to mobile (something I would like to target if possible--but it's not necessary).
I'm asking how to implement a seamless system for rendering multiple simultaneous HD videos in Unity. Unity's current setup is unusable--all of my progress thus far is pretty much an elaborate hack. This can't be as difficult as I'm making it. Apparently there are third-party options, but I'd very much prefer to do this in-house. Do I need to write a plugin?
Lastly--is this the kind of thing that's easier to do outside of Unity? Thanks in advance.
Your answer
Follow this Question
Related Questions
how can i put button to stop this movie? 2 Answers
Splash videos on android and iOS? 0 Answers
MovieTexture .ogg file size limit? 0 Answers
How do I play a full screen video? 4 Answers
Transparency showing as black - textures and images loaded using www 3 Answers