The interactive livestreaming & video sharing service for developers.
Website
·
Discord
·
Twitter
·
YouTube
·
Issues
Algora Live Billboards allow for in-video ads, helping devs earn money while livestreaming and giving devtools companies a novel channel to reach new audiences. Learn more
LiveBillboards.mp4
To get a local copy up and running, follow these steps.
- Elixir and Erlang/OTP
- We recommend using asdf to install Elixir and Erlang/OTP.
- Keep in mind that each Elixir version supports specific Erlang/OTP versions.
- Make sure you have at least Elixir 1.12 installed to run Algora TV.
- PostgreSQL
- FFmpeg
- OBS Studio (recommended for testing livestreaming features)
-
Clone the repo and go to the project folder
git clone https://github.com/algora-io/tv.git; cd tv
-
Fetch dependencies
mix deps.get
-
Initialize your
.env
filecp .env.example .env
-
Create your database
sudo -u postgres psql
CREATE USER algora WITH PASSWORD 'password'; CREATE DATABASE tv; GRANT ALL PRIVILEGES ON DATABASE tv TO algora;
-
Paste your connection string into your
.env
fileDATABASE_URL="postgresql://algora:password@localhost:5432/tv"
-
Run migrations and seed your database
env $(cat .env | xargs -L 1) mix ecto.setup
-
Start your development server
env $(cat .env | xargs -L 1) iex -S mix phx.server
Some features of Algora TV rely on external services. If you're not planning on using these features, feel free to skip setting them up.
GitHub
< 8000 a id="user-content-github" class="anchor" aria-label="Permalink: GitHub" href="#github">GitHub is used for authenticating users.
Create a GitHub OAuth app and set
- Homepage URL: http://localhost:4000
- Authorization callback URL: http://localhost:4000/oauth/callbacks/github
Once you have obtained your client ID and secret, add them to your .env
file.
GITHUB_CLIENT_ID=""
GITHUB_CLIENT_SECRET="..."
Tigris is used for storing and delivering livestreams and other media.
Create a public Tigris bucket to obtain your secrets and add them to your .env
file.
AWS_ENDPOINT_URL_S3="https://fly.storage.tigris.dev"
AWS_REGION="auto"
AWS_ACCESS_KEY_ID="tid_..."
AWS_SECRET_ACCESS_KEY="tsec_..."
BUCKET_MEDIA="..."
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
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}
Distributed under the AGPLv3 License. See LICENSE
for more information.
Special thanks to these amazing projects which help power Algora TV: