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 29, 2015

Mobile broadcasting library for iOS platform

Nimble Streamer team experiences a constantly growing demand for new features from our customers who are interested in mobile streaming solutions. Modern devices are able to provide high quality video and audio content, and what's important are broadly used. Hence, mobile streaming traffic share increases rapidly. However, building just streaming application isn't the main objective.

In July 2015, our team has released the Mobile broadcasting library and the sample application for Android - Larix Broadcaster. Now, on numerous requests of our customers, we are announcing the Mobile broadcasting library and the sample application for iOS platform.

Live broadcasting from iOS device

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.

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 -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

Today, 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.

Parents, executives of construction companies and owners of country houses should be able to view the video streams from cameras on their mobile devices at any time.

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. 

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.

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;
  • 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