I am pleased to announce the release of Beta 4 from Development to the master branch. As always, this update brings many changes which improve the functionality and stability of the OSP Platform.

Multiple Service Workers

OSP has expanded the number of workers from 1 to 10, allowing OSP to handle more concurrent users. Users are automatically split between the workers to improve responsiveness and stability. This change also requires that the command to stop/start/restart OSP has been moved to:

systemctl start/stop/restart osp.target

Reworking on Authentication Handling

Authentication of protected streams has been changed to use Nginx and an API endpoint to speed up the handling of those permissions.

This will require a recompile of Nginx and can be performed by running the setup script and updating of the osp-redirects.conf and nginx.conf files.

Redis for Asynchronous Processing

The use of Redis has been added as a requirement for OSP. This is due to the way multiple workers need to communicate with each other. In the standard setup script, Redis has been included in the install, but can be run on a separate system

Note: Redis is not included in the Docker image and a Redis instance will be required to be setup by the user and configured prior to OSP working. The following Docker Environment Variables have been added to support Redis:

  • 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

New Channel Management Interface

OSP’s My Channels UI has been revamped to include new functionality. You can now edit videos, clips, and other settings across all of your channels on the same page. We have also added the ability to Publish/Unpublish videos, allowing you to determine when you want a video displayed to your audience. Settings have also been added to allow a channel to no longer automatically publish a new video when it has been recorded or uploaded

Stream Card v3

Stream Cards have been changed to be more compact and uniform across the Default Theme. Stats have been moved to the edges and corners of the thumbnails

And many other changes and fixes…

We have added in the ability to have notifications displayed for channels that you follow. In addition, there have been a number of fixes to bugs which have been discovered. See the full changelog below

Full Changelog

Beta-4
==============================================
- Added Worker Services on local ports (5000-5010) for OSP Gunicorn to handle multiple concurrent users
    * Note: OSP must now be started and stopped using systemctl start/stop/restart osp.target
- Passed Authentication Validation to Nginx instead of passing through Gunicorn First.
    * Note: This will require a new recompile of Nginx by using the setup script or compiling manually as well as updating the osp-redirects.conf and nginx.conf
- Moved Async Processing to use Redis.
    * Note: New Configuration Variables have been added to the config.py file which are required.
    * Note: Redis is not included in the Docker Image and must be installed in a separate container or server for OSP to work
- Added Stream Chat Restriction of 1 Message / 2 Seconds to prevent chat spam or flooding
- Added Notifications for Various Events such as New Streams, New Videos, New Comments, Likes, etc
- Added Video, Clip, Channel, and Stream Sorting
- Added the ability to Publish and Unpublish Videos and Clips
- Added an option to Channels to Autopublish Videos (Enabled by Default)
- Added Recommended Profile Picture Resolution
- Added Switch to Enable/Disable the Channel Protection system due to the slight overhead on pulling videos and images. System default on new installs will be disabled. Existing installs will be enabled on upgrade.
- Switched from Flask Security to Flask-Security-Too
- Fixed Issue where Themes would not load properly after changing in settings, but would work on a restart
- Reformated Display Cards to v3
- Reworked User Channel Screen
- Added Per Channel Video Control from the User Channel Screen
- Fixed issue where Defaultv2-Dark's Popout Chat retained the Defaultv2-Light's theme
- Moved Gunicorn Logs to /opt/osp/logs
- Updated Flask-SocketIO to 4.2.1
- Fixed Issue where Channel Subscriptions were not being restored from backups
- Fixed Variables causing Type Confusion
- Fixed Issue where Video and Clip Thumbnails were being generated based on the current video player timestamp, instead of the timestamp of the last captured screenshot
- Movement of References to Prevent Calls before they are Referenced
- Fixed Issue where Creating a Channel via APIv1 caused an error
- Fixed an issue where Video Comments may cause an error preventing the video from being viewable

Conclusion

We have been humbled by the OSP community and appreciate everyone who has dropped in to the Discord channel giving suggestions, providing to support to others, and giving their appreciation.

Up next will be Beta 5 where we will be continuing our polish and adding a few more features before we hit the big version release 1.0.

You can find more information on the Open Streaming Platform at https://openstreamingplatform.com. We also accept contributions at https://openstreamingplatform.com/contribute which helps us keep the demo site and the main site up.

Thank you again and we look forward to kicking out the next version for you all.

Good Morning! I am proud to announce the release of Beta 3 of OSP.

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.

This version includes many improvements from the community:

  • Added Implemented Video Clips – Set markers for videos to display only a section of a video you want to share.
Post image
  • Added Streamer Biographies, Server MOTDs, and Markdown Support
Post image
  • Added Mail Settings Testing on First Run and Admin Settings Pages
  • Added the Option to Set a Default Stream Name instead of Timestamp
  • Added the Ability to set a Custom Invite Code
  • Added RTMP Stats endpoint in the nginx.conf file and Display the information in the Admin Dashboard
  • Added Open Graph Metadata to the Video, Stream, and Clip pages
Post image
  • Added the Option for Channel Owners to Disable the Chat Joining/Leaving Notification
  • Added Global Webhooks
  • Added Theme Override Options for Theme Developers who want to just create a custom CSS file without needing to maintain a full theme file set
  • Added Checks for the Server Address IP/DNS Settings in the Admin Menu
  • Added Thumbnail location for Streams to APIv1
  • Added Support for OSP Site-wide Search
Post image
  • Added Favicons
  • Added Email Channel Subscriptions. Be notified when a Stream is Live or a new Video is posted.
  • Added On Hover Animation for Link images for most pages in Defaultv2
  • Added a new configuration variable in the Admin Settings to specify if the site is being served by http or https
  • Added Server Admin logs for Events and framework for adding additional log entries in the future
  • Fixed Method for determining current viewers of a Live Stream, making the value more accurate
  • Upgraded FFMPEG to 4.2 as default for OSP Installs
  • Reworked the Nginx.conf file to split off the OSP specific into their own included osp-*.conf files to reduce the need of reworking the single file
  • Added HTTP2 Support to the default install of OSP. Upgrading Users should run the Manual Install Procedures to Upgrade their Nginx systems to the most recent build to add support
  • Reworked Admin Pages to Return the the last Tab on Settings Changes
  • Changed the First Run Page to allow for Restore of Backup Files without needing to do a dummy setup first
  • Fixed TextArea MaxLength Restrictions to match database restrictions
  • Fixed a Dropzone error which was displaying on the Defaultv2 and Defaultv2 Themes
  • Fixed Chatboxes from using Autocomplete
  • Fixed Some instances of Videos not showing their Protected Status when in “Other Videos”
  • Fixed an issue which caused adaptive streaming to not stream in 1080p
  • Moved the “Allow Users to Register” and “Required Email Validation Settings” Options to the config.py file due to issues with Flask-Security not adhering to the settings
  • Fixed Issues with how Docker was handling Volumes and Mounts, causing configuration files to disappear and crashing OSP
  • Fixed Sizing and Positioning of Chat Popouts to allow for variable viewport sizes
  • Fixed an issue where changing of a user’s email address would cause a 500 Error
  • Fixed Issues where Backups were not restoring properly on Debian
  • Fixed an Issue where Users would receive an unpacked variables error on email sending
  • Fixed an Issue where emails would send as noreply@localhost instead of the set value
  • Reduced the Delay for Chat User Listings from 30s to 5s
  • DB Improvements to prevent orphaned entries
  • Changed Topics page to sort by Name

Unfortunately, due to issues in the planned Open Streaming Hub feature, it has been delayed to Beta 4 to provide time for us to focus on correctly slowdowns and ensuring security of the service.

Again, thanks to the folks over in the Discord Channel for their help testing out Beta 3 and providing suggestions on many of these features as well as the co-developer M00 for his work on this release!

You can get the new release via the OSP Gitlab Page or the Official OSP Website, or check out the Demo server at OSP Test Site

Good Evening! We’ve been hard at work putting together what will be the 3rd Beta release for Open Streaming Platform. Much like the Beta 2 release this will be full of new features and bug fixes! While there is no release date set, I wanted to cover some of the best upcoming changes below:

Video Clips

You can now set a start and stop time to create shareable video clips. Clips are useful when you want to highlight a specific section of a video without having to seek through a video.

Streamer Bio Info, Server MOTD, and Markdown Support

It is now possible to set a server MOTD, have your streamers post biography info, and use Markdown for channel & video descriptions, as well as the above mentioned Biography and MOTD pages

Open Graph Metadata Support

OSP now supports the Open Graph standard, displaying rich media along with link information on supported Social Media sites

OSP Site-wide Search

Easily search an OSP site for Channels, Videos, Streams, Streamers, and Clips using the site-wide search function.

Other Changes

The above list is not all that is coming. We are looking to finalize the OSP Hub system to share soon and are aiming for initial support in Beta 3. Also, we’ve incorporated many fixes and other features requested by everyone. Below are the changes already added into Beta 3:

- Added Implemented Video Clips - Set markers for videos to display only a section of a video you want to share.
- Added Streamer Biographies
- Added Server MOTD on main page
- Added Markdown Support for all Text Area type fields
- Added Mail Settings Testing on First Run and Admin Settings Pages
- Added the Option to Set a Default Stream Name instead of Timestamp
- Added the Ability to set a Custom Invite Code
- Added RTMP Stats endpoint in the nginx.conf file and Display the information in the Admin Dashboard
- Added Open Graph Metadata to the Video, Stream, and Clip pages
- Added the Option for Channel Owners to Disable the Chat Joining/Leaving Notification
- Added Global Webhooks
- Added Theme Override Options for Theme Developers who want to just create a custom CSS file without needing to maintain a full theme file set
- Added Checks for the Server Address IP/DNS Settings in the Admin Menu
- Added Thumbnail location for Streams to APIv1
- Added Initial Support for the Open Streaming Platform Hub, a listing service for OSP Instances that want to Opt-in to display their Channels, Videos, Streams, and Clips in one place
- Added Support for OSP Site-wide Search
- Added Favicons
- Added On Hover Animation for Link images for most pages in Defaultv2
- Fixed Method for determining current viewers of a Live Stream, making the value more accurate
- Reworked the Nginx.conf file to split off the OSP specific into their own included osp-*.conf files to reduce the need of reworking the single file
- Added HTTP2 Support to the default install of OSP.  Upgrading Users should run the Manual Install Procedures to Upgrade their Nginx systems to the most recent build to add support
- Reworked Admin Pages to Return the the last Tab on Settings Changes
- Changed the First Run Page to allow for Restore of Backup Files without needing to do a dummy setup first
- Fixed TextArea MaxLength Restrictions to match database restrictions
- Fixed a Dropzone error which was displaying on the Defaultv2 and Defaultv2 Themes
- Fixed Chatboxes from using Autocomplete
- Fixed Some instances of Videos not showing their Protected Status when in "Other Videos"
- Fixed an issue which caused adaptive streaming to not stream in 1080p
- Moved the "Allow Users to Register" and "Required Email Validation Settings" Options to the config.py file due to issues with Flask-Security not adhering to the settings
- Fixed Issues with how Docker was handling Volumes and Mounts, causing configuration files to disappear and crashing OSP
- Fixed Sizing and Positioning of Chat Popouts to allow for variable viewport sizes
- Fixed an issue where changing of a user's email address would cause a 500 Error
- Reduced the Delay for Chat User Listings from 30s to 5s
- DB Improvements to prevent orphaned entries

I look forward to sharing more info on Beta 3 soon, as well as more information what OSP Hub is and how it works!

Good evening! Since the release of Beta 1, I’ve been hard at work building the next version of OSP. One of the major themes of this version is cleaning up some of the issues from Beta 1 and adding some polish to the system. As part of that polishing, we will be including a new Default UI. This UI aims to be much simpler and clean.


In addition, I’ve included a few concept pictures of what the Video Player and Live Channel Pages will look like:

While the final result may not look exactly like the above pictures, it is representative of the direction I am heading with the design.

This rework will also simplify the templates making it easier for other to build their own themes.

Finally, I had added a few additional changes, which include the following:

  • Added the option to not require email validation on new users
  • Added the ability to change the Top Header Icon to your own custom image
  • Added the ability to move a recorded video from one channel to another

This is not a comprehensive list and there will be additional features to come with Beta 2.

Good evening!

While I know I have been pretty silent here on the blog, between life and work I have been busy jamming away on OSP’s Beta 1 release.

Here is a preview of some of the things coming, based on the feedback of the issue contributors on Gitlab.

Server and Channel Viewing Statistics

Many have asked for a method to see over time how they can see viewing trends for their videos and live streams. With Beta 1, basic server wide and channel wide stats will now be available for you to see when people have viewed your server or your channels.

Admin Server Stats
Per Channel Viewing Stats

Updated Admin Interface to Work Better on Mobile

As you can probably see in the last feature, the Admin Interface has been updated to better handle being managed or viewed on a Mobile Phone or Tablet

Adaptive Streaming

Some work has been done behind the scenes to finally allow for adaptive streaming. Adaptive streaming allows users who have lower bandwidth than the live streaming quality to be able to view the stream. Server Administrators can enable Adaptive Streaming for their entire sites. Streams will be transcoded to allow for videos to be watched at 1080p, 720p, or 480p. However, this will cause a high cpu load and for instances of OSP that are running on slower hardware or cheap VPS’s, it is recommended to leave Adaptive Streaming off.

Redesigned User Channel Page and Chat Themes

The user channel page has been to work with mobile devices as well. Furthermore, we have incorporated the ability to have different chat themes (Backgrounds, Animations, and Text Colors). These themes can be set on a per-channel basis so each can be unique.

Channel Descriptions, Video Descriptions, and Comments

With Beta 1, we are adding the ability to set a description on a per channel and per Recorded video basis. Also, recorded videos can now have comments added to them by users. The ability to enable comments can set on the entire OSP instance and on a per video basis. In addition, channel owners and admins can moderate comments.

Long Video Descriptions
Recorded Video Comments

Server Wide Theme Support

Beta 1 will be the first version to support full user custom themes. With the release of Beta 1, we will include a base theme template that will act as a base for themes you can customize and run on your own site.

More to Come!

OSP Beta 1 is not finished yet and there will still be a few more features to come before release:

  • Event Hooks: Perform an outbound webhook api call on Live Stream Start/End and other events
  • Upvoting of Video Comments
  • Password / Authorized User Only viewing of channel videos and streams

Thank you to everyone who have supported the OSP project and I encourage everyone to try out the Development build and provide feedback and suggestions. In addition, we now have a Discord channel available and a Subreddit to find others running OSP or if you need any assistance setting up or running the system. Finally, I also have been slowly working on an official website for OSP at https://openstreamingplatform.com. If you would like to support the project, I am always looking for someone to assist in the site development or contributing to the OSP project.

Thanks again!

Good Morning Everyone,

After a fair amount of feedback regarding OSP running on Python 2.7, I’ve moved the code to run on Python 3 and incremented the version to Alpha 4.

https://gitlab.com/Deamos/flask-nginx-rtmp-manager

Anyone who tried out Alpha 3 and want to upgrade to Alpha 4 will need to run an update script which was added to the /opt/osp/setup/other directory.

Again, thank you for the feedback and if you would like to see something added/changed/fixed, please let me know via the Gitlab page.

With the Holidays coming up, the time I’ve had to work on OSP has been a bit reduced. However, I have had the opportunity to add a few new useful features.


Migration from HLS.js to Video.js

Changed the Sorting of Videos to Newest to Oldest

Added an Argument for all Videos/Streams for Embedding Layout and Auto-play

  • Enabled by adding arguments to Videos and Streams
    • embedded=(True/False)
    • autoplay=(True/False)

Added Social Sharing to Facebook / Twitter or via Embedded iFrame or Link


I plan on adding a few more features after the new year. There has been some interesting in providing a Dockerfile for container-based deployment. In addition, I am looking at adding html5 based subscriptions and authenticated API functions for channel owners.

Finally, I am still looking to get a new logo for OSP. If anyone is artisitically inclined and would like to submit a logo, please contact me here in a comment or on the OSP Gitlab Page.

I’ve been working to add a few important features for Alpha 3.  These additions should help with quality of life and future plans.

First, I have added in the ability to set Likes for Streams and Recorded Videos.  The framework is also in place for Likes for Channels, but will be implemented in the future.

In addition, I have also created the ability to set the current recorded video Thumbnail.  You can do so by clicking on the camera icon in the Video Information Panel when you are the video owner.  I hope to add the ability to let you preview this thumbnail prior to saving it, but it may also take some time and may not be until Beta 1.

Finally, I have added a Public side API.  The API can be reached from the following locations:

  • /api/v1/channels/ – Lists all Channels on the server
  • /api/v1/streams/ – Lists all Streams on the server
  • /api/v1/vids/ – Lists all Recorded Videos
  • /api/v1/topics/ – Lists all Topics

For all Public API Endpoints listed above, you can add a specific ID to show information for one entry, based on the ID

  • ex: /api/v1/vids/14 – Will show just the information for the Video with ID #14

It has been a bit since I’ve done and update, but I’d like to note that I have completed and released what would essentially be Alpha 2. Here are some notable changes:

  • Refactored code to separate all classes out of the main app.py file
  • Created a Streamer Role which allows the Server Admin to Define who has the rights to Stream.
  • Added a “Streamers” page showing all Streamer Users which have rights.
  • Users now have the ability to reset their passwords
  • Mobile View has been formatted to look better on Login Screens
  • Admins can now setup the SMTP settings with blank usernames and passwords, if their SMTP server allows it
  • Basic Admin Page Functionality has been completed, more coming in future Alpha releases.

More will be coming as I have time to work on the next Alpha release.  I am planning on adding a subscription system, as well as a public and private API.  If you have any features you would like to see, please let me know.

You can pull the current release from https://gitlab.com/Deamos/flask-nginx-rtmp-manager

Much work has been put in lately and I believe that 90% of the functionality is now complete.  While I am not ready to call for an official Alpha release yet, I have deployed a low quality “Alpha” out to the web at http://osptest.divby0.net.

Some of the most recent changes:

  • Topics Page is now working
  • Chat has been stylized and animations added
  • Custom Channel Topics have been added and allow for custom images to represent them