March 31, 2018

The State of Streaming Protocols - 2018 Q1

Softvelum team continues analyzing the state of streaming protocols. It's based on stats from WMSPanel reporting service which handles data from Wowza Streaming Engine and Nimble Streamer servers - there were 3600+ servers on average this quarter. WMSPanel collected data about more than 12 billion views.

Let's take a look at the chart and numbers of this quarter:

The State of Streaming Protocols - 2018 Q1

You can see significant increase of HLS to 65% share while other top competitors went lower.

Another interesting fact is the increase of SLDP - Q1 had more views than the year of 2017 combined.

You can compare that to the picture of 2017 protocols landscape:

March 28, 2018

Fallback for SLDP old iPhone browsers playback

As you know, SLDP low latency protocol is currently supported in MSE-enabled and MMS-powered web browsers for Windows, MacOS, Linux, Android and latest iOS, using our freeware web SLDP Player.

Old iPhones browsers running iOS versions before iOS17 don't support neither MSE nor MMS so if a viewer opens SLDP web player, it will not be able to play. However, we have Larix Player for iOS which supports full capabilities of SLDP protocol and also allows playing RTMP and Icecast.

Current SLDP HTML5 web player supports fallback capability which allows easily map web and iOS player. You can use default fallback scenario or you can set up custom fallback.

Default fallback

So if the browser is opened on iOS, it works like this:
  1. Viewer opens page with SLDP web player.
  2. When user clicks to play the stream, the browser asks the user to open it in Larix Player free app.
  3. If the application is installed and viewer selects to play, then Larix Player app is opened and the playback starts.
  4. Besides asking for opening the app, a viewer will see a link to download the app in AppStore - it will remain on the player. So if the app is not installed, a viewer will see the download link instead of playback.

Custom fallback

If you decided to use our player mobile SDK to build your own custom app, you may set your web player to open it instead of default SLDP Player.

We've added a few parameters to set this behavior in addition to available parameters described on web SLDP player page.

  • ios_failback_app_url - SLDP iOS fallback application URL. By default it's SLDP Player but you may specify any URL for AppStore app.
  • ios_failback_scheme - fallback scheme for non-secure connection (ws://). By default, it's 'sldp'. So if your web player has URL like ws://server.address/app/stream , it will be opened in your SLDP app like sldp://server.address/app/stream
  • ios_failback_secure_scheme - fallback scheme for secure connection (wss://), by default, it's 'sldps'. It works the same way as iso_failback_scheme parameter.

Having those parameters you may customize fallback behavior.

Related documentation

SLDP , Synchronized playback on iOS with SLDPPlayback solutionsSLDP setup in Nimble Streamer, Server-side ads insertion for SLDP,

March 26, 2018

Nimble Advertizer inserts video ads into RTMP and SLDP

Softvelum introduces Nimble Advertizer, the Server-Side Ads Insertion (SSAI) framework for Nimble Streamer. This framework allows dynamically insert personalized ads into live streaming content.

Advertizer key features are:
  • Pre-roll ads per each connection
  • Flexible timing setup for mid-roll ads
  • Per-stream ads insertion business logic
  • Personalized ads
We're glad to announce that we've added support for RTMP and SLDP output protocols in addition to previously added Icecast.

Nimble Advertizer may use all input live protocols supported by Nimble Streamer, they are Icecast and SHOUTcastRTMPRTSPSRTHLS and MPEG2TS.

Live input codec for live stream for ads insertion needs to be H.264. Notice that with our Live Transcoder you may also use other live codecs.

For your ads source files you need to use H.264 codec, the container needs to be the MP4 file.

As mentioned previously, output live stream protocols are RTMP and SLDP - both protocols are used for live low latency live streaming.

The workflow is easy to adopt within any business logic:
  1. Nimble Streamer media server processes incoming streams to get audio content
  2. Nimble Advertizer calls your handler web application to get business logic description
  3. Advertizer gets files with advertisements to process them via Nimble Streamer according to your logic defined via handler
  4. Nimble inserts the ads into original media and packages it into Icecast protocol
  5. End user connects to Nimble and gets audio stream containing original content mixed with advertisements
  6. Playback is running smooth regardless of ads insertion over time in any player which supports Icecast.
You can read full technical spec here.

Server-side Ads Insertion framework (Nimble Advertizer) is a premium functionality which requires additional payments. Please check this page to get more details about functionality and pricing.

Take a look at this tutorial showing an easy way to insert pre-rolls into live streams:

March 23, 2018

NVENC shared context usage

Our Live Transcoder has full support for NVidia GPU decoding and encoding. As you could see from our stress-test article and EC2 tests, Nimble works very good with NVENC.

Usually customers perform decoding and encoding of a relatively small number of streams for input and output and it doesn't affect the performance of neither GPU, nor CPU. However there are cases when our customers use full power of hardware acceleration to process dozens of streams. In this case, some additional performance tuning should be done.

Nimble Live Transcoder allows re-using shared context to optimize resource usage. You may enable it by adding nvenc_context_share_enable parameter into Nimble Streamer config (nimble.conf).
nvenc_context_share_enable = true
nvenc_context_share_lock_enable = true
The second parameter above, nvenc_context_share_lock_enable, will prevent the errors related to NVENC decoding.

Nimble config control is described in this article.

Adding those parameter will enable NVENC context share which will increase the performance of Live Transcoder on high load and reduce number of NVENC-related issue.

If you'd like to manually create context cache, you may follow this article.
You may also find useful our Nimble Streamer performance tuning guide as well as Transcoder troubleshooting tips.

Feel free to visit Live Transcoder webpage for other transcoding features description and contact us if you have any question.

Zabbix monitoring of Nimble Streamer allows tracking server status, SRT streams and NVidia GPU status.

Contact us if you have any other questions or issues with Live Transcoder.

Related documentation

Live Transcoder for Nimble StreamerNVidia GPU supportHEVC support in Nimble StreamerLive Streaming features, Using Amazon EC2 for HEVC transcoding, Nimble Streamer performance tuning.

March 5, 2018

SRT for mobile streaming on Android and iOS

SRT (Secure Reliable Transport) is a UDP-based protocol that optimizes streaming performance on unreliable networks to deliver the best quality and lowest latency video at all times. The initial version was created by Haivision and now it's available as open source and it's maintained and promoted by SRT Alliance.

Softvelum products have full support for SRT technology. Nimble Streamer was the first software media server to support SRT protocol in all of its modes. Our customers actively use SRT for heavy duty projects which need media transmission across large networks across continents. Recent blog post called Reliable Low Latency Delivery with SRT+SLDP demonstrates SRT capabilities in action using the great combination of Haivision encoders and Nimble Streamer media server. Softvelum and Haivision partner to offer you reliable, low latency video streaming over the public internet with SRT.

Mobile SRT streaming

Having SRT working perfectly on server side, we now introduce SRT streaming for

Larix Broadcaster now allows streaming via SRT in Push (Caller) mode. It supports all of its features including compensating for jitter by errors correction, AES encryption and more.
This is now available in addition to existing features such as

  • RTMP and RTSP streaming support.
  • Multiple simultaneous destinations for the same stream.
  • Full support for YouTube, Facebook Live, Twitch, Limelight CDN, Periscope and other services.

So you may have your own CDN taking SRT input stream and also send content to Limelight and Facebook - this all can be done simultaneously using the same application.

You can try that in action using Larix Broadcaster freeware app which demonstrates all features of our streaming library. App sources are included in the SDK package so you can easily create your own apps.

Check these links:

You can also refer to these screenshots as example of SRT setup in Larix, it's very simple.

Go to Setting dialog (the gear icon) then click on Connections and create new connection to see this dialog.

First you define your destination URL - it will start with "srt://" and will include the server address and the port which was set up to receive SRT.
If you use encryption, you can fill in SRT passphrase field.

If you need to set more options for your SRT connection, you need to save settings, then go to Manage connections menu and click on its details to see more.

We highly recommend you to set up "maxbw" and "latency" SRT parameters for your connection. This will allow optimizing the packets re-transmission and reducing bandwidth consumption. Read this article for details.

When you have your connections ready to go, check those which you'd like to send your streams to as shown below.

Once you start transmission, you will have your stream being sent to multiple locations.

Also take a look at this video demonstrating some example of SRT streaming.

Glass-to-glass SRT delivery setup article describes how to deliver live stream via SRT using Nimble Streamer, Larix Broadcaster and SLDP Player.

You can also watch How to connect your phone to a live video production with SRT and Larix Broadcaster video by vMix team which demonstrates how you can steam from Larix to vMix via SRT. Our YouTube channel has other useful setup videos.

That's it. With those capabilities you can now have full power of SRT being applied to mobile streaming use cases.

Nimble Streamer SRT setup

Nimble Streamer media servers supports SRT protocol in all modes.
To use SRT with Nimble Streamer, you need to do the following:
This will allow you using full power of SRT in your mobile streaming scenarios.

If you have any issues with setting up SRT, please contact our helpdesk so we could help you.

Also please visit our Larix documentation reference page for more setup information.

This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (

Follow us in social media to get updates about our new features and products: YouTubeTwitterFacebookLinkedInRedditTelegram

Related documentation

Nimble StreamerNimble Streamer SRT protocol supportLarix mobile streaming SDK,  Larix SDK FAQLarix BroadcasterLarix documentation referenceSRT in other Softvelum products