January 12, 2022

Server playlist support for live steams input

Server playlist feature set for Nimble Streamer was introduced to provide capabilities to create output live streams from a set of VOD files.

Now Server playlist got a couple of more features to improve it:

  • take live streams as input for playlist entries;
  • define default streams in case current playlist entry is not available.

Notice that new features do not change the playlist's basic principles and mechanics. They add new parameters as we describe below. So before reading about the updates, please get familiar with these materials:

Let's see what we've got.

Live streams input

You can specify any available live streams. So no matter where your live stream is coming from - RTMP, SRT input or a stream from Nimble Transcoder - you can use it as your source.

You need to prepare your content for playlist input and also additionally transcode it afterwards as we describe in section 2 "Preparing content" of Server playlist spec.

The semantics of live stream input is similar to VOD input: it's inserted among other entries in "Streams" block having "Type" parameter set to "live" as shown below.

  "SyncInterval": 5000,
      "Stream": "live/playlist",
      "Blocks": [
          "Id":"1", "Start":"2022-01-17 08:00:00",
              "Type":"vod", "Source":"/var/mp4/sample.mp4", "Duration":20000"
              "Type":"live", "Source":"live/stream", 

The following parameters can be used for live stream entry:

  • Source - input stream name, defined as "application_name/stream_name" as seen in output streams at Nimble Streamer live streams page.
  • Duration - the duration of the current stream.
  • TotalDuration is also supported but it means the same as Duration. If both parameters are set, the one with the smallest value will be used.

Default streams

If the current live stream which is supposed to be playing now, is unavailable for some reason, you may specify a default stream which will be played instead. A DefaultStream parameter can be defined on a block level as shown below.

  "SyncInterval": 5000,
      "Stream": "live/playlist",
      "Blocks": [
          "Id":"1", "Start":"
2022-01-17 08:00:00",
          "DefaultStream": {
            "Source": "live/default"

              "Type":"live", "Source":"live/stream"
              "Type":"vod", "Source":"/var/mp4/sample.mp4", "Duration":20000

This default stream may have "Type" parameter be either "live" or "vod". The "Source" defines where the content is taken from, see server playlist spec for details.

For VOD mode, it also supports "AudioStreamId" and "VideoStreamId" parameters to select a respective track if a VOD file has several tracks.

Playlist Generator

You can use our Playlist Generator to create a simple playlist using our UI wizard

Let us know if you have any further feedback regarding the server playlist.

Related documentation

Server playlistGenerate NDI stream from local files via Server PlaylistWeb UI for Server Playlist

December 29, 2021

2021 summary: Nimble Streamer, WMSPanel, mobile SDK and more

Holiday greetings from Softvelum!

The year of 2021 has passed by and it's time to overview what our team has accomplished and what you might find interesting for your business.

But first, we're glad to recall that Softvelum became the finalist of 2021 Streaming Media European Readers' Choice Awards in Hardware/software Server category with our Nimble Streamer media server. Thanks to everyone who voted for us!

We've made a number of big and small adjustments, you might have seen them in our announcements in social media.
Here are the most notable updates.

WMSPanel: improved billing, cloud backup and more

WMSPanel cloud-based service was adjusted this year to make sure our customers can control their streaming infrastructure more conveniently and safely.

Improvements in billing mechanics of WMSPanel now allow combining billing for WMSPanel, Transcoder and Addenda licenses into single charges. The ability to receive up-front payments was updated per users' feedback to make it even more flexible. We've also supported PayPro Global - the second gateway so you could have an alternative destination for making payments.

Nimble Cloud Backup is another significant WMSPanel feature we introduced this year.
You can save streaming configs of your Nimble Streamer instances into our distributed cloud database to improve redundancy. Then if you need to get back to some version of their cloud backup, you can restore it within WMSPanel account as a new server instance. Learn more about Cloud Backups and try it in action.

Cloud technology users are always concerned with security. Take a look at our latest Secure your account in 3 easy steps article showing how you can use users management, two-factor authentication and cloud server backup to make sure WMSPanel is safe from multiple directions.
Speaking of security, one of the most frequent questions these days was:
Do we use log4j?
The answer is no, we do not. None of our products use it so there's no need to worry.

Nimble Streamer

Nimble was in focus of our team: we were improving existing and adding new features.

Server playlist was introduced for Nimble Streamer.
You can create live streams by composing VOD files into playlists to produce single live stream. The playlist is a JSON file with a simple grammar which allows setting streaming scenarios of various complexity.
We'll soon release live streams support for playlist insertion in addition to VOD.

Nimble Streamer Advertizer has been significantly improved per our customers' feedback.
  • VOD server-side ads insertion is working. At the moment, HLS output with MPEG-TS and fMP4 containers is supported. Take a look at VOD SSAI overview article and also read 
  • Per-session ads can be inserted using your own session handler. It allows making per-session ads insertion for each individual user by using customer-side session handler. You can also get per-session statistics to accumulate ads insertion metrics for advertisers' confidence.
  • Local ad files and local config can be used. Watch Add pre-roll ads easily video tutorial showing that case.

Live Transcoder has a few updates including these:
  • Conditional transcoding allows enabling pipelines based on incoming stream's resolution. You can set a condition based on height and/or width thus avoid unnecessary waste of your server resources. This is especially useful for creating ABR live streams.
  • NETINT hardware encoder can now be supported via custom FFmpeg build, please read this post describing this approach.
A small but important feature for those who may concern: KLV metadata is now supported in Nimble Streamer.

Templates and configs for Zabbix monitoring of Nimble Streamer and SRT streams are now available along with a tutorial video about it. System administrators can now add their media server to their Zabbix to keep tracking live streaming parameters of Nimble instances as well as SRT-specific stats.

SLDP protocol is being actively used by our customers to provide low latency playback. Recently we've made a simple mosaic videowall demo page which allows playing 4 streams simultaneously. You can make your own mosaic using reference simplified version on our github.

Last but not least, Nimble Streamer is now available on ARM64 platform. Take a look at this tab on installation page to see instructions for Raspbian and Ubuntu 20.04 for ARM64.

Larix Broadcaster and Larix Player

Our mobile products - Larix Broadcaster and Larix Player - were actively used through the year by multiple users.

We released SDK for Android and SDK for iOS pages with architecture overview of Larix Broadcaster to make it easier to understand for beginners. They also refer to apps' sample code available on github.

Larix Broadcaster now supports Talkback feature set, which is the ability to get an audio return feed. So while you generate a stream, you may get audio stream via SRT, RTMP, SLDP or Icecast. This is a great feature for those creators who need to get a word from their studios while streaming live. Watch a third-party on Talkback and Vmix video tutorial on that.

Image overlays were implemented in Larix Broadcaster for both platforms. Take a look at our video tutorial showing overlays in Larix for iOS as an example of setup.

We've also introduced stand-by mode in Larix Broadcaster. When the stream hasn't been started, just long tap on Start, this will start stream in pause mode, image and sound will disappear while the stream is running. Meanwhile you may wait for a talent to appear or re-set the scene.

React Native: notice that we're currently working on React Native version of our streaming SDK. Contact us if you'd like to get early access for it.

For those of our users who use our apps on a daily basis we compiled our Best practices for Larix Broadcaster production deployment guide describing what might be useful in various scenarios.

Take look at docs reference page for more articles and videos about our mobile products. Also, our roadmap page contains our future plans on Larix product family development.

YouTube channel updates and our social media

This year we also posted a number of videos on our YouTube channel. Here are some most notable videos:
In addition, we got more videos about mobile products as well.

We also keep track of interesting third-party videos about using our products. Please check Reviews playlist with full list.

Another social media activity that we've made was the move of our github repositories.
We've made Softvelum github account which you can follow up to track our open source activities.

Last but now least, you can follow us any way you like for future updates via TwitterTelegramFacebookRedditYouTube and LinkedIn.

That's all for now.

Our team wishes you a Happy New Year and we'll see you in 2022!

December 23, 2021

Deliver SRT to multicast UDP MPEG-TS

We have released a new video tutorial about delivery of SRT across servers and transforming the content into multicast UDP MPEG-TS

It shows how to deliver live stream is the following scenario:

  1. Get two programs from MPEGTS UDP stream.
  2. Deliver it via SRT from AWS Nimble server to bare metal instance across the internet.
  3. Generate multicast UDP MPEG-TS on the second server for both programs.

Follow our YouTube channel to get more videos.

December 9, 2021

Improvements in billing mechanics of WMSPanel

Our team has recently made a few updates and improvements for the billing of our customers which will make it easier to handle. Please check what might be useful for you.

Combined billing for WMSPanel, Transcoder and Addenda

Previously, if customers wanted to add licenses for Transcoder or Addenda, they needed to create separate subscriptions for each type of license.

Our team has improved license subscription mechanics. For all new customers of Transcoder and Addenda who haven't had active licenses, WMSPanel subscription now allows to add Transcoder and Addenda licenses costs to panel's services.

Once you create new licenses, you will need to pay initial license fees proportional to the number of licenses and the number of days left until the next billing period of WMSPanel. At the nearest billing date you'll be charged with your usual WMSPanel cost options (servers, slices, stats) plus full monthly cost of all active licenses. If you cancel a license between billing dates, its cost will not be charged at the next payment date.

This way our customers will have a single payment every month instead multiple payments.

If you have separate legacy subscriptions for panel and licenses and you want to combine them into one, let us know about it so we could help you to transition.

PayPro Global payment gateway

Many of our customers already use it but we'd like to remind about this once again.

WMSPanel can be paid via the second payment gateway, PayPro Global. It allows a payer to control payment method, handle subscription email and billing addresses without the need for contacting support, and also view original invoices first-hand.

Up-front payments

Another option that we'd like to remind about is up-front payment.

We may accept a payment up-front, usually it's equal the price of 12 months of service with current amount of servers and options. The charged amount is put on your account credit. Every month a cost of your monthly services is withdrawn from your credit. If your monthly cost changes, then the cost of withdrawal is updated accordingly. The respective notifications about price change and credit charges are sent to the user. All charges also appear in "Payments and Invoices" tab of settings menu.

Transcoder and Addenda licenses will also be covered by account credit, just like it's done for regular subscriptions. When you create a license, we'll charge the license initial payments from your account credit.

Our team can enable up-front payment by request to our helpdesk.

If you have any further improvements which you'd like to have, tell us about that.

December 2, 2021

Local configuration and ad files support in Nimble Advertizer

Nimble Advertizer has become more flexible with the recent update.

Local config file

Instead of requiring a JSON config to be available via HTTP/HTTPS URL, you can now store the config in a local file. So besides handler app and static config available from a remote source, you can simply put your JSON config on a local hard drive where Nimble Streamer is installed. Nimble config will contain "file://" scheme location in "advertising_url" parameter.

Local ads content

Previously we required your ads to be available via URL. Now you can also put them locally on a Nimble-powered server and refer to them via "file://" scheme.

Video tutorial

Check this video showing both features in action:

You can read full Advertizer tech spec for detailed description and example of usage.

Let us know if you have any further questions.

November 28, 2021

NETINT encoder support in Nimble Streamer Transcoder via custom FFmpeg build

Live Transcoder for Nimble Streamer supports a number of encoding libraries off-the-shelf which cover most used technologies. Besides native integration with SDK and specific libraries, Live Transcoder uses some FFmpeg libraries for certain tasks. This way, Nimble allows using external libraries to extend its capabilities by re-building them with FFmpeg as necessary.

NETINT provides its hardware encoders API via FFmpeg-based libraries. This means you can make a custom FFmpeg build for Nimble Streamer and thus give it the access to NETINT encoding. Once you do that you'll be able to add it into your transcoder scenarios.

Let's see how you can accomplish that.

We assume you already have Live Transcoder installed and registered. In not, please check Transcoder installation instruction and watch introductory video tutorial from our playlist.
Before proceeding further, make sure you've upgraded your Nimble Streamer instance to the latest version.

First, you need to follow QuickStartGuideT408_T432_FW2_5.pdf documentation file:
  1. install necessary tools
  2. build libxcoder library
  3. check out FFmpeg 4.3.1
  4. apply Netint patch FFmpeg-n4.3.1_t4xx_patch
Second, the instruction says you need to run "bash build_ffmpeg.sh", but instead of that you need to run this command:
bash build_ffmpeg.sh --shared --custom_flags "--build-suffix=-nimble --disable-ffmpeg"
This will build shared libraries with Nimble suffix.

Third step is to run these commands from a regular instruction:
make install
sudo ldconfig
Finally, restart Nimble Streamer using a command for your OS as described here.

After that Nimble will be able to use the new libraries.

The encoder settings in transcoder scenario will need to use the following parameters:
  • Encoder must be set to FFmpeg
  • Codec must be set to h264_ni_enc 
  • Custom parameter xcoder-params will allow to control the encoder behavior
An example is shown here:

Once you save settings in your scenario, your Nimble Streamer instance will use NETINT encoder.

If you have any questions about custom FFmpeg builds and their integration with NETINT please contact our helpdesk.

Related documentation

November 23, 2021

Recording NDI as HLS DVR

We've released a short video tutorial showing a combined NDI and DVR use case.

  1. Nimble Streamer takes NDI input
  2. NDI is transcoded into HLS output
  3. HLS stream is recorded and played with Nimble DVR

Check the video below and feel free to visit NDI and DVR digest pages of Nimble Streamer.

November 22, 2021

Converting NDI into DRM-protected MPEG-DASH

We've released a new video tutorial showing a combined NDI+DRM use case.

  1. Nimble Streamer takes NDI input
  2. NDI is transcoded into MPEG-DASH output
  3. DASH stream is encoded with Widevine using EZDRM
  4. The playback is checked with THEOPlayer

Check the video below and feel free to visit NDI and DRM digest pages of Nimble Streamer.

October 27, 2021

Web UI for Server Playlist of Nimble Streamer

In our previous Playlist article, we have described a very basic playlist to run a set of files as the only live stream which is easy to write manually.

As playlists grow, more JSON tokens are needed and it's easy to stumble in numerous JSON brackets while adding just a couple of files forgotten to add earlier. Things can be a real mess if you add more than one stream and dozens of files. We have a better idea: you don’t have to edit the JSON files manually but use our server Playlist generator page instead.

Essentially, you need to fill the name of the application and stream to define a name of a live stream to output for your files, specify a full path to file located on Nimble Streamer or even multiple files at once, and receive a faultless playlist for Nimble. Then you either download it as a file or copy it to the clipboard to transfer. More details can be found below are in this article.

You should also watch this video demonstrating the entire process:


We assume that Nimble Streamer is already installed on your server. Just to remind you, the Transcoder package and license are needed for running playlists. Please subscribe and install the Transcoder package first as described in our installation manual.

All the video files must have the same video and audio codecs and resolution. When the file is switched and the next file's parameters are different the most of the video players will react to it with glitches or interruptions in the playback. You may try SLDP output alternatively, as it is more loyal to codec changes, but still, we strongly recommend preparing files for the playlist as the first step.

We also consider you have read the full server playlist technical specification for complete understanding of all the features and requirements of this feature set.

Quick actions on the page

Let’s have a quick tour on Playlist generator page. Initially, it looks like below:

First, specify an application and stream which Nimble Streamer will use for generating a live feed.

If you've already defined an application in the WMSPanel and marked HTTP output protocols they will be used as the output protocols of your playlist, e.g. LL-HLS or SLDP, or any other. Otherwise, protocol settings on "General" tab will be used. We already explained how to get NDI output from a playlist, by the way.

Defining a stream is equivalent to adding a Task in a server playlists’ grammar. More Tasks can be added meaning you can have multiple named feeds via one playlist.

Next, a content Block is required and the first one is created initially. You can name a Block for easier navigation, or as a reminder, but this is not mandatory.

The second required action is adding files you want to playback.  The files must be located at the Nimble Streamer server and must be accessible by Nimble. Please check the permissions if Nimble is not running as root.

Fill the full file path and its name in the corresponding field. To add one more file, click "Add source file", a new input line will appear. For your convenience, we have "Add multiple files" button, to quick input of list of files.

One tip for having a quick list of files in a directory is to use "ls -d -1 "$PWD/"*.mp4" command in terminal and paste its output into "Add multiple files" popup.

After clicking "Add sources", all the positions will be filled with provided file paths.

Also, the download or copying to the clipboard is available to get a playlist. Choose the one that suits you the best. Preview is also possible by clicking on "Show playlist" button.

You may notice that the IDs of blocks are changing randomly. This is done on purpose. If you change or add a file in a block, but do not change the ID, it is considered no changes were made in a Block. Now if changes are made and the playlist is overwritten with a new one, Nimble will re-read within sync interval and apply its changes. Note, no Nimble restart is required for this.


For each Block, the "Loop block" check box is available, making Block to repeat endlessly. Block is also having a "Start time" property, for specifying the exact starting time in GMT (not your server’s time zone).

Every added file has a dropdown menu to add advanced options. Starting time (Offset) and duration can be specified in seconds. If a file has several tracks in it, you can define which one needs to be played.

Final thoughts

Server-side playlists can be used for different applications such as simulation of a live feed, airing a pre-recorded stream at a specific time, as a backup program to show at air failures, or even as 24x7 radio made from your MP3 collection.

We believe Server-side playlists will be a handy tool for our colleagues in the industry.

Related documentation

Nimble Streamer Server Playlist, Playlist GeneratorGenerate NDI stream from local files

September 29, 2021

Q3 news: server playlists, conditional transcoding and more from RCA finalist

Softvelum team was continuously improving products set during Q3, here's what we've got for you this quarter.

We are excited to be the finalist of 2021 Streaming Media European Readers' Choice Awards in Hardware/software Server category with our Nimble Streamer software media server. Huge thanks to all of our customers and partners who voted for us!

Nimble Streamer was improved with a few new features:

  1. Server playlist was introduced lately for Nimble Streamer. With that feature you can create live streams by composing VOD files into playlists to produce single live stream. The playlist is a JSON file with a simple grammar which allows setting streaming scenarios of various complexity. You can read full tech spec to get familiar with the feature and take a look at an example of generating NDI stream from local files. We'll keep adding more example of this feature usage.
  2. Conditional transcoding was added into Live Transcoder to enable transcoding pipelines based on incoming stream's resolution. You can set a condition based on height and/or width thus avoid unnecessary waste of your server resources. This is especially useful for creating ABR live streams.
  3. Nimble Streamer is now available on ARM64 platform. Take a look at this tab on installation page to see instructions for Raspbian and Ubuntu 20.04 for ARM64.

SLDP HTML5 Player SDK now has "self-serve": you can subscribe for it, define a list of domains to map and generate your own SDK package within less than a minute.

Our mobile team keeps improving our mobile products:

  1. Larix Broadcaster and respective SDKs were updated this quarter, take a look at a list of mobile SDK releases.
  2. We see Larix being actively used in large scale deployments so we made Best practices for Larix Broadcaster production deployment article to share the experience of our team and our customers. Feel free to use it and share with fellow live streamers out there. Russian version is also available per request of our users. Feel free to translate this material to other languages (this proper link to our original).
  3. Speaking of docs, Callaba Cloud released a video about setting up SRT stream via Larix Broadcaster to Vmix and Larix Talkback, that's an awesome use case.

That's all for now. Follow us via social networks to get our updates as they appear.