mirror of
https://github.com/algora-io/tv.git
synced 2024-11-16 00:58:59 +02:00
Open source Twitch for developers
9ac9b08176
* replace SourceBin with Source + Demuxer + Parser * add Tee.Master * update topology * add copy channel * reorganize spec * fix pad refs * dynamically update pipeline topology for each rtmp sink * implement user defined destinations * validate destination URL * revamp ui * remove dbg calls * remove autocomplete for stream key input * update validation message |
||
---|---|---|
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
Overview
graph
Streamers{Streamers} --> Fly
Fly[Fly<br>Elixir App] --> RTMP
Fly --> Web[Phoenix<br>Web Server]
Fly --> Db[Fly<br>Postgres]
RTMP[Membrane<br>RTMP Server] -->|First mile delivery| Tigris[Tigris<br>Object Storage]
Viewers{Viewers} -->|Last mile delivery| Tigris
Viewers --> Fly
Livestream pipeline
graph
Encoder{Encoder<br>e.g. OBS} -->|RTMP| Source[FLV Demuxer]
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 --> fMP4
CMAFMuxerAudio --> fMP4
fMP4[Fragmented MP4] -->|HLS| Tigris{Tigris Object Storage}
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
- FFmpeg
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: