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.17.3 and Erlang 27.1 installed to run Algora TV.
- PostgreSQL
- FFmpeg
- ImageMagick
- 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
Note: If you're using an Apple machine with an ARM-based chip, you need to install the Rust compiler and run
mix compile.rambo
-
Initialize your
.env
filecp .env.example .env
-
Create the database user that will manage the database
sudo -u postgres psql
CREATE USER algora WITH PASSWORD 'password'; ALTER USER algora WITH CREATEDB; \q
Update the
.env
file as needed with the username and password you used. -
Set up 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 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="..."
RESUME_RTMP=true
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: