September 30, 2015

The State of Streaming Protocols - September 2015

WMSPanel team continues analyzing the state of streaming protocols.

The metrics calculations are based on 1.8 billion views. The stats are collected from 2100+ media servers (including our Nimble StreamerWowza and Flussonic).

HLS share grows again and it's 71% now.

The State of Streaming Protocols - September 2015.

You can compare that to August stats below and also check September 2014 stats as well to see how things changed over the last year.

September 24, 2015

Setting up VidiU transcoder to work with Nimble Streamer

Our customers quite often use Teradek VidiU transcoder and ask us how to setup it to work with Nimble Streamer. In this article we are going to show how to configure it.

Teradek VidiU is a portable standalone streaming media encoder on the go that can be mounted on top of cameras. VidiU provides instant transmission of live video signal encoded as H.264 video - to a content delivery network (CDN) of choice. This low cost encoder eliminates the need for expensive encoders and equipment to delivers HD quality video online.

If you have one, please start from Teradek VidiU Quick Start Guide and proceed step-by-step to chapter 5: "Connect to VidiU with a web browser". Leave your Teradek settings window opened, we will return to it after configuring Nimble Streamer.

Nimble Streamer settings


First you need to create Application for your Teradek VidiU stream and configure RTMP interface for Nimble Streamer.
Log in to WMSPanel.com, go to "Nimble Streamer" -> "Live streams settings" -> "Applications" and click on "Add Application settings" button.


Specify Application name, Push login and Push password (e.g. VidiU, test, test). Check the check boxes for outgoing protocols (e.g. HLS, RTMP and DASH). Click on "Save" button.



Then go to "Interfaces" tab and click the "Add RTMP Interface" button.


Specify port number for RTMP interface (by default 1935) and click the "Save" button.



Verify that RTMP port 1935 on your server is opened and is not blocked by firewall.

Teradek VidiU settings

Now you need to switch to your Teradek VidiU device settings.
Open web browser with your VidiU settings page. Click on the "Settings" button.


Then click on "Broadcast" icon on settings page.


In the appeared dialog window specify your RTMP server URL (e.g. 192.168.5.5:1935/VidiU) and Stream (e.g. live_stream). Then click on "Advanced RTMP Settings" dropdown menu and specify Username and Password for your Nimble Application (e.g. test, test). Click on the "Save As a Profile" button. Then click on "Settings" button.


Click on the "Done" button in the next window.



Click the green broadcast icon and confirm that the stream status changes from green Ready to red Live. This will confirm that VidiU was able to connect to your Nimble Streamer.


Your broadcast icon should become red.


And after a few second you will see your stream.


Then if you go to "Nimble Streamer" -> "Live streams" you can see your user live stream in outgoing streams:



If you click on question mark sign button you will see the content of this stream with HLS, DASH and RTMP URLs and web player code snippet to embed this video on your web page.

The media URL should be as following:
http://192.168.5.5:8081/VidiU/live_stream/playlist.m3u8
http://192.168.5.5:8081/VidiU/live_stream/manifest.mpd
rtmp://192.168.5.5:1935/VidiU/live_stream

September 23, 2015

Nimble Streamer deployment automation

WMSPanel is the official UI for Nimble Streamer and it is available under subscription model. Nimble Streamer is the free of charge media server which can run fine on lower-end servers or Virtual Machines.
Our customers have long and successful story of using automation deployment of Nimble Streamer, e.g. using Amazon Elastic Cloud. Nimble Streamer can be configured independently of WMSPanel specifying all settings via changing configuration files in manual mode.

However, to add preconfigured Nimble Streamer to WMSPanel for obtaining full statistics it was necessary to add each server in the control panel manually via the import configuration procedure.

Performing manual manipulations is very inconvenient in case of large number of media servers. That's why Nimble Streamer allows automating the process of adding preconfigured media server to WMSPanel. Now it is enough to execute a single command:
sudo /usr/bin/nimble_regutil -u admin@account.com -p password --apply-rules-conf
Please back up your rules.conf before using this method to avoid accidental damages.
After that regutil automatically transfers the Nimble Streamer settings from /etc/nimble/rules.conf file to WMSPanel, and saves the authorization settings to the /etc/nimble/nimble.conf file for sending data to the panel, without changing the other settings.

This capability is specifically useful when you need to organize the broadcast of a single scheduled event and to gather statistics for it (for example, a concert or the final of the National Cup). This scenario can be also used when you create your own CDN.

After adding in WMSPanel, each server can be configured via Web interface. Each operation of setting up a new streaming scenario can be applied to all servers instances  immediately.

Adding via web UI

You may also consider adding an existing server via web UI. It does the same operation as described here but there you may also analyse the rules before applying them via WMSPanel.

Repairing after HW failure


If you existing server hardware has failed and/or you got new system on board, you may want to add this server as existing one rather than registering as new. Read this article for details of this operation.

With the described functionality, Nimble Streamer and WMSPanel users get additional benefits of automatic infrastructure deployment, best resilience and reliability of their streaming processes.

September 16, 2015

Processing RTSP pull streams from IP cameras per request

Nowadays surveillance cameras are common for security and monitoring. E.g., they are used to ensure the safety of educational institutions: kindergartens, schools, kid's clubs. Many people use cameras to track the progress of construction projects, and to protect the perimeter of protected objects. Often cameras are put in suburban homes, connecting them to the Internet.

Nimble Streamer allows doing it via transmuxing RTSP stream from the camera to HLS for further viewing on any mobile device. Using of Nimble Streamer helps to reduce load on network channels between cameras and media server, and also helps to protect video streams from unauthorized viewing.

Next we are going to show how to configure that. We assume that you already have RTSP stream from your camera, which is available via public IP address. Also we assume that you have already installed Nimble Streamer.

Log in to WMSPanel. Go to "Nimble Streamer" -> "Live streams settings" and go to "Live pull settings" tab.


Click the "Add RTSP URL" button.


Specify your camera stream URL in the appeared dialog. Specify the "Output application" and "Output stream" for outgoing stream. These names will be used to create outgoing stream URL. Set the "Idle time" parameter: if the viewer has stopped watching, the stream will be pulled for this period of time. This configuration can significantly save the bandwidth if your streams are rarely used, read this article for more detailed description. Don't forget to click on the "Save" button.

You can setup receiving of any RTSP streams by checking the "Dynamic stream name" and specifying only application name in the Primary URL (i.e. rtsp://myipcameras.ru:554/live_cameras). In this case, any stream belonging to the specified application (e.g., live_cameras) is pulled from a source and is processed as described above. This allows you to specify the entire set of possible streams, which greatly simplifies the configuration.

Go to "Nimble Streamer" -> "Live streams" -> "Outgoing streams". On this page you can see your outgoing HLS stream. Click on the question mark sign.


You can view the contents of your stream. If you click on the "Show player's code" link, then you get the code snippet to paste on your website.

Related documentation


Live Streaming features in Nimble, Live Transcoder for Nimble Streamer, RTSP feature set, Processing RTMP and RTSP pull streams per request,

September 9, 2015

Import MPEGTS streams list from playlist

Nimble Streamer allows transmuxing the incoming MPEGTS streams for further restreaming via RTMP, HLS and MPEG-DASH protocols. Until recently, it was necessary to add MPEGTS streams one by one, which was very inconvenient in case of large number of streams.

Now you can add multiple incoming MPEGTS streams from the playlist via Nimble Streamer.

To perform this settings go to "Nimble Streamer" -> "Live streams settings" -> "MPEGTS in" menu.


Click the "Add streams from playlist" button.  Specify the playlist name in which MPEGTS streams URLs are contained. Then click the "Get streams" button. You can use HTTP, HTTPS and UDP links to playlist with MPEGTS streams.


You will see the dialog in which you can select required streams via setting the checkboxes. Press the "Add selected" to add selected streams as incoming.


Selected streams will be shown in the list.


There are the restrictions for adding streams from the playlists:

  1. Maximum size of playlist should not exceed 32 kb (media server will ignore extra data);
  2. Maximum number of streams in the playlist should not exceed 500.

These limitations will protect your server from overloading.

After adding MPEGTS streams you can transmux them to HLS, RTMP or MPEG-DASH for further streaming.

Related documentation


Transmux MPEG-TS into HLS, RTMP, Advanced MPEG-TS delivery over UDP via Nimble Streamer,


September 7, 2015

Pull RTMP, RTSP, SLDP and Icecast live streams on demand

Live streaming of video over Internet gives a high load on the communication channels. To reduce channels load, and to increase robustness of live streaming the load balancing techniques are used (read the "HLS, DASH and Icecast streaming load balancing" article for details).

Nimble Streamer also allows decreasing network load from source to edge server by setting up RTMP, RTSP, SLDP and Icecast live streams pull on demand, i.e. by pull by request from user.

In large networks not all your streams are requested by all users all the time. But all of these streams continue to be pulled from origin server, that is why fee for the traffic is continuously charged. 
Nimble Streamer allows to optimize usage of bandwidth via setting up RTMP, RTSP or Icecast streams to be pulled only if users request to view these channels via one of supported output protocols:

  • HLS;
  • MPEG-DASH;
  • RTMP;
  • RTSP;
  • SLDP;
  • Icecast;
  • MPEG-TS.

For example, large content providers can offer thousands of media URLs of live video, but only part of them will be requested by users at certain periods of time. So if 1 viewer is requesting an RTSP stream via HLS and another one requests it via Icecast, then 1 stream will be pulled via RTSP and transmuxed into HLS or any other protocol for output as long as these viewers watch the stream.

The same approach is relevant when using CCTV cameras which transmit video streams over RTSP protocol. Usually in this case only about 20-30 cameras are displayed on the monitor, but overall cameras count may be several hundreds (i.e. for the systems like "Safe town").

Setup procedure


You can perform the advanced Live pull settings setup via Nimble Streamer. This setup allows you to pull only those streams which are requested by viewers and also you can configure media server to pull any streams for the certain application.

We'll show RTMP input as example but you can apply this to RTSP and Icecast/SHOUTcast input as well.

To perform these settings go to "Nimble Streamer" -> "Live streams settings" -> "Live pull settings" and click the "Add RTMP URL" button.


Specify the pulled  live video URL in the appeared dialog. You can specify fallback URL (optional). Specify the "Output application" and "Output stream" fields.

For per-request pull of streams, you also need to specify the "Idle time" value. If the viewers have stopped watching the stream then Nimble Streamer will keep pulling the stream from the origin for this period of time and if nobody else connects to it, the transmission from the origin is stopped. If you need constant stable connection, you don't need to use this option.


You can setup receiving of any RTMP, RTSP or Icecast streams by checking the "Dynamic stream name" and specifying only application name in the Primary URL (i.e. rtmp://remotehost:1935/live). In this case, any stream belonging to the specified application (e.g., live) is pulled from a source and is processed as described above. This allows you to specify the entire set of possible streams instead of one stream, which greatly simplifies the configuration.

Once the server is configured, the first user requesting the video over HLS, RTMP or other supported protocol will initiate a pull session.

This configuration can significantly save the bandwidth if your streams are rarely used. At the same time latency, associated with the resumption of the stream, will not exceed 200 ms. If your streams are constantly demanded, the enabling of this function will not give the advantages. For more details about live streaming latency please read "Achieving low latency for live streaming using Nimble Streamer" blog article.

If you want to speedup the playback start time, you may also consider improving buffer setting. This origin-side setup will allow improving this behavior.

Security settings


However, you should be very careful when using dynamic stream names. The application could have several hundreds of streams (e.g. video cameras), and not all of these streams need to be pulled from the source.
This creates the risk that users can force media server to pull a huge amount of streams by their actions. It can cause of unnecessary using of bandwidth  and computational resources. In order to prevent the use of such scenario, you can create the WMSAuth rule, which allows to take and to play only those streams that the user is allowed to access. For more information about restricting access by streams names please read "Hotlink protection with stream-based signature" article.

If you need to secure your RTMP streams during transmission over public networks, you can also use SSL for RTMP transmission.


Ads, transcoding and more


When transmuxing incoming RTMP streams, you can use Nimble Advertizer for server-side ads insertion. It provides a framework for inserting pre-roll and mid-roll ads into live streams for further output via RTMP, SLDP and Icecast with custom business logic and per-user ads.
Visit Advertizer web page to find out more.

If you need to change content parameters, like change the bitrate, use our Live Transcoder for Nimble Streamer to transform. It has high performance and low resource usage.

Related documentation