- Stream higher quality than free tiers of popular streaming platforms (1080p, 4K, 8K?)
- Not subject to content guidelines of other streaming platforms
- Stream Keys are your Unique ID used on the streaming server to identify your stream from another stream. I usually set this to my username, eg Alex
docker-compose up -d
Simply modify web/config.php
and then rebuild, src web && docker build -t alex4108/streammachine:web .
, then start normally
- Use OBS or similar stream software to publish a stream to the container at URL
rtmp://host_ip/live/
with any non empty stream key. - You should be able to see your stream in the "Online Streams" list in the left bar of the app
- Runs a Node-Media-Server who accepts RTMP streams.
- Runs a website (php) for users to view the streams
Configuration of the config.php file isn't required. Streams will be accepted using any stream key, and will immediately show as Online in the webapp.
To enabled additional features, such as Discord join links, the Titan widget, or to list your key in the offline streams list, you must modify the config.php configuration file and rebuild the container.
- Simply
docker-compose up -d
to bring the environment online - This will open
1935/tcp
for inbound streams. - This will open
80/tcp
via haproxy, and properly proxy requests from the outside to node media server for stream viewers. All other requests will be proxied to the php web server. - You may want to add your own proxy to terminate HTTPS connections.
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
- Cross-Site cookies are forbidden by default in the browser. This prevents the chat widget from loading.
- Video player may "bounce" in the browser. This can be resolved by zooming out
- There is an ~10 second delay between frames coming in to node-media-server and frames being retrieved by viewers.