June 30, 2015

The State of Streaming Protocols - June 2015

WMSPanel team continues analyzing the state of streaming protocols. June had less views than May but the same share of protocols.

The metrics calculations are based on nearly 1.3 billion views. The stats are collected from 1800+ media servers (including WowzaNimble Streamer and Flussonic). As we introduced HTTP origin for "CDN-friendly" outgoing streaming, part of outgoing connections is not shown in monthly stats.

HLS share is down at 68% share with slight increase of RTMPIcecast and MPEG-DASH numbers. Check the chart below for more.

The State of Streaming Protocols - June 2015
The State of Streaming Protocols - June 2015.

You can compare that to May stats below.

June 25, 2015

CDN-friendly streaming via Nimble Streamer

Our customers build their own streaming infrastructures using Nimble Streamer in order to have low cost and reliable delivery networks. However, sometimes they need to reach audience which is located in the regions where they don't have their coverage yet.

This is where they start using 3rdparty CDNs. Nimble may serve as an origin for these networks and provide streams for further re-streaming. Some CDNs may require streams URLs without any variable parts, such as sessions identifiers. Nimble uses "nimblesessionid" parameter to track viewers' sessions but it allows skipping that.

Let's see how Nimble Streamer helps handling it.

Create alias

WMSPanel allows creating aliases for your Nimble streaming applications. This provides capabilities to define different levels of security for same streams and also to have flexible reporting for your end-users.

So you need to create an alias for each HTTP stream which you'd like to provide to your CDN. Please follow streaming alias creation article to see how it's done. It has proper screenshots and examples.

Set up HTTP origin

Now when you have an alias, set it up as HTTP origin. It means that you will inform Nimble that some specific outgoing streams applications and even entire server HTTP output will be handled without session information.
Read this article for details and screenshots of the setup.

Now, after passing described 2 steps, CDN won't get sessions info when obtaining the stream and will handle it properly.

You may also secure this new HTTP origin application by defining IP ranges where it will be allowed or forbidden. E.g. your CDN will be able to obtain streams while other viewers will not. Check geo-location restriction capabilities of Nimble Streamer in our Paywall feature set.

If you are able to deliver RTMP to your CDN, you can use RTMP re-publishing capabilities.
If you'd like to create ABR streams for CDN delivery, take a look at Live Transcoder for Nimble Streamer which is capable of various content transformation features.

Related documentation

June 24, 2015

Data disaster recovery for Nimble Streamer

WMSPanel collaborates with Nimble Streamer via sync-ups exchange. Nimble is sending statistics data to WMSPanel service for further processing and gets responses.

This scheme assumes that a Nimble Streamer media server is constantly online and it keeps sending sync-ups continuously. Internet is a very complex network and sometimes some of sub-networks and entire countries become invisible to other segments. In this case our server will not be able to send data and this might cause data losses.

Nimble Streamer now has proper improvements to prevent data losses and recover from disasters like that. Here is how it works now.
  1. When Nimble Streamer is launched after installation and registration in WMSPanel, is starts sending sync-ups.
  2. If wmspanel.com is not available for some reason, Nimble still tries to reach it, trying to send sync-ups for several times.
  3. If the service in unavailable for a long time, then the delta for the most useful daily statistics are accumulated on the server side.
  4. When the service becomes available, the calculated data is sent and WMSPanel fills the gap between the moment when the server "disappeared" and current moment.

The following most useful daily statistics are saved and recovered:
  • Connections count - total and per-protocol;
  • Traffic;
  • Peak bandwidth - incoming and outgoing;
  • Average view time;
  • Total view time.

This is the most critical data often used for billing customers, that's why it's saved and recovered. So your critical stats are always safe and you can rely on WMSPanel daily reporting.

Let us know if there are any other WMSPanel data recovery and consistency concerns.

Related documentation

June 22, 2015

Dispersa monitoring multiple edit

Dispersa streams availability monitoring is widely used by our customers around the globe. Many of them monitor dozens and even hundreds of streams. So in addition to having monitoring alerts API to automate notifications, people need a way to make bulk edit of their streams as least from web UI.

That's why we introduce multiple edit for Dispersa monitoring entries. It allows setting the streams and their monitoring behavior.

Go to Monitoring top menu to see list of your streams.

Streams monitoring console.

Here you can see Multiple edit button. Clicking on it you see a dialog with a formatted text representing current settings.

Here's an example of an entry:

    "url": "",
    "alias": "Nimble Promo Video 1",
    "alert": true,
    "paused": false,
    "checkpoints": [

Each entry has the following structure:

  • url is the URL of the stream to monitor;
  • alias is the name which you see in streams list;
  • alert is a flag defining whether Dispersa must notify account admin or not;
  • paused is a flag defining if this stream is actively checked or if it's not monitored at the moment;
  • checkpoints is the list of checkpoint where the stream is checked. It uses checkpoint 3-character aliases or server ID in case of private checkpoint.

So, setting up these options you can control all stream in your list at once.

Let us know if you think of any other improvements your business might need from Dispersa.

Related articles

Dispersa streams monitoringMonitoring alerts API, Nimble Streamer media server,

June 10, 2015

RTSP streaming control API

WMSPanel provides rich API for getting stats data from WMSPanel and controlling Nimble Streamer.

So in addition to existing RTMP control API and routes control API, we introduce API for controlling RTSP streaming behavior. Manual set up can be done via Nimble Streamer -> Live streams set up menu.

To use this feature set, run the designated methods from listed below. Full list can be found in WMSPanel products API reference. Please also refer to RTSP setup scenarios to see the purpose of each method.

June 8, 2015

Peer-to-peer streaming with Nimble Streamer

Nimble Streamer can be used as an origin for various streaming scenarios. One of them is HTTP peer-to-peer streaming. This technology allows off-loading origin server or delivery network by exchanging media data between viewers.

Nimble Streamer has a number of features that are required by P2P networks to handle Nimble as an origin. They are the following:
  • Choosing the number of segments in the playlist - it's part of common live streaming setup per-server and per-application.
  • Specifying segment length, this is also set up globally and per-application.
  • Segments may be obtained via byte range HTTP requests.
  • OPTIONS request is also supported.
  • CORS (Cross-Origin Resource Sharing) headers support which includes headers like Access-Control-Allow-Origin, Access-Control-Allow-Credentials, Access-Control-Allow-Methods etc. Read this article for setup details.

You can easily combine P2P infrastructure and traditional streaming. Nimble Streamer works perfectly in both worlds. Take a look at those examples of partner solutions which confirmed their compatibility with Nimble Streamer. If you need any P2P solution for your business, you can definitely give them a try.

June 4, 2015

MPEG-TS playback and transmuxing to HLS, RTMP, MPEG-DASH

MPEG2-TS is one of the most popular streaming protocols used by various types of businesses. It supports several streams types and allows carrying multiple programs within one stream. This is why Nimble Streamer had support for transmuxing MPEG-TS into HLS streams for a long time.

Now it's time to step forward and improve MPEG2-TS feature set with a few great capabilities.

Nimble is able to take MPEG2TS incoming stream via both UDP and HTTP. It transmuxes (i.e. re-packages) streams from either of sources into:
Supported video formats are MPEG1, MPEG2, MPEG4 and AVC. Supported audio formats are MP3 and AAC. For the outgoing streams protocols that don't support these formats, only the respective subset is used for transmuxing.

The outgoing streams generated from MPEG-TS may be used in adaptive bitrate (ABR) streams produced from other protocols like RTMP and RTSP.

The incoming UDP MPEG2TS streams may be wrapped into RTP and Nimble Streamer is able to process those streams as well.

Let's see how it can be set up and used via WMSPanel.

Notice that most of the described workflow is described in the following video.

You can also read this article to see additional information.

1. Install Nimble Streamer

Use this installation instruction to get Nimble Streamer on your server or desktop.

To take MPEG-TS streams for transmuxing, you need to specify their sources. After that Nimble will pick them up and start producing streams for immediate use.

Go to Nimble Streamer -> Live Streams Settings menu to see live streaming setup page.

2. MPEG2-TS incoming streams

First thing you will see is the global settings. Here you need to select what output protocols will be generated by default.

You need to go to Applications tab and define the settings for a specific output application.

2.1 Add MPEG-TS pulled stream

Now you need to specify is the incoming stream. Go to MPEG2TS In tab to see available options for adding UDP and HTTP streams.

Let's add HTTP stream as example. Click on Add HTTP stream to see the following dialog.

First you need to specify Stream URL which of your MPEG-TS HTTP source.

You may also optionally define any number of Fallback URLs which will be used in case your main stream goes down. You can specify both HTTP and HTTPS streams' URLs. The backup streams will remain the source of the stream as long they are active.

If you'd like Nimble Streamer to check primary stream to switch back, click on "Add primary check interval" to enter that value. Notice that interval check feature requires Addenda premium package license registered on the server where you process these streams.

If this setting is present, you will see current active stream in the incoming streams list.

Alias is the name of your stream in the list of streams within WMSPanel settings.

You may check Add outgoing stream checkbox and define how this stream will be available in output streams. The output streams are defined separately for MPEG-TS as each stream may contain several programs. However if you'd like to make output streams automatically, you may use this option.

Saving the information will create an incoming stream for further use.

It will be synced to Nimble Streamer within several seconds.

2.2 Add MPEG-TS UDP stream

To add UDP stream setting, click on Add UDP stream to specify all the details.
You will see a dialog for defining incoming UDP stream.

You'll specify the IP address and port to receive the stream and will define Alias as described in 3.1. In addition you can click on Advanced settings to define whether you want to allow reusing sockets with other applications.

Notice the Add outgoing stream checkbox, it works the same way as described in 3.1.


If your address qualifies for multicast IP ranges, e.g. or, then if you enter such IP, you'll get additional Multicast interface IP Address field where you may specify that address.

These UDP setting allow getting 1 stream from 1 address. If you need to have multiple streams, you can use Multicast source IP approach.

Click on Advanced settings link to see Multicast source IP (rfc4607 SSM) field. Here you may define source IP according to RFC4607 SSM. Nimble Streamer uses IP_ADD_SOURCE_MEMBERSHIP API call to handle that.


If you see any image artifacts or video freeze when when streaming content through UDP via MPEG-TS or RTSP, Nimble allows increasing UDP buffer. Set this parameter in Nimble configuration:
udp_so_receive_buffer = 16777216 
and restart server.
This sets SO_RCVBUF socket receive buffer to 16 MB and it should be enough to process streams especially with large bitrate.

Now when incoming streams are set, you may define the outgoing streams.

3. MPEG2-TS outgoing streams

As mentioned above, by default you need to manually define outgoing stream for all incoming MPEGTS streams because one stream may contain several programs. So if you haven't specified names for for apps and streams during the incoming stream setup, you'll need to do it as a separate step.

Click on MPEGTS Out tab to see an empty list of outgoing streams.

Click on Add outgoing stream to see the dialog which allows creating a stream.

Outgoing MPEG2TS stream parameters.
The following fields are used:
  • Application name and Stream name are the strings which will be used for outgoing streams URLs so you can set them according to your naming conventions.
  • Video source and video stream. This is where the video will be taken from for further mix. The source is the incoming stream defined in step 2. The stream can be selected from the drop down list based on the source information. If no information has been received yet, you may select "First video stream" to get whatever is transmitted. If the source has just one stream, it will be picked up by default with no special setup.
  • Audio source and audio stream works the same way as "Video source".

Outgoing MPEG2TS stream.

4. Streams usage

When you're finished with the setup, click on Nimble Streamer -> Live streams and click on the server name to see what we have now.

You'll see the list of incoming streams as received from media sources.

Clicking on Outgoing streams you will see the list of result streams ready for usage.

Besides their parameters, you can see the question mark icon. Clicking on it you will get Sample URL for player dialog showing all possible streams URL for further usage and also several sample players to test the stream.

Sample playback dialog.
You can select the stream name for further usage. The protocols used in drop down list are chosen from the global or per-application settings which you set up on step 2.

5. MPEG-TS playback

As your new accepted MPEG-TS stream has already been transmuxed into multiple protocols, you may also have MPEG-TS playback. You need to enable MPEG-TS protocol in Global settings or application settings at step 2 above, and after that you'll be able to use it as outgoing HTTP stream. It will have URL like "http://server_name:port/app/stream/mpeg.2ts", e.g.

6. MPEG-TS streaming over UDP

Nimble Streamer has full support for UDP streaming, read more about MPEG-TS UDP streaming setup and using constant bitrate and mux rate for UDP streaming.

Take a look at this tutorial on SRT and UDP streaming setup:

7. Adaptive bitrate setup

Having the MPEG-TS, RTMP or RTSP outgoing streams being set up, you may create adaptive bitrate streams output.

Read this article for full details regarding ABR setup and usage.

8. DVR - recording and playback

MPEG-TS may be recorded for further playback via HLS and MPEG-DASH using the DVR feature set. Read this article for setup details.

What's next

With outgoing single bitrate and adaptive bitrate streams you can use them for streaming scenarios of any complexity. E.g. besides playback, you can use those streams for streams aliasing, hotlink protection, RTMP republishing and more.

Besides traditional WMSPanel web UI you may use WMSPanel API to control MPEG-TS streaming behavior. See our API reference for details.

KLV metadata passthrough can be set up.

Contact us if you have any feedback or questions regarding Nimble Streamer functionality and usage.