mirror of
https://github.com/algora-io/tv.git
synced 2024-11-16 00:58:59 +02:00
Open source Twitch for developers
assets | ||
config | ||
lib | ||
priv | ||
rel | ||
scripts | ||
.credo.exs | ||
.dockerignore | ||
.env.example | ||
.formatter.exs | ||
.gitignore | ||
.iex.exs | ||
Dockerfile | ||
fiex | ||
fly.toml | ||
LICENSE | ||
mix.exs | ||
mix.lock | ||
README.md |
Algora TV
The interactive livestreaming & video sharing service for developers.
Website
·
Discord
·
Twitter
·
YouTube
·
Issues
Architecture
graph
Streamers{Streamers} --> Fly
Fly[Elixir App - Fly] --> RTMP
Fly --> Web[Web Server - Phoenix]
Fly --> Db[Postgres - Fly]
RTMP[RTMP Server - Membrane] -->|First mile delivery| Tigris[Object Storage - Tigris]
Viewers{Viewers} -->|Last mile delivery| Tigris
Viewers --> Fly
graph
Encoder{Encoder} -->|RTMP packets| Source[RTMP Source]
Source -->|video| H264Parser[H264 Parser]
Source -->|audio| AACParser[AAC Parser]
H264Parser --> H264Payloader[H264 Payloader]
AACParser --> AACPayloader[AAC Payloader]
H264Payloader --> CMAFMuxerVideo[CMAF Muxer]
AACPayloader --> CMAFMuxerAudio[CMAF Muxer]
CMAFMuxerVideo --> HLSSink
CMAFMuxerAudio --> HLSSink
HLSSink[HLS Sink] --> Tigris{Tigris Object Storage}
graph
App[Application] --> RTMP[RTMP Server]
App --> Endpoint[Web Server]
App --> Repo[Ecto Repo]
App --> Telemetry
App --> PubSub
App --> Presence
App --> DNSCluster[DNS Cluster]
App --> FlyRPC[Fly RPC]
Getting Started
To get a local copy up and running, please follow these steps.
Prerequisites
Here is what you need to be able to run Algora TV.
- Elixir (Version: >=1.12)
- OTP
- PostgreSQL
Development
Setup
-
Clone the repo into a public GitHub repository (or fork https://github.com/algora-io/tv/fork).
git clone https://github.com/algora-io/tv.git
-
Go to the project folder
cd tv
-
Install dependencies with mix
mix deps.get
-
Set up your
.env
file- Duplicate
.env.example
to.env
- Add your environment variables in the
.env
file
- Duplicate
-
Create and migrate your database with mix
mix ecto.setup
-
Start your development server
env $(cat .env | xargs -L 1) iex -S mix phx.server
License
Distributed under the AGPLv3 License. See LICENSE
for more information.
Acknowledgements
Special thanks to these amazing projects which help power Algora TV: