July 15, 2021

Server playlists in Nimble Streamer

Server playlists feature set of Nimble Streamer allows creating live streams by composing VOD files into playlists.

Basic workflow looks like this:

  1. Prepare files for further live streaming.
  2. Create JSON playlist which contains description of generated output live streams and their respective files' playback scenarios.
  3. Create Live Transcoder scenarios to re-align output if needed.
  4. Configure Nimble Streamer to use the designated JSON playlist.
  5. Nimble instance generates output live steams according to playlist.
  6. You can update the playlist any moment, it will be picked up by Nimble within playlist sync interval.

The playlist is a JSON file with a simple grammar which allows setting streaming scenarios of various complexity.

Notice that server playlist feature set requires Live Transcoder to operate so you'll need to subscribe for a license and install/register Transcoder on your server.

For more details, read Server playlists page on Nimble Streamer website.

June 30, 2021

Q2 2021 news: Advertizer, KLV, Zabbix, Larix overlays

Let's see what Softvelum team has to show from Q2 of 2021.

Before moving to our features and updates, check Video Delivery Landscape of 2021 created and maintained by Divitel, we are excited to see Softvelum there.

Also 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 secured from multiple directions.


Nimble Streamer

A number of updates about our software media server were released.

  • Nimble Advertizer is now able to serve per-session ads 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 now get per-session statistics to accumulate ads insertion metrics for advertisers' confidence. Read this article to learn more.
  • Nimble DVR now has SCTE-35 support. Just enable "Keep SCTE-35 markers" option to allow recording SCTE-35 markers from incoming stream into DVR. Once HLS DVR is played, those markers are streamed along with the content.
  • Speaking of DVR, check our new DVR setup tutorial video on Softvelum YouTube channel.
  • KLV metadata is now supported in Nimble Streamer, read this article for more details.
  • SRT: we've updated libsrt to the latest 1.4.3 version for Nimble Streamer SRT package. You can now use custom parameters local_ip  and local_port in Push mode. Read our main SRT setup article to see other details.
  • Also check ATEM Mini streams RTMP to Raspberry Pi with Nimble Streamer to make SRT output - an interesting video from our user shows Nimble in action for SRT streaming.
  • Larix Grove URL and QR code can be generated in Nimble Streamer / Live streams settings under Global, Applications and Interfaces tabs to make RTMP and RTSP ingest, and also under and MPEGTS In tab for SRT and RIST. This way you can easily test your Nimble Streamer publishing settings with Larix Broadcaster even easier.
  • Zabbix: last but not least, we've released templates and configs for Zabbix monitoring of Nimble Streamer and SRT streams. 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.
  • We've also added peak daily connections as part of daily stats in WMSPanel.
  • WMSPanel now shows NVidia GPU stats and average RAM cache in each server details.


Mobile products

This week we'll release SDK updates for our mobile products - Larix Broadcaster and Larix Player.

We'll release related mobile SDKs' updates within a few days.


That's all for now. Follow us via social networks to get our updates as they appear: Twitter, Facebook, Telegram, LinkedIn, YouTube and Reddit.

June 7, 2021

Zabbix monitoring of Nimble Streamer, SRT streams and NVidia GPU

A continuous monitoring is needed if you want to ensure the correct functioning of any server. Getting basic metrics such as RAM, CPU or bandwidth usage helps rapidly responding to performance issues.

We’d like to show a way for our customers to add Nimble Streamer server-specific metrics as well as SRT streams statistics to an open-source Zabbix monitoring system. This will allow you to keep extended metrics in your monitoring system, which sometimes are not even available in WMSPanel, like RAM cache status for certain periods of time.

SRT metrics will also be helpful not only for stream health checks but also for analysis of how this new protocol works for your environment.

TLDR: You can find Zabbix templates and agent configs for Nimble Streamer general and SRT monitoring in this GitHub repo.


1. Monitoring features and metrics


We provide two Zabbix templates:

  1. General server metrics
  2. SRT metrics

Each template is based on certain calls of Nimble Streamer native API which we'll describe in later sections.

Take a look at this quick demo video showing all steps and brief capabilities overview



1.1 General metrics

The first TemplateNimbleServer.yaml in our github collects Nimble Streamer server statistics, which are obtained via /manage/server_status method of Nimble Streamer native API. This template includes some graphs for the RAMCache and FileCache monitoring.



You can find a detailed description of each parameter on server_status API method page.


1.2. SRT metrics

The second TemplateNimbleSRT.yaml on our github is made for monitoring the SRT streams statistics using /manage/srt_sender_stats and /manage/srt_receiver_stats API methods respectively. It uses Low Level Zabbix’s Discovery (LLD) to dynamically discover incoming and outgoing SRT streams metrics. For each connection (either sender or receiver) an Application with detailed statistics is created. Brief description is available if you move a mouse over [?] icon.

Please note, that the Nimble native API doesn’t send full scope of session metrics from SRT lib, but you can find full list at SRT library docs page as a reference.

Nimble Streamer returns the following list of values by API call that are also used in the Nimble SRT template:

  • SRT Receiver/Sender Window Flow
  • SRT Receiver/Sender Window Flight
  • SRT Receiver/Sender Window Congestion
  • SRT Receiver/Sender Total Packets Received 
  • SRT Receiver/Sender Total Packets Lost
  • SRT Receiver/Sender Total Packets Dropped 
  • SRT Receiver/Sender Total Bytes Received
  • SRT Receiver/Sender Status 
  • SRT Receiver/Sender Session Time
  • SRT Receiver/Sender RTT
  • SRT Receiver/Sender Retry Count
  • SRT Receiver/Sender Rate
  • SRT Receiver/Sender Packets Belated
  • SRT Receiver/Sender NAKs Sent 
  • SRT Receiver/Sender Estimated mbpsMaxBandwidth
  • SRT Receiver/Sender Estimated mbpsBandwidth
  • SRT Receiver/Sender bytesLost
  • SRT Receiver/Sender bytesDropped 

At the moment we don't have any SRT-specific Graphs or Triggers or Screens with the data we gather using these templates, but we'll probably add some improvements in future versions. We also have some plans on extending Nimble API capabilities to show more metrics and protocols, let us know if you're interested.


1.3 NVidia GPU monitoring

If you have NVidia GPU you can gather its metrics in Zabbix via Nimble’s Native API /manage/server_status method. We provide a Zabbix NVidia template and related config that relies on it to gather statistics. For temperature monitoring, the nvidia-smi utility is used, so make sure you can run it successfully from the console. Nimble Server NVidia template is actually the same, but with the addition of NVidia GPU discovery rules. To install it, follow the same steps and prerequisites as for Nimble Server Template.

Here are examples of stats.




1.4 Pre-requisites

The templates that we provide are made using Zabbix version 5.2.6, but the latest version of Zabbix should work fine too.

Notice that we used Ubuntu Linux 20.04 for Nimble Streamer server instance and setup details are provided for that OS. There should not be any issues with any Linux distro if you change package manager commands and repo names.

We didn’t check the provided templates with Nimble Streamer and Zabbix Agent running on Windows but it should also work as soon as you're able to install and run some releavant version of jq and cURL on it. Contact us if you succeed using this monitoring method for Windows version of Nimble.

We also assume that you already have the Zabbix server installed. If not, please find setup details on Zabbix's comprehensive documentation web pages. Zabbix provides many installation choices. The virtual appliance works best for us but you may choose the one that best suits your environment. If you have specific issues with it, ask Zabbix support or the Zabbix community forum.


2. Link Templates and Gather Data


Here are the steps you need to complete in order to add Nimble-specific metrics to your Zabbix server:

  1. Enable Nimble Streamer HTTP API for the server instance which you want to monitor
  2. Install cURL if it is not yet installed
  3. Import provided Templates to your Zabbix Server
  4. Install Zabbix Agent to your Nimble server
  5. Update Zabbix Agent configs to make templates work
  6. Add Nimble Streamer host to Zabbix server
  7. Apply Nimble Streamer Templates to a specific host

Here are the details of each step.


2.1 Enable Nimble Streamer HTTP API

Add ‘management_listen_interfaces = *’ to /etc/nimble/nimble.conf file. We have used the default port 8082 to make Zabbix Agent receive metrics from Nimble. Please follow this documentation page. to find out more about enabling Nimble API.


2.2. Install cURL

Make sure that cURL is installed on Nimble server. It can be used to make sure API is set up fine and it will be used further.


2.3 Import templates

Next, import Nimble Templates into Zabbix.

Download template files from respective GitHub repo to some location. From the Zabbix’s pop-up menu, go to Configuration -> Templates and click the Import button at the right top of the Templates page.

At the Import page, make sure that the checkboxes look like on the following screenshot and choose the template file to import.


Complete importing process by clicking the Import button. "Imported successfully" message should appear at the top of the page.

Navigate to the Templates page again, type "Nimble" at Name field and click Apply to set filter for Nimble templates only. You will notice two Nimble templates available.


2.4 Install Zabbix agent

You need to install Zabbix Agent on your Nimble Streamer server to send your server’s metrics to Zabbix Server. The easiest method is to install the agent using official Zabbix repositories by executing the following commands:

wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1+ubuntu20.04_all.deb

sudo dpkg -i zabbix-release_5.2-1+ubuntu20.04_all.deb

sudo apt update 

sudo apt install zabbix-agent jq

sudo systemctl enable zabbix-agent

The "jq" JSON parser is needed to process data from Nimble API responses.


2.5 Update Zabbix agent configs

Now complete the setup of Zabbix Agent by editing the /etc/zabbix/zabbix.conf file with your favorite editor to specify a Zabbix Server IP or Domain name via"Server=" option.

Please also add hostname of the server at "Hostname=" option and use the same name as Host name field when adding a host to Zabbix.

Download Zabbix Agent configs for Nimble from GitHub repo and copy them to /etc/zabbix/zabbix_agentd.d/.

wget https://raw.githubusercontent.com/WMSPanel/zabbix/main/zbx_nimble.conf zbx_nimble.conf

wget https://raw.githubusercontent.com/WMSPanel/zabbix/main/zbx_nimble.conf zbx_nimble_srt.conf

sudo cp *.conf /etc/zabbix/zabbix_agentd.d/


Check if your firewall allows incoming connection to port 10050 and start Zabbix Agent:

sudo systemctl start zabbix-agent


2.6 Add Nimble Streamer host to Zabbix

Switch to Zabbix web interface and add your Nimble Streamer server by clicking Create Host at Configuration -> Hosts page as usual. 

Select Interface type as Agent, and specify your Nimble server’s IP or domain name to connect to. Use Nimble group name and the same Host name as you defined in zabbix.conf file.


2.7 Apply Nimble Streamer Templates to a host

At the Templates tab select Host group Nimble and select Templates.


Click Add button after selecting Templates to add host to Zabbix. The added host will appear at the top of the page.

If you did everything correctly, you will notice availability status (ZBX) will become green after a few moments:


You may get the following error if the hostname in zabbix_agent.conf file is not matching the hostname you’ve entered when adding Hosts:



The setup is finished. Check if the metrics are being received by Zabbix at Monitoring -> Latest data menu. 

Now you can use this data to compare with data received by other templates or methods, create unique Graphs to add to the Dashboard or custom Screens, and add some Triggers to track if your server’s health goes down.


That's it. We'll continue improving our Zabbix monitoring templates and configs, stay tuned for updates and contact us if you have any questions or suggestions.


Related documentation

Nimble Streamer native API, Nimble Streamer configuration methods, Softvelum github

May 17, 2021

Secure your account in 3 easy steps

WMSPanel cloud control panel provides extended control over your Nimble Streamer server instances. Softvelum customers utilize Nimble extensively to build their media delivery networks and streaming infrastructure, and they use WMSPanel to perform the setup easily via both web UI and API.

Web services have a lot of upside like convenience of operations. However there is a downside to it as well: if you compromise your account credentials, an abuser may take control over your assets and do significant damage.

Besides evil intentions, people just make mistakes sometimes, so you need to improve your account security to avoid them.

Here are some general practices which we highly recommend for all of WMSPanel accounts and users to improve security and robustness of your account.


1. Users management: admins vs. non-admins


First, let's check what you can do on a company account and user level.

There are two types of users in WMSPanel: admins and non-admins.

Admins can do the following.

  • Install servers and register them in WMSPanel.
  • Add and change all Nimble Streamer settings on all servers.
  • View all stats for all servers.
  • Enable and disable statistical metrics.
  • Create and change subscriptions and view invoices.
  • Add, change and remove users.
  • Track users' activities log.
When you create an account in WMSPanel, your login becomes an admin user.

Non-admins cannot do much unless you allow them to:

  • They only view the stats in the data slices where they are assigned by admins.
  • Admins can grant non-admins specific permissions for specific servers, e.g. change live streaming settings only on a designated Nimble Streamer server instance. This article explains how it works.
  • Admins may also assign a group of non-admins to control a separate group of servers using data slices. This article describes the approach and its setup.

As you can see, there is no need to make some people the admin users while you can make them non-admins and grant only some limited permissions.

The rule of thumb is: don't grant too many permissions unless you really need to do that.


2. Two-factor authentication: a must-have


Being a user with WMSPanel login, you have to make sure your credentials are not exposed to anyone else. Doesn't matter if you are a full-scale admin or a non-admin who wants to view stats. However, if your credentials are obtained by malware or as a result of some sophisticated targeted attack, you need the second line of defense.

So you must enable two-factor authentication for your WMSPanel user. This is a modern de-facto standard for operations on the Internet so you must be familiar with it. So read this article to learn more about enabling 2FA.

Or just go to Settings menu, open Security tab and follow the instructions there.


3. Nimble config cloud backups: "undoing" mistakes


If you use a Nimble Streamer instance, one of your most valuable assets is its streaming settings. This is what you do as a streaming infrastructure architect and engineer: set up Nimble, test it with your source streams or files, launch it in products and make changes to those settings if necessary.

However, people make mistakes. Whatever you do to secure the users, those users can accidentally remove a server, erase some setting or make some experiment which would ruin the setup. You need to be able to overturn events like that.

We created Cloud backups of Nimble Streamer configuration to cover this use case. It allows making both manual and automated "snapshots" of server instance configuration which is then stored in WMSPanel cloud infrastructure. The key feature is that those backups cannot be erased or changed by any end user - admin or non-admin. When the backup is set and enabled for a specific server, those backups will allow restoring the state of settings of that server.

Cloud backups cost just 1 USD per month per backup.


These are simple rules to make your WMSPanel experience more secure and reliable.

Let us know if you have any questions.


May 13, 2021

KLV metadata in Nimble Streamer

KLV is a standard used for embedding meta information, usually into video feeds. Some of our customers use it for their use cases so they've been asking us for its support.

So now Nimble Streamer supports KLV metadata passthrough. It works for the following protocols:

  • MPEG-TS-based input: MPEG-TS over UDP and over HTTP, SRT and RIST.
  • Supported outputs are MPEG-TS over UDP, SRT and RIST.

So if your MPEGTS input has KLV streams in it, you'll be able to pass them through.

To enable this feature, you need to add max_forwarded_klv_streams parameter into Nimble config file to set the maximum number of expected streams.

max_forwarded_klv_streams=4

Don't forget to re-start Nimble instance to make it work.

You can use ffprobe to see how many KLV streams there are in your input MPEGTS streams.


Let us know if you have any questions and if you have any specific cases for KLV.


Related documentation

Nimble Streamer MPEGTS feature set

Advertizer per-session ads insertion and stats

Nimble Advertizer is a wide feature set for server-side ads insertion for Nimble Streamer software media server. It allows adding pre-roll and mid-roll ads into live and VOD streams according to customer business logic.

Dynamic ads can be inserted into HLS, RTMP, SLDP and Icecast outgoing live streams, along with HLS VOD output.

Previously the Advertizer allowed setting rules for ads insertion per application, per stream, as well as define per-user rules based on pay-per-view framework of Nimble Streamer.

With recent update it's now possible to apply Advertizer to more use cases:

  1. Make per-session ads insertion for each individual user by using customer-side session handler.
  2. Get per-session statistics to accumulate ads insertion metrics for advertisers' confidence.

In current article we'll focus on per-session mechanics without going into common details of Advertizer functionality like pre-requisites or general config grammar. You can find full set of details about Advertizer set setup and usage in Advertizer tech spec. You can also take a look Advertizer demo page showing the playback of all supported protocols with inserted ads.

Notice that per-session ads insertion is available for HLS, SLDP and Icecast outgoing live streams and for HLS VOD output. RTMP output is not supported for per-session scenarios.


1. Workflow


Let's see how Advertizer works with regular workflow and how it can be adjusted with per-session approach.

In a regular workflow the steps are straight-forward:

  1. Nimble Advertizer calls ads handler web application to get a business logic description.
  2. Advertising handler returns ads content description and applicability rules of what ads need to be inserted in which streams.
  3. Nimble Streamer gets the ads files and inserts their content them into output streams according to.

In per-session workflow, the second and third steps will have additional layer or activities.
  1. Your advertising handler (main handler) will now need to return the URL of per-session handler in addition to ads content description and applicability rules.
  2. Nimble Advertizer will call the per-session handler to send rules request and session info.
  3. Per-session handler gets the request and session info, and then makes the decision about who needs to watch which ads. It may also save the stats for further analysis.
  4. Per-session handler returns a set of rules specific to individual users.
  5. Nimble Advertizer serves ads according to new rules received by per-session handler, with session rules having priority over rules provided by the main handler.
Let's see how you can follow the described steps.

2. Enabling per-session handler


Per-session handler, just like main Advertizer handler, is a REST controller application which is called by Nimble Advertizer. You may use any language and framework to create it. Handler response must be a valid JSON text. Handler app must be available via HTTP/HTTPS protocol and accessible from Nimble instance.

Per-session handler URL needs to be returned in main handler's response in a new section called "session_handler" like shown below.

{

  "session_handler": {

    "apps": ["local", "remote", "live"],

    "url":"http://127.0.0.1:8085/session-handler"

  },

  "contents": [

    {"id":"1","uri":"http:\/\/127.0.0.1:8085\/ads\/1_180.mp4", "height":"180"},

    {"id":"2","uri":"http:\/\/127.0.0.1:8085\/ads\/1_240.mp4", "height":"240"},

    {"id":"3","uri":"http:\/\/127.0.0.1:8085\/ads\/1_360.mp4", "height":"360"},

    {"id":"4","uri":"http:\/\/127.0.0.1:8085\/ads\/1_360.mp4", "height":"480"},

    {"id":"5","uri":"http:\/\/127.0.0.1:8085\/ads\/pre-roll.aac.mp4"}

  ],

  "rules": [

  ]

}

This and other examples are available in Advertizer github repo, like this one.

The session_handler section may contain optional elements, here's full example:

"session_handler": {

  "url": "https://server/handler",

  "apps": ["app1", "app2"],

  "timeout": "1000",

  "onerror": "skip"

}

The elements mean the following:
  • url is the URL of per-session handler.
  • apps is a list of applications which are defined in Nimble Streamer, and which ads insertion will be applied to.
  • timeout is a period of time which Nimble can wait for per-session handler response. It's measured in milliseconds and it's 1000 by default.
  • onerror defines what action needs to be made is response is not received on time. It's "skip" by default which means that the playback will continue. The "stop" value means that the playback must be stopped and not processed since session handler has failed.

Let's see what happens when Nimble Streamer calls per-session handler.


3. Sending request to handler


First, open per-session-handler-request.json example from our github to illustrate the description below.

The request has two sections: session_info and rules_request. The handler is called in any of these events:

  • Each 30 seconds to send session_info part, you can use advertising_session_rules_request_interval to set it.
  • On each new connection, to send rules_request part. Also session_info can be sent with collected session information if available.
  • Each request_interval time slot, as defined in section 4.

Let's see what each section provides.

session_info is included in the request to show the statistics of ads viewership.

It has subsections for all sessions served by Advertizer since the last handler call, each session has its subsection. Here are the elements of each session:

  • session is a session ID.
  • app and stream show the stream which was served.
  • client_ip is the IP of a viewer.
  • user_agent is a data from viewer's User Agent header.
  • state is either active or inactive.
  • views contain data about ad viewership. It has 3 subelements: rule has ID of an ads rule applied, content has ID of ads content shown and uri is a URL of content applied.
  • userif you use pay-per-view framework, you will get user element which indicates viewer's user ID.

rules_request is included in requests to get response about what Nimble must do for sessions. Each session has individual section. It has the following elements.

  • session is s session ID.
  • protocol is a protocol type of a stream. This can be "hls", "sldp" or "icecast".
  • app and stream show the stream which is being served.
  • client_ip is the IP of a viewer.
  • user_agent is a data from viewer's User Agent header.
  • stream_time is a duration of a session prior to the moment when the request was sent

With these two sections, your per-session handler can make decisions about the ads content to be shown to your viewers.

Here's what per-session handler is expected to return to Nimble Advertizer.


4. Getting response from session handler


Take a look at response example below.

{
  "rules":
  [
    {
      "time_offset": 0,
      "time_sync": "stream",
      "type": "session",
      "id": 101,
      "contents": [{"id": ["1", "2", "3", "4"]}]
    }
  ],
  "rules_response":
  [
    {
      "rules": [101],
      "session": 5,
      "request_interval": 10
    }
  ]
}

You may also find it in Advertizer github.

Per-session handler response has two sections.

rules section defines rules for ads insertion which will be applied to sessions from rules_response section. The grammar for this section is the same as for main handler response describe in Advertizer spec. The only difference is that "type" element must always be "session".

These rules are also appended to the rules from the main handler response, so you may combine both per-session and default approaches to ads insertion. If there are per-session and main handler rules with the same rule ID, then session rule will be applied as it has priority.

rules_response section describes which ads insertion rules need to be applied to a particular session.

  • rules is the list of ads rules to be applied.
  • session is the ID of the session where rules are applied
  • request_interval defines how often after that Nimble Advertizer needs to request rules for this session.

The rules from response will be applied to current session once it's received by Advertizer. Some delay is possible in case of HLS just because of chunks download time and player reaction.



If you have any questions about Advertizer or per-session ads insertion, let us know.


Related documentation

Nimble AdvertizerNimble Advertizer spec, github repo for Advertizer,

March 30, 2021

Q1 2021 news: Cloud backups, Advertizer, Talkback, tutorials and more

Softvelum team kept working on products' improvements during Q1 of 2021 so let's see what we've got.


WMSPanel cloud service is the best way to control Nimble Streamer as it provides web UI for operating the vast majority of its features. Nimble settings are defined in the panel and synced up with Nimble instance.

Our customers always needed some way to back up their server settings, so in Q1 we introduced Nimble Cloud Backup. With cloud backups you can save streaming configs of your Nimble Streamer instances into distributed cloud database to improve redundancy. You can do it manually or automatically. If a customer needs to get back to some version of their cloud backup, he or she can restore it within WMSPanel account as a new server instance. After a backup is restored, a customer can initiate respective server instance to obtain these settings from WMSPanel, thus make new server to move into previous state. Learn more about Cloud Backups and try it in action.


Nimble Streamer Advertizer now has VOD server-side ads insertion. At the moment, HLS output with MPEG-TS and fMP4 containers is supported. Take a look at VOD SSAI overview article and also read tech spec page for full details.

We are working on other improvements for server-side ads insertion so stay tuned for updates.


SLDP protocol is actively used by our customers to provide low latency playback, especially after Flash has been officially abandoned and has put RTMP playback at denial. One of the use cases that our customers have discovered is browser-based videowall.

So we've made mosaic videowall demo page which allows playing 4 streams simultaneously. You can make your own mosaic using reference simplified version on our github. You may change it accordingly to make as many players as you need.


This quarter we also posted a number of video tutorials on our YouTube channel.

  • Converting NDI to Apple Low Latency HLS. There we demonstrate how you can use Nimble NDI feature set to get NDI input and transform it into Apple Low Latency HLS output. This can be a great case for customers who need to deliver live streams with low latency, check this brief description as well.
  • NDI to SRT to AWS Elemental MediaConnect via Nimble Streamer. Amazon recently introduced SRT support in their MediaConnect service. In our video we show how to take NDI input and use SRT feature set to stream live content out into AWS.
  • Widevine EZDRM setup in Nimble Streamer. Nimble DRM allows protecting live, DVR and VOD content using Widevine, Playready and FairPlay using various key management providers. This video uses EZDRM to show how easily you may set up Nimble DRM.
  • RTMP setup in Nimble Streamer. RTMP feature set is one of the most popular in Nimble Streamer so there we show all major scenarios related to the protocol.

Subscribe to our YouTube channel to get other upcoming updates.


Larix Broadcaster has got a number of significant updates this quarter.

Larix Broadcaster now supports Talkback, 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 even Icecast. This is a great feature for those creators who need to get a word from their studios while streaming live. Other updates of Larix include SRT Listen and Rendezvous support and some improvements for RIST protocol.

The talkback feature already got some attention. Take a look at How to: mobile reporter video demonstrating SRTMiniServer working with Larix Broadcaster by getting its live stream and returning talk back feed.

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

Larix Player for Android and iOS was also updated with fresh libsrt and got SRT playback in Listen and Rendezvous modes.

You can learn more about Talkback, Larix SDKs updates and other features by reading this blog post.

Also, since we've mentioned MediaConnect, we've made Stream to AWS MediaConnect via SRT from Larix Broadcaster article describing the process in case you need to stream there from mobile.


That's all for now. Follow us via social networks to get our updates as they appear: Twitter, Facebook, Telegram, LinkedIn, YouTube and Reddit.

March 23, 2021

NDI to SRT to AWS Elemental MediaConnect via Nimble Streamer

AWS Elemental MediaConnect can now receive SRT streams which means a lot of streaming software is able to deliver content there.

Being an active SRT Alliance member, Softvelum is excited to see this shift. So we decided to make a simple video where we show how Nimble Streamer can get NDI stream, transform it into SRT and publish to MediaConnect.



The described use case gives flexibility for various live production teams which use NDI as their primary format and who want to deliver their content over Amazon network.

Feel free to try this approach in action.

Take a look at related materials as well:


March 22, 2021

Stream to AWS MediaConnect via SRT from Larix Broadcaster

AWS Elemental MediaConnect recently announced their support for SRT ingest. This makes it capable of receiving streams from all modern encoders, media servers and other SRT-powered software.

Larix Broadcaster has full support of SRT besides RTMP. RTSP and RIST, it also allows streaming simultaneously to multiple destinations.

Here's a brief instruction for how you can stream from Larix to MediaConnect using SRT.


Set up MediaConnect


First, log into your AWS account, go to MediaConnect control page and open Flows section.

Then click on Create flow to enter flow creation dialog.


First you enter a name for your flow and select availability zone if you need to. The Protocol name needs to be SRT listener. Another important field to specify is Inbound port which will be used for further connection setup. Also, White list CIDR block must be specified to allow your devices streaming into Media Connect.

Once you save the flow, you'll see the Inbound IP address, you'll need it for further connection setup.


Click on Start for your flow to get it ready to receive the content.

Now let's proceed with Larix Broadcaster setup.


Set up Larix Broadcaster via Larix Grove


If you haven't installed Larix Broadcaster yet, you can do it via Google Play and AppStore.

Now, in order to set up Larix easily, we'll use Larix Grove. Larix Grove format allows propagating streaming setting across devices using special URL. It can be distributed via QR code for easier import in your device. So we'll create QR code with our SRT ingest point.

Go to Larix Grove wizard, enter srt://ipaddress:port in URL field and select Caller mode for this connection. Click on QR code button to get the image.


Having the QR code, scan it it on our device using any app capable of that. It will open Larix Broadcaster and will import the connection settings automatically. All you'll need to do  after that it to tap on big red start button to initiate the stream.


Check MediaConnect input


Now go to MediaConnect, you'll see when your input becomes active.


You will see charts which means you have the stream up and running. You may also change flow setup if you need to make changes specific to SRT protocol, like set up latency, maxbw or other parameters.



You can use AWS Elemental MediaConnect documentation to see what you can do next with your stream.


Related documentation

SRT capabilities of Softvelum productsLarix Broadcaster, AWS Elemental MediaConnect docs


March 20, 2021

Mosaic videowall with SLDP

We've released a demo page with mosaic videowall of SLDP HTML5 players in 2*2 grid. This is a useful setup for cases when you need to manually monitor and track multiple SLDP real-time streams on the same screen. By default, the sound is muted so it would not interfere, and players instances have VU-meters to track the audio level.

You can make your own mosaic using reference simplified version on our github. You may change it accordingly to make as many players as you need.

Learn more about SLDP low latency protocol and its benefits.