I am trying to upload a movie user made in my web player app to a video hosting service (yes, it is a kind of online video editor). I cannot do it via sockets, since video hoster would not run a socket policy server for me, but they agreed to include my host in their crossdomain.xml, which makes me able to use UnityEngine.WWW for uploads.
But UnityEngine.WWW implementation is godawfully terrible. It can only work with a byte-array (which means I cannot just give it a stream and write there on demand, like I could do in C++), so I have to make sure the movie along with an upload request is located in the same byte[ ], which isn’t copied anywhere to avoid memory issues. When I achieved that, I realized that UnityEngine.WWW makes MULTIPLE COPIES inside it’s implementation and completely kills my attempts to upload movies larger than ~80MB due to inability of the 32 bit heap to allocate multiple one-piece copies of this size.
Is there anything I can do to avoid making a proxy server for video uploading? Because usability of proxy solution would be poor, multiple users running through it would receive pathetic bandwidth per user, and the $ cost of all those video files traffic is a kill.
Even asking Unity for a source code won’t work, because it’s a web player app, and web player is downloaded from unity3d every time.
Any suggestions?