Streaming User Guide#

By Hanna Timander and Nisse Bergman, June 2022

hanna.timander.exjobb@gmail.com

This SHOULD be all the steps that are needed to get things running but feel free to update, clarify, de-clutter these instructions if needed.

Host#

Follow these steps to host a OpenSpace session with GStreamer:

  1. Make sure that you are using the thesis/2022/streaming branch of OpenSpace-WebGuiFrontend (Node.js needs to be installed).

  2. Make sure that you are using the thesis/2022/streaming branch of OpenSpace. (Clone with --recurse-submodules)

  3. Make sure that you are using the gstreamer-functionality branch of the sgct repo as your submodule placed in in apps/ext/OpenSpace/sgct. If this is not yet a branch of the sgct repo, it can be found here https://github.com/nissebergman/sgct (Clone with --recurse-submodules) Just copy over and replace sgct/CMakeLists.txt and ext/gstreamer folder from the fork to the normal sgct.

  4. Configure and generate the OpenSpace project in CMake with the SGCT_GSTREAMER_SUPPORT checkbox enabled

  5. In OpenSpace

    • In openspace.cfg

      • Add the viewer(s) IP-address(es) to ModuleConfigurations > Server > AllowAddresses

      • Make sure that ModuleConfiguration > Server > Interfaces > Type = “WebSocket” > DefaultAccess is set to Allow

    • Enable developer mode for the front-end GUI

      • Go to data/assets/customization/gui.asset and change the webguiDevelopmentMode flag to true.

      • (Optional) Go to data/assets/util/webgui.asset to see how the ports and routes are setup.

  6. In OpenSpace-WebGuiFrontend.

    • For Environment.js make sure the wsAddress is the same as the host IP (not localhost).

    • For WebRTCStreaming.jsx make sure the signalingServer is the same as the host IP.

  7. (Optional) Check the GStreamer pipeline (pipelineDescription) in gstreamerWebRTC.h looks good for your use case

  8. Start the developer frontend GUI

    • Open a terminal, go to OpenSpace-WebGuiFrontend

    • Run npm install when running first time.

    • Run npm start to start frontend GUI.

  9. Start the signaling server

    • Open a terminal, go to OpenSpace-WebGuiFrontend/signalingserver

    • Run npm install when running first time.

    • Run node signaling to start server.

  10. Build and run OpenSpace. (Preferably using RelWithDebInfo configuration)

  11. In the OpenSpace Window Options popup menu, pick the remote_gstreamer_output.json configuration file

  12. Leave the rest to the viewer!

Viewer#

Follow these steps to join a OpenSpace session from the GUI:

  1. Make sure you’re using a Chromium based browser (e.g. Google Chrome, Opera, Microsoft Edge)

  2. Goto chrome://flags (or other browser equivalent section) and add the host’s IP-address and port under the “Insecure origins treated as secure”-section. An address entered here should look something like 192.168.1.39:4690. This is probably because chrome finds IP-addresses sneaky to receive media from.

  3. Go to the address and port that the host has specified. If on same local network, should be similar to 192.168.x.xx:4690 format.

  4. Add /frontend/#/streaming to the address to load the correct GUI. (Something like 192.168.x.xx:4690/frontend/#/streaming)

    1. If this page is visited before OpenSpace has loaded on the host machine, you’ll most likely get an error message. If so, wait until the host confirms the application has loaded, refresh the web page, and try again.

  5. Open the streaming menu (icon of a computer with an arrow on it) and pick “Join session”. After a few seconds, the video feed should appear in the GUI.

  6. Explore OpenSpace as you’d like!