- Evaluation of HTTP/3 for Media Streaming -- Project Advanced Web Technologies at TU Berlin SoSe23
- Prerequisites
- Getting started
- Facebook / RUSH
- Twitch / WARP
- Cisco / QUICR
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.
- clone this repository using
git clone https://github.com/ArckyPN/tu-berlin-awt-pj-ss-23-http3.git
cd tu-berlin-awt-pj-ss-23-http3/
- follow the install guides for the respective demos, WARP, RUSH, QUICR
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.
cd rush/server/scripts/
./create-server-certs.sh
(bash script)cd ../src/
go run main.go
- the server should be running now and confirm it by saying:
Launching WebTransport server at: :4443
- open a new terminal in the project root
python rush/client/start-http-server-cross-origin-isolated.py
- 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)
- click start on the encoder website and copy the StreamID
- paste the StreamID on the Player website and click start
If you are having any issues to refer to the original repositories, found below.
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.
cd warp-go/cert/
./generate
(bash script), generates the TLS certificatecd ../media/
- place a video file of your choice in this directory, called
source.mp4
./generate
(bash script), generates dash segmentscd ../server/
go run main.go
- the server should be running now and confirm it by saying:
listening on :4443
- open a new terminal in the root of this project
cd warp-go/player/
npm run install
npm run serve
- 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)
- 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.
cd warp-rust
sudo docker-compose up --build
- 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)
- 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.
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.
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.