June 15, 2014

Streaming RTMP to HLS

RTMP (Realtime Messaging Protocol) still remains very popular for live streaming. However more and more devices become capable of HLS with no RTMP support. So they need to get live streams with all quality profiles provided by live stream RTMP source.

Nimble Streamer allows transmuxing RTMP into HLS with both single quality and adaptive bitrate if it's provided by the streaming source. Currently the H.264 codec is supported. To set up this transmuxing you need an instance of Nimble Streamer and a video source that will push a stream to that instance.

Let's follow a few easy steps to make it work. Please also check RTMP to ABR HLS set up article and general description of all RTMP related features of Nimble Streamer.

First you may take a look at video tutorial about RTMP setup.


1. Install Nimble Streamer


Installing Nimble is easy. Just follow this easy instruction to install and register Nimble Streamer instance in WMSPanel for further setup. You will see Nimble in servers list.

2. Define application for incoming streams


First you need to describe an application used to process data from streaming source. This application will have settings for a group of incoming streams. This will include authorization and chunks duration.

Go to Nimble Streamer / Live streams settings menu. Global tab has service-wise default Chunk duration for all outgoing HLS streams. It also has Push login and password for applied to all incoming RTMP publishing by default.



These settings can be overlapped by individual applications settings. Click on Applications tab to see list of individual apps.



Click on Add application settings to see a dialog for adding new app setting.



As you see it has application name, chunk duration setting and then publishing login and password.

Notice that you may also select multiple protocols which will be used as output. Just check those which you need for your streaming scenarios - they'll be available for output.

To start receiving data you need to define which interfaces will server listen to. Click on Interfaces tab to see list of defined interfaces.



Click on the "Add RTMP interface" button. To have Nimble get published RTMP, you need to add IP and port to listen to. If you don't specify IP, server will listen to all interfaces on given port. You can add any number of interfaces this way. Make sure interface is not bound by other program.



Once the interface is defined, you may publish media to Nimble.

3. Start publishing


Now you can start streaming from your media source, like FLME, FFMPEG, Wowza or any other encoder with RTMP support. Use application or server credentials which you defined on step 2.

Setting up live stream in FMLE.

If you use encoders which do not support FMLE-like authentication, check this article describing URL authentication RTMP publishing to Nimble Streamer.

4. Define outgoing streams


Once the incoming streams accepted by Nimble, you will see the outgoing stream available in Outgoing streams page. Click on Outgoing link or Outgoing section on the streaming scheme picture.

List of HLS streams transmuxed from RTMP.

Here you can see result streams available for your viewers. You can see its basic parameters of video and audio stream as well as bandwidth and resolution. To use the outgoing stream, click on URL for Player to see dialog showing stream in popular players, their sample code and all URLs to insert into client's player.

5. Defining adaptive bitrate


If you have several streaming sources you can combine them into HLS ABR streams.
Read this article for all details regarding ABR setup and usage.

6. DVR - recording and playback


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

7. Transcoding


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.

8. Server-side ads insertion


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.

What's next


As you can see WMSPanel provides easy way of configuring HLS streams with few manual actions.
You may also pull RTMP by Nimble to make HLS. It will also be available for ABR HLS setup.

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

RTMP to HLS transmuxing is part of live streaming feature set and may be used as the baseline for many combinations of streaming infrastructures.

Related documentation


Live Streaming featuresLive Transcoder for Nimble StreamerRTMP feature setBuild streaming infrastructure with Nimble StreamerRTMP republishing via Nimble,  

June 12, 2014

ISP networks report

Internet service provider is one of the key elements of delivery chain between a media hoster and a viewer. WMSPanel provides many metrics regarding a viewer and our customers want to know about the way the content is delivered.

WMSPanel now has ISP network report available under Reporting menu. It collects information about telecom operators and shows their names along with connections number information. You may select dates range to report as well as export data as CSV and view printer-friendly version.

This report is enabled as part of additional daily reporting set which also includes geo-location report. It's available per slice, meaning that the report shows collection of data defined by particular slice.

Internet service providers reports.

This page shows chart chart for top 10 telecoms with 11th part showing the "long tail" of companies with small share. Companies list below shows their names, connections count and their share. By default it shows top 20 with ability to show all companies, top 100 and also define filter by name.

If you'd like to see some other reports, tell us about it. New reporting features are being implemented all the time, so your feedback is welcomed.

Read more about WMSPanel streaming reporting.

Related documentation


WMSPanel streaming reportingGeo location reportingHigh precision reportingData slices for statisticsStreamed slicesScreencast for data slices and white labelDispersa streams monitoringNimble HTTP Streamer

June 5, 2014

CPU and RAM level alerts for Nimble

Nimble Streamer is designed and implemented to be very light-weight and fast. It consumes a very small amount of RAM and CPU to operate in compare to majority of other tools and servers. Since it's targeted to serve high load, there may be a point when Nimble exceeds its resources. An administrator needs to be aware of that to make scale up the infrastructure by either adding more CPU/RAM or adding more servers to pass the load.

WMSPanel provides nice charts for CPU and RAM usage for each server so any moment a system admin may go to server details page and check what's going on. Now we've made next step and WMSPanel now allows setting up a level of CPU and RAM consumption to notify admins emails about resources overrun.

The set up takes two steps.

1. Define limits


You need to define the thresholds for alerting an administrator. Click on Servers menu to go to servers list and click on Edit for designated Nimble server.

Set up CPU and RAM limit to alert admin.

Here you can select levels of CPU and RAM from the drop down list. Once the limit is reached, an email notification is sent to the emails which are set up on the step 2. These alerts will be sent once per hour if the consumption is still over the limit.

2. Set up notifications


To receive alerts you need to specify emails which need to be notified. Go to Control / Offline notifications set up menu to see the setup page.

Set up email addresses for notifications.

Here you will add or remove the email addresses and will be able to test them.

Now if any of the limits is overrun, the email is sent out as described in "Define limits" section above.

Contact us if you'd like to see more monitoring features in addition to described enhancement and Dispersa streams monitoring.

Related documentation


Nimble HTTP StreamerLoad balancing and failover with Nimble StreamerVOD re-streaming cache controlRAM caching for effective re-streamingNimble disk cache usageWMSPanel SlideshareDispersa streams monitoringServer tasks remote management via web UI

May 22, 2014

Wowza CPU and RAM usage alert

Wowza customers are always looking for different ways to improve server performance. So they need to be sure that current server set up and tuning are doing fine and do not exceed CPU and RAM limits. So they need a way to be alerted about CPU and RAM status of each Wowza server. WMSPanel has been providing a real-time monitoring of Wowza CPU and RAM, so any moment a system admin may go to server details page and check what's going on.

Now we've made next step and WMSPanel now allows setting up a threshold for CPU and RAM consumption level and notify designated admins emails about resources overrun.

The set up consists of two steps.

Define limits


You need to define the thresholds for alerting an administrator. Click on Servers menu to go to servers list and click on Edit for designated server.

Setting up CPU and RAM limits for alerting Wowza admins.
Here you can select CPU and RAM level from the drop down list. Once the limit is reached, an email notification is launched to the emails which are set up on the second step. These alerts will be sent once an hour in case the consumption is still over the limit.

Set up notifications


In order to receive alerts you need to specify a list of emails that need to be notified. Go to Control / Offline notifications set up menu to see the setup page.

Set up alerts and notifications email addresses.

Here you will add or remove the email addresses and will be able to test them.

That's it. If any of the limits is overrun, the email is sent. It's done once an hour until you fix the problem or increase a threshold.

Contact us if you need any other Wowza monitoring capabilities in addition to CPU/RAM limits and Dispersa streams monitoring feature set.

Related documentation


Wowza multiple servers managementMonitoring Wowza CPU and RAM, Dispersa streams monitoring, Wowza server downtime notificationServer tasks remote management via web UI

May 21, 2014

Data slices time zone setup

Data slice is the concept which we've been using for years. A data slice collects user data and calculates metrics separately for designated applications or streams. Along with white label custom branding capabilities this allows showing streaming metrics to any number of end users for billing purposes or for improving streaming user experience.

Major metrics set of each data slices are daily-granulated stats which include connections, traffic, bandwidth, time and duration, geo-location, devices and players stats. The majority of this data may be exported via our API.

Commonly these daily stats are split by days using UTC, or GMT+0, time zone. So if any streaming company from U.S., Canada, Brazil or any other American country would make some evening event, it would be split by 2 days which is very inconvenient from user point of view.

Our customers have been asking us to improve data slices and include time zone setting to split data by days more accurately. So now this option is available.

Let's assume we have http://origin.ultimatemediastreaming.com/live/stream/playlist.m3u8 stream and we want a data slice for it calculating stats using GMT-06:00 which is a Central time zone in U.S.

Select Control / Data slices menu or click on Manage link in Data slices sub-menu. You will see data slices management page.

Data slices list.
Click on Create streamed data slice to see the following dialog.

New data slice dialog.
Enter slice name and optional description. Then select time zone from the drop down list.

Data slice details.
You may also uncheck "Show streams real-time and retrospective reports" checkbox to have your new slice be a lite slice.

You will then be redirected to a new slice details where you can define rule for data collection as shown below. This rule covers app name and stream name.

Entering data slice stream details.
Now when you create a slice, the data will start to be collected from the moment of creation. It will be collected in designated tie zone.

You may convert existing slice' time by going to slice detail from slices management page and clicking on Edit link. In this case current day data may be affected by mixed numbers so we recommend making conversion on some non-peak days.

Read more about slice-related features in on the dedicated Slices & Branding page.


Read more about WMSPanel streaming reporting.

Contact us if you need any other updates for data slices concept. We have new improvements coming up for data slices so feel free to follow us on Facebook, Twitter or Google+

Related documentation


Daily statisticsHigh precision reportingData slices for statisticsStreamed slices for WowzaBilling customers using daily statsScreencast for daily statisticsScreencast for data slices and white labelStatistics import API

May 19, 2014

HDS re-streaming support

Nimble Streamer has been handling re-streaming of the most popular HTTP-based protocols since the early days. These protocols were HLS, progressive download and then SmoothStreaming.

Now we introduce re-streaming for HTTP Dynamic Streaming, or HDS. It was created by Adobe for HTTP delivery of adaptive streaming. Nimble Streamer handles it using the same efficient caching system as we use for HLS and SMOOTH.

The main advantages of using Nimble as an edge server for HDS re-streaming are:

  • Load balancing of big amounts of incoming connections via light-weight edges.
  • Hot-linking protection of HDS streams.
  • Variety of statistics reports available for Nimble Streamer.
  • Low cost of ownership as Nimble is a freeware.

With these major benefits all you need to start is to sign up to WMSPanel, install Nimble Streamer and specify which HDS requests must be re-streamed to origin and properly cached.

Follow these easy steps.

1. Install Nimble Streamer on your Linux server using this procedure.

2. Go to Nimble Streamer / Edit Nimble Routes menu to open routes page

Here you will see the list of existing routes or just an empty list. In our example you see a route for VOD streaming which is used in our Nimble Streamer demo page.

Nimble Streamer routes list.

3. Click on Add re-streaming route to see the following dialog.

HLS, SmoothStre and HDS re-streaming set up dialog.

So now you need to define which requests are going to be handled and where will Nimble take the original stream from. Let assume your origin HDS stream is located at this URL:
http://yourdomain.com:1935/live/stream/manifest.f4m
We have 4 servers in our pool but we want just one of them to handle the requests. By default Nimble is listening to port 8081 on all available interfaces. You can change it using config file but for this example we'll use default settings (all IPs and ports) and will have Nimble get all incoming requests for /live/* streams and re-stream them form origin location.

Check the following picture to see proper settings for it.

Re-streaming interfaces and paths for HDS re-streaming example.
Now you need to specify which servers will be handling this request. You may apply the setting to any Nimble server available in your account. We will select just one of them.

Selecting Nimble Streamer instance to handle HDS re-streaming.

Now when you click on OK the route is applied to designated Nimble instance. You may access your HDS stream using the following URL:
http://ny2.video.wmspanel.com:8081/live/stream/manifest.f4m
Here you see full domain name, default port and full path identical to what you see at the origin.

If you want robust and scalable re-streaming, you may want to use this how-to article explaining HLS scalable streaming to use it for HDS. The routes set up and DNS settings will be pretty much the same.

Contact our team in case you have some sophisticated streaming scenarios you'd like to cover or if you have any questions regarding Nimble Streamer set up.

Related documentation


Nimble Streamer, The Paranoid’s Guide to Internet Video StreamingPay-per-view for Nimble StreamerLoad balancing and failover with Nimble StreamerGeo-location load balancing with Nimble,

May 14, 2014

Streaming Media East 2014

Streaming Media East show is over.

It was exciting to meet a lot of new people and to see people we know already. Talking to exiting and future customers, learning more about current streaming media market and its future trends - this is a perfect place to do it.

We've been posting some pictures in our Facebook account so you may see them in this WMSPanel Facebook album.

Here are just a few.







May 6, 2014

Streaming MP3 and AAC via HLS

Video-on-demand feature set is popular among Nimble Streamer customers. Initially we took MP4 format as the most popular one and made its transmuxing into HLS. So Nimble Streamer can be used as an origin for HLS streams in VOD mode.
Another use case requested by our customers is producing HLS stream from MP3 sound files into HLS in VOD mode. This transmuxing allows reducing traffic overhead for streaming audio comparing to traditional MP4 to HLS transmuxing. This is feasible because HLS allows using ID3 PRIV tag with com.apple.streaming.transportStreamTimestamp PTS time mark and produce HLS chunks with bare MPEG audio frames avoiding MPEG2TS transport overhead.
In addition to that, AAC to HLS VOD is supported.

We've made some prototyping and recently has released its support within Nimble Streamer.

So now you can stream MP3 audio transmuxed into HLS. Having your internet radio archive stored in classical MP3, you can make it available on any HLS-enabled device.

Current implementation supports MPEG 1, MPEG 2, MPEG 2.5 codecs with full set of Layer 1, Layer 2 and Layer 3.

It also supports AAC files transmuxing.

Setting up MP3 for HLS transmuxing


Once you install Nimble Streamer, you need to go to Nimble Streamer / Edit Nimble routes.


There you can click on Add VOD streaming route. There you need to enter the source directory where you store your MP3 archive and specify URL path which you will use for access.


Entering MP3 transmuxing route.
In our example it's /var/www/content/mp3/ directory and /radio/ URL path. You also need to select which servers this route is applied to.

Route is ready.
With this route, and some sample.mp3 file in your directory, your media URL may look like this:
http://ny2.video.wmspanel.com/radio/sample.mp3/playlist.m3u8
Please make sure "nimble" user have a read+execute access to /var/www/content/mp3/ directory.

You see that we've selected 3 servers to get this route for processing so you may address your requests to any of those servers. You may also set up DNS failover to make those 3 servers work as a single streaming pool to improve robustness and improve user's viewing experience.

Let us know if you'd like to cover some other use cases related to MP3 streaming.


Related documentation


Nimble HTTP StreamerPay-per-view for Nimble StreamerMP4 transmuxing to HLS VOD streamingTransmuxing RTMP to ABR HLSStreaming VOD with Nimble StreamerVOD re-streaming cache controlCalculating HLS statisticsHTTP pseudo-streaming progressive downloadProgressive download re-streamingDispersa streams monitoring

May 1, 2014

WMSAuth allow list for Dispersa checkpoints

Our customers often use several key features to build their streaming infrastructure. Paywall framework is among most popular as it provides hotlinking protection, geo-location blocking and other limitation scenarios. Many of those features' users also use Dispersa periodical streams monitoring to make sure the streams are online.

If some limitation or restriction is used for customer streaming, Dispersa checkpoints may not be able to access the streams because they are distributed across several countries. You may also add private checkpoint but still it will be denied by hotlinking protection.

To have those Dispersa servers be able to monitor protected streams you may use WMSAuth allow lists. Let's say you created hotlinking protection. You need to go to WMSAuth groups page and click on Manage custom IP ranges. There you need to add IP ranges for several single servers which are used as checkpoints.

Take a look at the screenshot for details:

IP addresses for Dispersa default checkpoints.
The exact IP addresses can be found by running "nslookup video.wmspanel.com" command.

Now when IP range is created go to WMSAuth rule where you restrict unwanted visitors and add new range to allow list as shown in the screenshot below.

Adding Dispersa IP range to allow list.
Now click on Update WMSAuth rule and this will be applied to your servers.

Dispersa monitoring checkpoints will now be able to connect to your protected streams.

If you face any difficulties with this use cases, let us know about it so we could help.

Related documentation


Paywall framework for Wowza and Nimble Streamer, Streams monitoring history, Dispersa alerts push APIWowza hotlinking protectionHotlinking protection with stream-based signatureGeo-location streaming limitation, Dispersa periodical streams monitoring, Dispersa checkpoints