Skip to content

traction-project/CoCreationStage

Repository files navigation

TRACTION Co-Creation Stage

This repository contains the Co-Creation Stage code for the TRACTION EU-project. The Co-Creation Stage is a web based tool that enables distributed performances connecting different stages and people. It is a JavaScript and TypeScript based tool using Angular framework for the frontend and different services at the backend.

At the client side, Co-Creation Stage is composed of two applications that use Orkestralib library (LGPL-V3) to enable multi-device and multi-user mechanisms:

  • OrkestraControl is the application for artists to create a template for their show, defining beforehand a number of scenes, the number of stages, the screens/displays/projectors/devices at each stage and audio-visual assets including live and pre-recorded content.
  • OrkestraApp, is the application for remote participants and viewers to follow the show. It allows to visualise all the content and also to share signal of the camera of the device being used in real time.

At the server side, Co-Creation Stage makes use of four different services:

  • Orkestra-server, to organise and maintain multi-device sessions and the shared data coherently.
  • Janus, to manage all the WebRTC media flows.
  • Motion server to allow the syncronisation of the content, both in a single device or between multiple devices.
  • Encoding API for Co-Creation Stage to upload the pre-recorded content to be consumed.



This tool was originally developed as part of the TRACTION project, funded by the European Commission’s Horizon 2020 research and innovation programme under grant agreement No. 870610.



Documentation

The documentation is available here: https://traction-project.github.io/CoCreationStage

Dependencies

The deployment of the tool requires to have installed:

  • Nodejs v14.18.1
  • Npm
  • Docker-ce
  • Docker-compose
  • (Optional) AWS Account

Ports

The Co-Creation Stage is composed of many services that use the following ports:

  • 443 (reverse proxy)
  • 80
  • 8080 (motion)
  • 8082 (orkestra-server)
  • 3001 (encoding api)
  • 8089,8989 (janus, webrtc gateway)

Deployment

  1. Clone the project repository:

    git clone git@github.com:traction-project/CoCreationStage.git
    cd CoCreationStage
  2. The application uses several services and servers. These servers run inside Docker containers. So first of all, we need to download the docker images from here.

    After downloading the files, move them to backend/images folder.

  3. Install the docker images downloaded through next script:

    cd backend
    sh install.sh

    (Optional) If you want to remove these images later, you can execute:

    cd backend
    sh uninstall.sh
  4. Run the docker containers using the following commands:

    cd backend
    docker-compose up -d

    (Optional) In case it is necessary to stop the services, the commands are the following:

    cd backend
    docker-compose down
  5. (Optional) Encoding API. In case you want to use pre-recorded content, follow the steps specified here.

  6. Configure the host or IP where the application will be deployed (by default is localhost):

    • Configure the host variable at Orkestra-control config file.

    • Configure the host variable at OrkestraApp config file.

  7. Compile the application:

    npm run build
  8. Once it's done, the application will be available at the following URL:

    https://YOURHOST/ (Where YOURHOST is the IP or domain specified in the step 6)

Encoding API

The code of the service needed to host all the pre-recorded content and the guidelines to deploy it can be found here. But in this case docker image is provided, so the only thing you need is follow the next steps:

  • This service uses a Elastic Transcoder pipeline from AWS to transcode the multimedia files to several formats and resolutions and a S3 Bucket to store these transcoded files. To configure these services, we need to configure the AWS Credentials in aws.json and .env following the next documentation: link.

  • The application uses specific user credentials to do the authentication in this service. That is why we need to create this user before running the application. To create it, we need to run the next command in the backend folder:

    cd backend
    docker compose exec encodingapi yarn register

    After running this command, it will ask about a username and password. The username must be test and the password 1234

  • The S3 Bucket in AWS must be public. Copy the S3 Bucket URL and add it to subdomains field in environment.ts, environment.dev.ts and environment.prd.ts files

License

This tool is published under the license LGPL - V3. A copy of the GNU Lesser General Public License can be found here.

Experiment

We are aware that the deployment of the Co-Creation Stage with all its functionalities is not immediate. However, if you would like to carry out an experiment with the Co-Creation Stage in a real event, do not hesitate to contact Vicomtech at mzorrilla@vicomtech.org.