Open Streaming Platform (OSP) is an open-source, RTMP streamer software front-end for Arut's NGINX RTMP Module. OSP was designed a self-hosted alternative to services like Twitch.tv, Ustream.tv, and Youtube Live. OSP is still considered Beta and is not complete
Features
RTMP Streaming from an input source like Open Broadcast Software (OBS).
Multiple Channels per User, allowing a single user to broadcast multiple streams at the same time without needing muiltiple accounts.
Video Stream Recording and On-Demand Playback.
Per Channel Real-Time Chat for Video Streams.
Manual Video Uploading of MP4s that are sourced outside of OSP
Real-Time Chat Moderation by Channel Owners (Banning/Unbanning)
Admin Controlled Adaptive Streaming
Protected Streams to allow access only to the audience you want.
Live Channels - Keep chatting and hang out when a stream isn't on
Webhooks - Connect OSP to other services via fully customizable HTTP requests which will pass information
Embed your stream or video directly into another web page easily
Share channels or videos via Facebook or Twitter quickly
Ability to Customize the UI as a Theme for your own personal look
Planned Features
Connect to the Open Streaming Platform Hub, an upcoming central service showing all videos, streams, and creators who opt-in to participate and connect their OSP Servers.
Tech
Open Streaming Platform uses a number of open source projects to work properly:
[Python 3]
[Gunicorn] - Python WSGI HTTP Server, Acts as a Reverse Proxy for Flask
[Flask] - Microframework for Python based on Werkzeug & Jinja 2
[Flask SQL-Alchemy] - Provide the Database for OSP
[Flask Security] - Handle User Accounts, Login, and Registration
[Flask Uploads] - Manage User Uploads, such as Pictures
[Flask-RestPlus] - Handling and Documentation of the OSP API
[Bootstrap] - For Building responsive, mobile-first projects on the web
[Bootstrap-Toggle] - Used to Build Toggle Buttons with Bootstrap
[NGINX] - Open-Source, high-performance HTTP server and reverse proxy
[NGINX-RTMP-Module] - NGINX Module for RTMP/HLS/MPEG-DASH live streaming
[Socket.io] - Real-Time Communications Engine Between Client and Server
[Flask Socket.io] - Interface Socket.io with Flask
[Video.js] - Handles the HTML5 Video Playback of HLS video streams and MP4 Files
[Font Awesome] - Interface Icons and Such
[Animista] - Awesome CSS Animation Generator
And OSP itself is open source with a public repository on Gitlab.
Docker Info
Due to the way NginX, Gunicorn, Flask, and Docker work, for OSP to work properly, the Frontend must be exposed using Port 80 or 443 and the RTSP port from OBS or other streaming software must be exposed on Port 1935.
This accomplished easily by using a reverse proxy in Docker such as Traefik. However, Port 1935 will not be proxied and must be mapped to the same port on the host.
A Redis Instance is required for Beta 4 and above.
Environment Variables
REDIS_HOST: Sets the Redis Instance IP/Hostname (REQUIRED)
REDIS_PORT: Sets the Redis Instance Port
Default: 6379
REDIS_PASSWORD: Sets the Redis Instance Password, if needed
DB_URL: Sets the SQLAlchemy URL String for the used DB.