August 25, 2020

Install Nimble Streamer with SRT on MacOS using Docker

Nimble Streamer has full support of SRT protocol for the majority of platforms such as Linux and Windows. The MacOS support is missing due to a number of technical reasons. However our customers have been asking us about such capability.

With Docker, you can now bring SRT support in Nimble Streamer on macOS. Nimble will start and work properly on you Mac.

This article assumes you are familiar with macOS Terminal and you have an understanding of networking technologies. It's not a detailed description of Docker technology but rather a how-to describing our specific use case.

Here's a video that follows this article to demonstrate all steps. Read also read the text below to get more details on every step.

Now let's follow the steps below.

1. Install Docker for MacOS

Download Docker from its official website and follow installation instructions for MacOS. Those are very easy steps so we won't describe them in details.

2. Get Dockerfile from our GitHub

Create a new directory on your disk and download Dockerfile from our GitHub.

Change WMSPANEL_ACCOUNT and WMSPANEL_PASS parameters to your login and password in WMSPanel. Use WMSPANEL_SERVER_NAME parameter to set server name, it will be used in WMSPanel at the moment of container compilation and your server will be registered under that name.

3. Build image

Open the Terminal and go to the directory you've created earlier.

Run this command to create an image with the latest version of Nimble Streamer and SRT package:
docker build --no-cache -t nimble-srt:latest .
Now wait for a completion. If the operation was successful, you'll get "Successfully tagged nimble-srt:latest" message and your server will appear in WMSPanel marked as grey.

If anything goes wrong please contact our helpdesk with full log of your operations.

4. Run and Stop container

Now run your newly created container using this command:
docker run -d --rm -p 8081:8081 -p 1935:1935 -p 4444:4444/udp nimble-srt
After that you'll see your server in panel changing its color to green and status to "Running".

Once the container is launched you can connect to it using IP address of your Mac using mapped ports.

This new container is running in closed network of your docker so if you'd like to play streams produced by Nimble Streamer in that container, you need to specify proper IP in server settings at WMSPanel. Go to Servers top menu, then open server info page and click on Manage custom IP/Ports to add the IP of your Mac. After that you'll be able to perform the playback

To stop container, you need to get its ID using "docker ps" command and then stop using "docker stop CONTAINER_ID" command:

osa-vm-macos:nimble_img osa$ docker ps -q
osa-vm-macos:nimble_img osa$ docker stop 53778662dec3

5. Port mappings

In previous section we used TCP ports 8081 (for HLS and other HTTP-based protocols), 1935 (for RTMP) and UDP 4444 (for SRT). You may want to user other ports instead or add more ports. Please make sure these ports are not used by macOS.

To add another UDP port for container mapping just add "-p" parameter specifying required port, e.g. "-p 5555:5555/udp". Full command will look like this one:
docker run -d --rm -p 8081:8081 -p 1935:1935 -p 4444:4444/udp -p 5555:5555/udp nimble-srt
If you need TCP port then just remove "/udp".

6. Set up SRT in WMSPanel

Now you can set up SRT streaming using WMSPanel to control your Nimble instance in container with the previously mapped ports. We used port 4444 in our example so the SRT listener setup in "MPEGTS In" tab will look like this:

You can refer to SRT setup article to lean more about SRT setup process in Nimble Streamer.

Once you complete that you can start streaming SRT via IP and port specified above, using any SRT tool of your choice, like ffmpeg + srt-live-transmit, vMix. OBS or Larix Broadcaster.

7. Connect to the console of your container

If you need to log into the console of your container, get container ID first using this command
docker ps -q
Then use the result value in this command:
docker exec -it CONTAINER_ID /bin/bash

Once you get access, you can work with Nimble Streamer logs to track problems or update server parameters via nimble.conf file.

More on virtualization

The Dockerfile which we use in this article can be used for creating containers at other OSes.

Docker for macOS is basically using a small virtual Linux machine to work so you can also use other virtualization methods of running Nimble Streamer with SRT under Mac, like Virtual Box or VMware Workstation. Let us know if you need some special virtual machine to work with hypervisors.

Feel free to tell us about your experience of using Docker with Nimble Streamer.

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

August 18, 2020

Live Transcoder simultaneous upgrade

Nimble Streamer Live Transcoder is widely used among Softvelum customers. The core technology of the Transcoder combines both Softvelum team's own know-how and third-parties' work. Those third parties are listed on a corresponding page. One of those elements is FFmpeg which is used for filtering and some decoding operations. We periodically upgrade our code base to work with one of the latest stable releases as it has a number of important fixes and improvements. So in order to keep pace with FFmpeg, our team had to make adjustments and use FFmpeg version 4.2.4.

New FFmpeg version requires changes in both Nimble Streamer and Live Transcoder. So if you decide to make upgrade of Nimble Streamer then in order to make smooth transition Nimble and Transcoder packages will have to be upgraded simultaneously. If one of the packages is upgraded without its counterpart, then live transcoding will stop working.

We'll be releasing new packages for all platforms during next few days.
If you plan upgrading Nimble Streamer to 3.7.0-1 please also upgrade Transcoder package.

Here is what you need to do in order to complete this upgrade the correct way.

For Ubuntu and Debian, run this command
apt-get update
apt-get install nimble nimble-transcoder

For CentOS, run this command
sudo yum makecache
sudo yum install nimble nimble-transcoder

You may also run procedures from Live Transcoder installation page first and then Nimble Streamer upgrade page one after another do get the same result. If you have Windows, you also need to follow this path.

So we recommend you to perform this simultaneous upgrade when you have time and resource for that.

After the upgrade is complete, your Nimble Streamer package version will be 3.7.0-1 and Live Transcoder package version will be 1.1.3-1.

If you have any questions or face any issues during the upgrade, please contact us using our helpdesk.

August 12, 2020

Larix Player on Apple TV

Softvelum team introduces Apple TV support for Larix Player.

You can now play SRT, SLDP, Icecast, RTMP and HLS live streams on tvOS devices.

If you'd like to create your custom Apple TV application you can subscribe for our Larix Player mobile SDK.

August 11, 2020

SRT playback protection and stats

Nimble Streamer has had SRT support since the protocol's inception and our team keeps adding new SRT features into our products.

We see a growing demand for SRT playback using various solutions including Softvelum Larix Player for Android, Android TV, iOS and tvOS. So our customers want to see two major features which they already have for other playback protocols.

Those familiar features are:

So our team followed the feedback and made support for these features.

We've made those features available via Addenda so you'll need to subscribe for this premium package for as long as you need them. Notice that Addenda also covers SRT Publisher Assistance Security Set which allow controlling the publication process via SRT.

Please make sure you subscribe and register an Addenda license on your Nimble server before moving forward.

SRT listener settings

To make reporting and paywall features work, you need to set up SRT listener properly. We assume you are already familiar with SRT setup in Nimble so we'll show just specific settings.

Go to your SRT output settings at Live streams settings menu UDP streaming tab and either create a new stream or edit an existing one.

Listen is currently the only supported mode for this feature set so you need to select it in Mode drop-down.

All other fields' values are defined just like you would do for regular playback. The Local IP and Local port for connections, Source application name and Source stream name for defining the source as well as latency and maxbw parameters for proper error recovery.

nimble-srt-report-stream-name is the new parameter which you need to set up to make this feature work. This parameter's value defines what will be the name of that stream: all playback sessions will be reported under that name and your paywall settings will also use it.

It's set as <app name>/<stream name>. In our example it's live/srtstream.

Viewing statistics in WMSPanel

When your viewer connects to a previously configured SRT listener, one connection will be reported into your stats. If you have several ports opened for different listeners with this feature enabled then you'll see several simultaneous connections.

You'll have these connections counted in all other reports of WMSPanel, such as daily stats, geo-location, streams stats, in-depth streams reports, unique visitors and others.

If you create separate listeners on separate ports but use the same nimble-srt-report-stream-name then both connections will be registered (counted) under that same stream name. This way you can combine data for a single content publisher.

If you have a stream with the same name available via different protocol, then their stats will be combined too. They'll also be show under different columns in daily stats, like you see on a screenshot above.

Multipoint listeners

Nimble streamer supports multipoint listeners option which means that more than one viewers can connect to the same port, and in case of this feature - to the same stream. If you'd like to enable multipoint, read "One-to-many multipoint listener" section in this article.

From statistics perspective, if you create a multipoint listener and 2 viewers connect there then 2 connections will be registered in our reporting.

Paywall support for SRT playback

With nimble-srt-report-stream-name set, a number of features from Softvelum paywall become available for that specific listener:

They are set up the same way as you do for other protocols, follow links above to see detailed instructions. The specific thing for SRT is that you need to specify app name and stream name according to nimble-srt-report-stream-name value. That is <app name>/<stream name> so you put app name into Application field and stream name into Stream field as shown below.

One limitation for paywall is that user agent and referrer restrictions do not apply to SRT.

All other features and approaches described on respective pages and in our paywall FAQ fully apply to SRT. For example, as described in Q6 you can allow stream for just one country and forbid for all others by defining the country in allow list and setting any non-empty password, with SRT checkbox enabled:

If you try playing this SRT stream, you won't be able to do it and you'll see "failed to accept srt socket" error in Nimble log.

That's just one example, visit Paywall page for more information.

Hotlink protection and PPV

This feature is set up the same way as you would do it for HLS or other protocols. You'll need to set up WMSAuth rule with password, then provide your viewers with a URL to your stream with a signature which is based on password and other parameters. Read this page to get all details and to get code examples.

Once you get a signature you will need to add it into your stream URL at streamid parameter this way:


Here's an example of running srt-live-transmit this way:

./srt-live-transmit srt:// file://con > /dev/null

You may generate that signature on your website where people open your link with our Larix Player for Android and iOS which handles srt:// deep links\ to open them for playback. Or you can use your own method of delivery to give this link to your viwewers.

Pay-per-view framework is also set up the same way as for other protocols, with the signature placed into the URL at streamid as shown above.

That's it. Please subscribed for Addenda license to use this feature and if you have any questions pelase contact our helpdesk.

Related documentation