I'm currently doing a refactoring to make the code more readable. The Main branch is currently broken. The latest (running) version is available in branch: https://github.com/shigde/sfu/tree/running-main-v1
Shig is a federated service designed to distribute and replicate live streams among Fediverse instances. It's built upon the WHIP/WHEP approach for both inbound and outbound streams. Through an ActivityPub integration, Shig can follow other Fediverse services and receive updates on live stream activities.
Feature | Develop State | Release | |
---|---|---|---|
Endpoints | |||
WHIP/WHEP (Lobby) | finish | ||
WHIP/WHEP (Instances) | testing | ||
WHIP/WHEP (Static Files) | develop | ||
Mute/Unmute | testing | ||
WebRTC to RTMP | develop | ||
WebRTC to HLS | planned | ||
Bandwidth Estimation | |||
Receiver/Sender Reports | planned | ||
Simulcast | planned | ||
FEC | planned | ||
Activity Pub | |||
Fallow PeerTube | finish | ||
Fallow Channel | finish | ||
Fallow Shig Instance | planned | ||
Fallow Remote PeerTube | testing | ||
OAuth between Services | planned | ||
Deployment | |||
Docker | planned |
Develop States: planed | develop | testing | finish
- Use Cases
- Entities
- Architecture
- WHIP/WHEP: Lobby Session initialization
- ShigCLT: Start stream via commandline tool
- Backpressure
make run
Normally, the SFU (Shig instance) listens for data from other Fediverse instances. However, to facilitate development, you could start the SFU with an included SQLite database. Run inside the SFU project
mv shig-dev.db shig.db
Now you can start the SFU with some data.
make build
make build-container
make docker-build
make docker-build-container
export DOCKER_DEFAULT_PLATFORM=linux/amd64
docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp shig-builder make build-clt-linux
please install grafana loki docker plugin
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
make monitor