Zomstream is a web frontend for streaming video. We wrote it as we needed a overview of the running streams on our nginx-rtmp Server.
It is written in python and based on the flask microframework and does not need any databases or other external Services. It does not store any persistent data and its only configuration are some parameters in the docker compose file and a simple configuration file for the webfrontend.
This repository does contain all needed components for a "streaming server in a box" Setup.
- We are using the hls.js library (https://github.com/video-dev/hls.js/) for our webplayer
- The Included Streaming Server is based on nginx (https://nginx.org) with the nginx rtmp patches (https://github.com/arut/nginx-rtmp-module)
Zomstream is a multiple container setup which should be setup using docker-compose. It consists of the following components.
nginx webserver with rtmp patches.
this does run the actual streaming, receives rtmp streams from OBS / ffmpeg etc. and provides the streams in hls or dash format for web based players.
this is a simple PSK based authentication module to provide authentication for source connections.
this components provides the visible website containing a overview of the running streams, rtmp links for external players and a web based video player to watch the livestreams.
We tested this with OBS and ffmpeg but any steaming source supporting rtmp should work just fine.
With ffmpeg:
ffmpeg -re -f lavfi -i testsrc -c:v libx264 -b:v 160k -preset ultrafast -b:a 90k -c:a libfdk_aac -b:a 12k -s 1920x1080 -x264opts keyint=50 -g 25 -pix_fmt yuv420p -f flv "rtmp://yourserver.com/live/yourstreamname?pass=12345678"
- clone the repository
- copy the file
frontend/config.example.yml
tofrontend/config.yml
- modify this configuration file (especially the parameters
rtmp_base
,base_url
andweb_proto
) - copy the
docker-compose.default.yml
todocker-compose.yml
- uncomment the traefik parameters or the port forward of port 8080 of the webserver depending on your setup
- set the PSK stream password in the
password
environment variable of theauth
container.
- run
docker-compose up -d
to build and start the containers
- Go to "Settings" -> "Stream"
- Set the "Stream Type" to "Custom Streaming Server"
- enter your Hostname or IP and the Service "live" in the URL Field
- example:
rtmp://127.0.0.1/live
- example:
- Enter your desired Streamname and the Authentication Information for the auth container in the "Stream Key" field
- example:
stream?pass=password1234
- example: