1
0
mirror of https://github.com/algora-io/tv.git synced 2024-11-26 01:00:20 +02:00
Open source Twitch for developers
Go to file
2024-06-23 15:20:30 +03:00
assets add PlayerComponent (#52) 2024-06-09 13:30:44 +03:00
config update hackney timeout 2024-06-03 14:36:26 +03:00
lib update admin helpers 2024-06-23 15:20:30 +03:00
priv update og image dimensions 2024-06-06 22:10:14 +03:00
rel initial commit 2024-02-29 22:31:42 +03:00
scripts add vector search for vods (#28) 2024-05-01 23:34:05 +03:00
.credo.exs add vector search for vods (#28) 2024-05-01 23:34:05 +03:00
.dockerignore update .{git,docker}ignore 2024-06-21 15:10:22 +03:00
.env.example add oauth flow for restream (#37) 2024-05-22 17:03:18 +03:00
.formatter.exs initial commit 2024-02-29 22:31:42 +03:00
.gitignore update .{git,docker}ignore 2024-06-21 15:10:22 +03:00
.iex.exs add Admin module 2024-05-27 15:23:07 +03:00
Dockerfile init root dir for hf cache 2024-05-12 14:41:55 +03:00
fiex add script for opening an IEx shell into the server 2024-03-06 19:26:07 +03:00
fly.toml remove vm specs 2024-05-23 14:21:20 +03:00
LICENSE initial commit 2024-02-29 22:31:42 +03:00
mix.exs add flag to transcode streams 2024-06-21 17:43:32 +03:00
mix.lock add flag to transcode streams 2024-06-21 17:43:32 +03:00
README.md update readme 2024-04-01 21:03:06 +03:00

Logo

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

  1. 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
    
  2. Go to the project folder

    cd tv
    
  3. Install dependencies with mix

    mix deps.get
    
  4. Set up your .env file

    • Duplicate .env.example to .env
    • Add your environment variables in the .env file
  5. Create and migrate your database with mix

    mix ecto.setup
    
  6. 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: