Home

Awesome

Golem Transcoding requestor

Golem Transcoding is a React + Spring based webapp accepting video files as input and transcoding these files into different formats using Golem.

Every input file will be converted to .mkv, .mov, .avi and .mp4 output files.

Here's a YouTube video explaining how the whole system works.

Table of contents

Project structure

Setup

Golem setup. If you encounter an issue then refer to https://handbook.golem.network/requestor-tutorials/flash-tutorial-of-requestor-development for full set of instructions.

  1. curl -sSf https://join.golem.network/as-requestor | bash -
  2. ~/.local/bin/yagna service run / screen -S yagna -L -d -m ~/.local/bin/yagna service run
  3. ~/.local/bin/yagna payment init -r
  4. yagna app-key create requestor
  5. Store the key for later.

App prerequisite

  1. git clone https://github.com/Edhendil/golem-transcoding.git

Transcoding requestor setup

  1. Install python 3: apt install python3
  2. Install pip: apt install python3-pip
  3. apt install python3-venv
  4. cd golem-transcoding/requestor-python
  5. ./create-venv.sh

Server setup

  1. Setup JDK 8 using AdoptJDK website or with apt install openjdk-8-jdk.
  2. apt install python (Python 2 is required for compilation of fibers package
  3. apt install nodejs
  4. cd golem-transcoding/requestor-spring
  5. ./gradlew :bootJar
  6. cp build/libs/requestor-spring-1.0.0.jar ~/ (or any other location)
  7. cd ~
  8. Create application.yml file right next to the requestor-spring-1.0.0.jar file
  9. Set golem.scriptLocation to the absolute path of the requestor-python folder in the cloned repository. Example: "/home/your-user/golem-transcoding/requestor-python".
  10. Set golem.yagnaKey to the requestor key generated through the yagna app-key create requestor command. Example: "a0f1a0b7af0a42bcab0361f39dfd42b4"
  11. Set golem.inputFileLocation to the absolute path of the folder where you want to store the input video files. Example: "/home/your-user/transcoding-inputs". Be sure to create such folder first.
  12. Set golem.dataRetention to how long data about the jobs and their outputs should be stored. Example: "1h".
  13. Set golem.maxUpload to the max size of an accepted input file. KB, MB, GB suffixes are supported. Example: "100MB"
  14. Final file should look like this:
    golem:
      scriptLocation: "<absolute path to requestor script folder>"
      yagnaKey: "<Yagna requestor app key>"
      inputFileLocation: "<absolute path to the folder where input files will be stored>"
      dataRetention: "<how long should information about a job be kept in storage>"
      maxUpload: "<maximal size of the input file>"
    
  15. java -jar requestor-spring-1.0.0.jar / screen -S transcoding -L -d -m java -jar requestor-spring-1.0.0.jar

Access the webapp

  1. Open browser and go to localhost:8080

Licence

MIT