October 27, 2013

Nimble Streamer Slideshare

Nimble Streamer is created to be a basis for streaming media infrastructure. To make decision on trying the software in production environment, company representatives need to see a solid description of why they should try it.

That's where a presentation is the best way to show key thoughts. Take a look at the first presentation describing Nimble Streamer which will be useful for decision makers.

It shows basic features and the business model for both Nimble Streamer and WMSPanel as its front-end.

You are very welcomed to share this presentation to anyone who may find this useful. Please contact us if you have any questions or concerns.

You can also read "The Paranoid’s Guide to Internet Video Streaming" by Thomas Gires to see real-life example of using pay-per-view feature set along with Nimble Streamer as light-weight edge for HLS re-streaming.

Related documentation

Nimble HTTP StreamerMP4 transmuxing to HLS VOD streamingNimble Streamer HTTP hotlinking protectionNimble Streamer geo-location restrictionNimble configs explainedHLS re-streaming set upSmooth Streaming supportGeo load balancing with Nimble StreamerHTTP pseudo-streaming progressive downloadWMSPanel Slideshare,

October 21, 2013

Transmuxing MP4 to HLS for VOD streaming

Nimble Streamer provides wide variety of VOD-related features and capabilities.

In this article we describe HLS to MP4 transmuxing feature set in Nimble.

Re-packaging MP4 to HTTP Live Streaming (HLS)

This feature set allows transparent re-packaging of MP4 to HLS, which is also called transmuxing. Such transmuxing will re-package existing MP4 file encoded with H.264/AAC/MP3 into the MPEG TS segments necessary for HTTP Live Streaming, without having to re-encode the file. It supports VOD transmission mode.

Supported formats are:
  • video+audio;
  • video;
  • audio;
  • mp4 compatible brand
  • Apple QuickTime extension;
  • Adobe f4v
  • files with CTTS atom in TRAK.
This covers most of the use cases for MP4 usage.

Both H.264 and H.265 videos are supported.

Free of charge

First, this MP4 re-packaging within Nimble Streamer is not eligible for patent fees. We do not do any encoding or transcoding thus no patented technologies are used. We do not use any third-party tools as well so there are no license dependencies. We got confirmation from MPEGLA that our implementation does not require patent payments.

Knowing that Nimble Streamer itself is available free of charge and that we don't pay patent royalties, you can install and use Nimble for MP4 transmuxing for free. You can use common installation instruction and configure using config files description.

We are a service company so we take money for providing WMSPanel for calculating statistics and having convenient web control over the server. Having Nimble Streamer in WMSPanel makes it eligible for subscription with common terms described in our pricing page.

Setting up transmuxing for Nimble via WMSPanel

Let 's see what you need to do for HLS VOD streaming from a single MP4 file.

2. Upload your MP4 file encoded with H264/AAC/MP3 to a designated location on the server. The user called "nimble" must have read access to this directory.

3. Go to WMSPanel under Nimble Streamer / Edit Nimble Routes menu.

4. Click on Add VOD streaming route.

5. For fields set 1 enter the domain and the directory where the files will be accessible for HLS streaming. You can mention just a "Path" having a "Domain" as blank.

6. For field 2 enter a local directory where the content is located.

7. Choose which Nimble servers need this route and click OK.

 Setting up HLS VOD streaming via MP4 transmuxing.
Here's an example.

  1. You have Nimble installed on a server available at
  2. Your file is /home/user/content/sample.mp4.
  3. In a field set 1 you set "/hls/" as "Path" with a blank domain.
  4. In 2nd field you set "/home/user/content/"
  5. You select server "" from list of Nimble servers and click OK.

Now to view the file using HLS you should use this URL:
Now with this HLS origin functionality combined with edge re-streaming capability you can set an effective HLS VOD streaming infrastructure based on Nimble Streamer.

The streaming VOD may also be protected in the following ways:

Need to support ABR and multiple tracks for my VOD

You can create ABR VOD HLS using SMIL files with Nimble Streamer. Also, multiple audio tracks and audio-only/video only tracks are supported.

Server-side ads insertion for VOD

Nimble Advertizer allows dynamically insert ads into VOD streaming. It supports pre-roll, mid-rolls and custom business logic based on programmable handlers.

Need to convert MP3 or AAC to VOD HLS

Check this article about MP3 and AAC to HLS transmuxing.

Need to convert RTMP to ABR HLS and UDP MPEG-TS live stream into HLS

Check the following posts:

Need to deliver fragmented MP4 (fMP4) using same files

Nimble Streamer supports fMP4 for VOD HLS for both H.264/AVC and H.265/HEVC content. It also supports ABR VOD via SMIL files.
Read this article for more details.

Subtitles support for VOD HLS

Take a look at this article to see how you can use WebVTT, SRT and TTML subtitles with your VOD HLS streams


Nimble Streamer internal transmuxer buffer sometimes may not be enough to fit generated HLS chunk. This may lead to this error in Nimble Streamer logs:
[tmux1] E: buffer is too small to generate
By default the buffer is 40MB. You can increase it using "vod_transmuxing_buffer". Read Nimble Streamer configuration description for config setup details.

You can also take a look at the video where Jan Ozer of Streaming Learning Center and Yury Udovichenko of Softvelum discuss pros and cons of dynamic packetizing of live, VOD and DVR content. It gives more details about Nimble Streamer VOD streaming.

October 16, 2013

Devices and players report in WMSPanel

Streaming media is expanding to a variety of devices these days. So one of the things any streamer wants to know is the statistics for devices which his clients use for watch media. As most video is done via the desktop or handheld devices, the players and browsers report is also important. WMSPanel obtains this information from user agent specification which Wowza and Nimble Streamer provide for each connection.

So we've created two new reports - Devices report and Players report. They are available under Reporting menu. All reports allow selecting dates ranges and specific servers. You may also export the statistics to CSV file and print if you want a hard copy.

Each number is a number of connections. This means if 1 user connected 2 streams, or opened same stream twice them, this will be counted as 2 connections.

Devices report

This report has statistics for major device types available on the market.  There are popular platforms as you notice in column names. It's Windows of several flavors, Macintosh, iPad/iPhone, Android, set-top-boxes (Roku, Apple TV), gaming consoles and a few others.

You can see a pie chart and detailed statistics table. There is also a line of links that allow browsing devices' statistics which is "sliced" per player.

Selecting dates range and per-browser slicing or devices.
Devices percentile pie chart.
Devices detailed statistics.

Players and browsers report

Take a look at another report below. You can see the major browsers (Chrome, Firefox, IE etc) and several players in it. And then there's Flash, of course. It's also sliced by devices the same way we saw per-player division in devices report.

Selecting dates range and per-device stats for player report.

Players pie chart and detailed statistics.

These two reports give you a vision of how your content is played. If you see that some device or browser is missing, send us your feedback to include new entries in our report.

Devices and players report is available for Wowza Streaming Engine and Nimble Streamer.

Read more about WMSPanel streaming reporting features.

Related documentation

Daily statisticsDaily stats APIPlayers and devices stats APIReal-time stats APIGeo location reportingData slices for statisticsScreencast for daily statisticsStatistics import APIPaywall for Wowza

October 14, 2013

Prototyping HLS VOD for MP4

When our team started working on Nimble HTTP Streamer we wanted to concentrate on basic HTTP streaming use cases. First basic things to cover were edge re-streaming and progressive download. Now when basic cases are mostly covered we wanted to try ourselves in handling origin HTTP streaming.

First use case to try is HLS VOD streaming. People want to take their VOD media libraries and stream them to a variety of devices which support HLS (which is quite a lot). So we started implementing this feature set with a prototype to estimate the effort and see major implementation problems.

So some time ago we've completed a small prototype implemented with Ruby and released it on our gihub account. It make re-packaging of MP4 content into MPEG-TS chunk.

It is used as follows:
ruby mp4hls.rb sample.mp4 sample.ts
where sample.mp4 is input MP4 file and sample.ts are output file

This prototype supports the following formats:
  • video+audio;
  • video;
  • audio;
  • original MP4;
  • Apple QuickTime extension;
  • files with CTTS atom in TRAK.
The implementation is available via MIT license and it's not eligible for patent fees according to confirmation from MPEGLA.

We are currently working on this feature set as part of Nimble Streamer so soon it's going to be available as part of the major product.

UPDATE: We've implemented it as part of Nimble Streamer: MP4 transmuxing to HLS VOD streaming

Contact us if you have any questions regarding this product.

Related documentation

Nimble HTTP StreamerMP4 transmuxing to HLS VOD streamingHLS re-streaming set upHTTP pseudo-streaming progressive download, Softvelum github

October 9, 2013

Nimble Streamer disk cache for VOD re-streaming

One of the major use cases for Nimble Streamer is the re-streaming of HLS and Smooth Streaming. Our customers use it to off-load their origin servers by moving light-weight Nimble edges closer to their audience.

Currently Nimble has a RAM-based cache for live re-streaming and a disk cache for VOD re-streaming.
Let's see how disk cache works for delivery of VOD content.

  1. A viewer requests a playlist, Nimble downloads its and determines whether it's live or VOD.
  2. The playlist is sent back to the viewer.
  3. A viewer requests a new chunk from the previously downloaded playlist.
  4. If there is no pre-downloaded chunk, it's being requested from the origin.
  5. Once downloaded, it's being placed to disk cache.
  6. If the disk cache is full, the chunk is stored into RAM if possible.
  7. The chunk is being stored on disk for 24 hours then removed.
Live caching will be done in similar way, but it will be primarily stored in RAM and then on disk in case of overflow.

The following parameters are added info config file to allow some fine tuning of disk cache:
  • cache_path is a path to the file cache storage, with default value /var/cache/nimble.
  • max_disk_cache_size is a size of file cache measured in MB with 4096 MB by default.
This gives an ability to effectively deliver VOD content to any edges from any type of origin.

Please also learn more about latest VOD cache control features here.

You can also take a look at the video where Jan Ozer of Streaming Learning Center and Yury Udovichenko of Softvelum discuss pros and cons of dynamic packetizing of live, VOD and DVR content. It gives more details about Nimble Streamer VOD streaming.

Related documentation

October 7, 2013

UPDATE: WMSPanel users management

We've released s small update for our users management feature set. Your company admin may now specify if the non-admin user is allowed to create data slices by his own. This feature as well as server management permission is a good thing for the companies which want to give some flexibility over Wowza management for their clients.

Users management.

User details.

Read more about WMSPanel streaming reporting for end users.

Related documentation

End user reporting for WowzaData slices for statisticsStreamed slices for WowzaUsers details and permissions management

October 2, 2013

Setting up live stream for Wowza via WMSPanel

Many people who enter the business of media streaming start their way with live streaming. They look for easy way to begin streaming and make something that will be the basis for their future streaming platform. This is where Wowza Media Server helps. It has rich feature set and detailed documentation for beginners.

WMSPanel has Wowza server management feature set which allows simplifying the set up of the application by using wizard-like interface and re-using global application templates.

Let's see how live streaming may be set up using these features.

1. Enable Server management for Wowza by going to Control / Server management menu. You'll need to load server configuration first, but that's a single time operation.

2. Click on Create an application and choose Live streamer template from templates list.

Choosing live streaming template.

3. After the application is created, click on its name to make user and password settings. Here's a brief screen shots instruction.

4. Go to server's management page and click on application name.
Applications list.
5. Click on Config application button to go to app configuration page.
New application details and a button to configure it.

6. Click on Set password button to see dialog for setting user and password.

7. Enter user and password with the format that appear in the dialog. Select servers and click on Apply to apply user/password settings to selected servers.

Setting password for Wowza application or instance.

8. Set up your encoder with rtmp://your_server_ip:1935/live or rtsp://your_server_ip:1935/live .

That's it

You can start publishing your live streaming. Beginner users may find a lot of features that might help them to start up faster.

You may also consider WMSPanel server tasks remote management via web console for convenient control of server-side commands. Launch any command, like ffmpeg process, with no need to log in via SSH, just an easy-to-use web interface.

Feel free to contact us if you have any Wowza set up questions

Related documentation