No description
  • Elixir 91.9%
  • JavaScript 4.3%
  • CSS 2.2%
  • Dockerfile 0.8%
  • HTML 0.8%
Find a file
2026-07-03 20:13:31 +02:00
.forgejo/workflows Update images 2026-07-03 20:13:31 +02:00
assets Fix dashboard preview, autoplay-on-ready, and surface ffmpeg log 2026-06-28 23:57:01 +02:00
config Disable boot-time admin seeding in test env 2026-06-21 21:08:19 +02:00
docs/superpowers/specs Brainstor 2026-03-20 23:43:25 +01:00
lib Fix dashboard preview, autoplay-on-ready, and surface ffmpeg log 2026-06-28 23:57:01 +02:00
priv Configurable audio track names per stream 2026-05-19 10:33:59 +02:00
test Fix dashboard preview, autoplay-on-ready, and surface ffmpeg log 2026-06-28 23:57:01 +02:00
.dockerignore Initial commit: Streamer - Live streaming platform 2026-03-20 23:12:57 +01:00
.env.example Initial commit: Streamer - Live streaming platform 2026-03-20 23:12:57 +01:00
.formatter.exs Initial commit: Streamer - Live streaming platform 2026-03-20 23:12:57 +01:00
.gitignore Update/clean 2026-03-20 23:43:10 +01:00
.pre-commit-config.yaml Initial commit: Streamer - Live streaming platform 2026-03-20 23:12:57 +01:00
AGENTS.md Initial commit: Streamer - Live streaming platform 2026-03-20 23:12:57 +01:00
DEPLOY.md Use SRT passphrase encryption for stream keys 2026-06-21 19:24:47 +02:00
docker-compose.yml Fix container healthcheck: install curl and add /health endpoint 2026-06-21 21:01:59 +02:00
Dockerfile Update images 2026-07-03 20:13:31 +02:00
mix.exs Add network bandwidth and CPU load monitoring to dashboard 2026-03-22 01:13:54 +01:00
mix.lock Initial commit: Streamer - Live streaming platform 2026-03-20 23:12:57 +01:00
README.md Update readme 2026-07-02 11:46:59 +02:00

Streamer

Features

  • SRT Input
  • Multimple audio streams that are correctly exposed in HLS
  • Full Encryption support
  • OBS compatible
  • Multi resolution output support with auto switching
  • Single stream at a time
  • Bandwidth & View count monitoring
    • Just visual, no history for now
  • Live message to viewers
  • Simple password protection per stream
  • Stream title, description (markdown)
  • Stream "placeholder" image
  • Web based player
  • Single admin

Wanted features

  • Recording
  • CDN Suppor with Signed URLs
    • Bunny?
    • AWS Cloudfront?
  • Better statistics per stream (not just frontend)
  • Multiple admins?
    • This one is unclear if needed, discussion required

Explicitly not wanted features

  • Multiple simultanious streams
  • Ads
  • Chat/Interactivity with watchers
    • Could be convinced to implement some kind of support/feedback system

Known issues

  • Graphs on dashboard are ... not pretty
  • Seding wrong number of audio streams causes ffmpeg crash (expected) and after a while OBS crash (not as expected)
    • This only happens at the start, once the stream works it's very stable over many days

Contributing

New features are explicitly not welcome without prior discussion with the maintainers and will be rejected out of hand.

Bug fixes are welcome. AI generated code contributions are ok but you should understand the fix and write the PR text without use of AI!

Architecture

Simple Phoenix + LiveView based server. It spawns FFMPEG listening on port 9000 and accepts SRT calls with correct encryption key.

FFMPEG does all the transcoding and packaging.

Development

To start your Phoenix server:

  • Run mix setup to install and setup dependencies
  • Start Phoenix endpoint with mix phx.server or inside IEx with iex -S mix phx.server

Now you can visit localhost:4000 from your browser.

Deployment

Docker file is provided, no images are currently provided.

AI Genererated "deploy guide" - not reviewed in any way: DEPLOY.md

TODO: More details