Live Streaming

Streams archive, new player and GPU-based transcoding 

Image credit: freepik

In the past months PUSHR's Media Platform received a number of significant updates and in this blog post we want to share the most important of them. Media Platform is PUSHR's live streaming service which includes stream ingestion, realtime transcoding to adaptive bitrate HLS and smooth delivery of the live feed to any device, anywhere. With the great amount of feedback that we've been receiving from our customers we've been hard at work to add new features and to improve both the quality and the performance of the service.

The transition to GPU transcoding and building PUSHR's GPU-based encoding cloud

Until recently, Media Platform's transcoding module was based on a fleet of servers which would transcode live streams entirely in CPU. Transcoding, which is the process of creating multiple resolutions with multiple bitrates and qualities, is a very compute-intensive task. A high resolution stream that needs to be transcoded to the full set of  resolutions (360p, 480p, 576p, 720p and 1080p) in real time would easily get very near the limits of the CPU, effectively occupying an entire server. This meant that we should always have a large number of free physical servers waiting on stand-by in order to allow new streams to be created when customers needed them. Apart from the financial burden which would translate into higher streaming costs for our customers, this approach was very hard to scale as it would require new servers to be installed and provisioned without any delays - something that was not always possible. We started experimenting with more powerful CPUs, especially AMD's Ryzen and even Epyc, but soon enough we found that the efficiency of our transcoding processes actually drops as more cores are added. We could still benefit from the higher clock speeds of the CPUs, but we would not really be fixing the scalability issue. We started experimenting with servers that had GPUs and really liked the results of our first tests with Nvidia graphic cards. Unfortunately, Nvidia had a soft lock on their non-datacenter grade units which would limit us to two simultaneous streams only. There were also some specific licensing restrictions for datacenter use of their products which would translate into very high operational cost and, again, higher prices that our customers would need to pay per stream. Thankfully, a large number of easy to source Intel-based servers nowadays come with built in GPUs and with Intel's QuickSync technology. There are no special licensing terms and even the most basic GPU units showed very promising results. We started testing and right away decided that this will be the hardware behind our new transcoding module. Intel's QuickSync was very fast and in some situations we were seeing more than 1000FPS (frames per second) of transcoding speed per unit. The quality of the transcoded streams was better than both Nvidia and our CPU-based setup, and having great quality did not require the use of too high bitrates. We started building our transcoding cloud based on these new GPUs and at the time of writing this blog post Media Platform's total processing power is at almost 16500 frames per second. Scalability, which was now a lot easier also made it possible for us to switch from monthly billing for streams to hourly billing. As a result, PUSHR's Media Platform is currently among the most cost efficient one-to-many streaming solutions on the market, with prices up to 25x lower than the competition.

DVR, stream recording and the Streams Archive for instant video-on-demand production

Media Platform Streams Archive feature
Streams Archive dashboard

With the highly valuable feedback from our users we had (and continue to have) a lot of features planned and coming to Media Platform. One of them was requested very often and would help with our customers' video workflow automation: the ability to record and produce video-on-demand versions of a broadcast as soon as it has ended. That is how the Streams Archive was born. Streams Archive automatically records your live streams in the same number of adaptive bitrate HLS resolutions, and also takes still images of the stream. The resulting video-on-demand version of the stream is then uploaded to PUSHR SFS storage automatically, where it is ready for playback via our edge network just seconds after the live broadcast ends. In the customer's account dashboard, Stream Archive neatly organizes all recordings and provides information about their length and airing time. A still frame from the stream is automatically applied as a poster image for the player, and the option to change the title of the recording and its poster are also available, with many more features on the way. Just like the live stream itself, the video-on-demand version comes with copy/paste embedding codes, direct link to the HLS manifest file for use in third party players, and oEmbed support for easy publishing in content management systems that use the format.  With these new features, PUSHR's Media Platform brings workflow efficiency and cost savings to a new level and allows our users to produce and deliver more video content in less time, at a reduced cost.

The switch to Clappr video player

Clappr player on PUSHR Media Platform
Image courtesy of ukcolumn.org

Since the inception of Media Platform we've been offering our own player to our users. It was minimalistic, light and beautiful, based on the Afterglow player, which itself was based on the VideoJS project. Afterglow was thought out as a replacement for another defunct project, Sublime Video. With enough hands-on experience with VideoJS, we were happy to use Afterglow and were able to add new features to it easily. Unfortunately, Afterglow didn't manage to gain traction among the open source community and eventually the project started lacking behind in updates and development. With the growing number of features that our users were requesting, we had to find a solution that is popular and well tested, and would allow us to build plugins easily, while also having enough plugins already available for the most requested features. Commercial solutions did not seem to be the right way to go as development would be harder, and new features, as well as bug fixes would have to come from the developer, which would not be ideal. We looked at a great project named Plyr, and liked it a lot, but for some reason it was having issues with live HLS video playback. We then decided to go with Clappr, another great open source project with a large and helpful community, that has great performance and is easy to customize.  Clappr is currently the default player in all embed codes provided by Media Platform and we've been doing incremental changes and customizations to it to make sure that it is better adapted to live streaming, especially on mobile. Thanks to Clappr, we've been able to respond fast to new feature requests, from the ability to change video playback speed and resolution, down to how and when the player should hand over controls for inline playback on mobile devices for the best possible playback performance. With Clappr, PUSHR's Media Platform moves towards becoming a mobile-first live streaming solution, with special attention to live content consumption on the go and across SmartTV and STB platforms.

 

We're constantly working on new features and can't wait to have the chance to share updates with you as they come. Stay tuned!

Comments