Volumetric Live Video
This is the second part of the series Spaceport Volumetric Video Container. We pick up the containers back from the place where we created and read. In this tutorial, weโre going to walk you how to play Spaceport Volumetric Live Video using Unity. Donโt worry, itโs surprisingly easy to get the containers from the server and decode volumetric video, especially when controlling the container structure as we want.
Modifying The Volumetric Video Container

Letโs start by dividing the large volumetric container as many smaller containers that are broken up into ~10 frame increments(you can specify this size as you wish). We only need to buffer frames seconds in advance on the Unity App side as we divided the container up in this way. Normally, our CreateContainer() function is programmed to generate a single .space file. We will add one condition like the following figure.
In the old version, a single container was containing one metadata, now each small container can hold its own metadata. The metadata is served first and it tells the client where to find each frame start positions. Navigate to the directory of the Spaceport Container file and run the following command:
g++ -I ~/local/include -L ~/local/lib -o output ObjContainer.cpp 10 -ldracoenc -lboost_serialization
Each new container looks like the following:

Congratulations! You are done with the hard part, now you have simple containers that can be served over HTTP to watch Volumetric Live Video. Letโs set up a simple HTTP server to test it. I used NodeJs / http-server but you can create it however you want.
Getting Containers From HTTP Server
We only require a simpler request/response pair. Nowadays, the most common way to solve this problem is to utilize the โNetworkingโ library in Unity. We only need to call the function โSendWebRequest()โ to get a volumetric container one by one, until we get a request error. Note that web requests are typically done asynchronously, so Unityโs web request system returns a โyieldโ instruction. You have to wait until the request is completed. Now youโre done with making requests over http-server.

Do you remember how we read Volumetric Containers in the previous article? There are only a few fundamental differences between the two structures. Weโll do the same thing but this time, all the files will have the own metadata.

Now letโs turn our eyes to the decoder. We reconstruct the objects for each frame. As above, we will use MemoryStream class instead of BinaryReader.

Conclusion
This article provides an overview of how to divide and handle volumetric video containers. Thatโs all folks, as we can see, we can change the container structure as we want and then reconstruct it for our purpose. We hope this article gave you some ideas for watching the live volumetric video.ย If you have any questions or feedback donโt hesitate to write your thoughts.


