Skip to content

ArckyPN/tu-berlin-awt-pj-ss23-http3

Repository files navigation

Evaluation of HTTP/3 for Media Streaming -- Project Advanced Web Technologies at TU Berlin SoSe23

Prerequisites

The following install instructions for WARP and RUSH and demos have only been verified to be working on Ubuntu 22.04.2 LTS, your milage may vary.

Getting started

  1. clone this repository using git clone https://github.com/ArckyPN/tu-berlin-awt-pj-ss-23-http3.git
  2. cd tu-berlin-awt-pj-ss-23-http3/
  3. follow the install guides for the respective demos, WARP, RUSH, QUICR

Facebook / RUSH

Reliable - unreliable - Streaming Protocol (RUSH) is a MOQ protocol proposition designed for realtime and ultra low-latency live streaming applications by Facebook. It uses a modified version of the proprietary webtransport-go package from Adrian Cable as the relay HTTP/3 server and provides a streamer and viewer client implementation as HTML websites.

How to install

  1. cd rush/server/scripts/
  2. ./create-server-certs.sh (bash script)
  3. cd ../src/
  4. go run main.go
  5. the server should be running now and confirm it by saying: Launching WebTransport server at: :4443
  6. open a new terminal in the project root
  7. python rush/client/start-http-server-cross-origin-isolated.py
  8. in the root: ./chrome.sh rush (bash script) this launches chrome with both relevant pages open (make sure to closing all previous running chrome instances before running this)
  9. click start on the encoder website and copy the StreamID
  10. paste the StreamID on the Player website and click start

If you are having any issues to refer to the original repositories, found below.

Relevant links

Twitch / WARP

WARP is a MOQ protocol proposition designed for realtime and low-latency live streaming applications by Twitch. It uses a modified version of the official webtransport-go package from quic-go by Luke Curley and provides a viewer client implementation as HTML website.

How to install

Go

  1. cd warp-go/cert/
  2. ./generate (bash script), generates the TLS certificate
  3. cd ../media/
  4. place a video file of your choice in this directory, called source.mp4
  5. ./generate (bash script), generates dash segments
  6. cd ../server/
  7. go run main.go
  8. the server should be running now and confirm it by saying: listening on :4443
  9. open a new terminal in the root of this project
  10. cd warp-go/player/
  11. npm run install
  12. npm run serve
  13. in the root: ./chrome.sh warp (bash script) this launches chrome with the relevant page open (make sure to closing all previous running chrome instances before running this)
  14. you are now able to stream your video using warp

Since this repository no longer exists in its original state, please refer to the README.md found in this repository.

Rust

  1. cd warp-rust
  2. sudo docker-compose up --build
  3. in the root: ./chrome.sh warp (bash script) this launches chrome with the relevant page open (make sure to closing all previous running chrome instances before running this)
  4. you are now able to stream your video using warp

Since this repository no longer exists in its original state, please refer to the README.md found in this repository. When I ran this, the WebTransport connection would frequently drop out and was never able to be stable for more than 10s.

Relevant links

Cisco / QUICR

QUICR by Cisco has been designed to be a general purpose transport protocol for wide range of applications on various latency levels, mainly for real-time applications, like video conferencing, interactive live streaming and multiplayer video games. It uses libquicr C++ API based on the quicrq library and runs in a dedicated Swift macOS client program.

How to install

The install instructions are quite extensive and to preventing making errors regurgitating those, please refer to the original repository for install instructions.

Please note, I was personally unable to get this to run on the provided MacBook.

Relevant links

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published