July 22, 2015

Streaming VOD from remote HTTP storage via Nimble Streamer

Many broadcasting companies use remote media storage as a convenient way of organizing video-on-demand (VOD) streaming infrastructure. The main advantage of dedicated storage is having all files located in single repository, instead of maintaining multiple copies across all edge servers, and save costs on multiple large hard disk drives. The second advantage is ability to organize centralized backup and failure recovery and convenience of managing content, such as adding, removing or replacing media files. This is why storages like Amazon S3 are extremely popular.

Remote storage support is now available in Nimble Streamer. It works with any server, that supports file access via HTTP protocol with HTTPS as an option. Nimble Streamer support HLS, and MPEG-DASH transmuxing as well as progressive download from remotely stored media content. Advanced caching techniques allows Nimble to effectively stream files, those size exceeds available file system capacity.

Nimble Streamer is extremely lightweight and powerful. You can use any cheap virtual machine to stream thousands of files. All you need to do is specify link to your media on remote server via WMSPanel web interface.

Install Nimble Streamer

Please, see how to install Nimble Streamer for your operating system. Or read this blog article to see the example of Nimble Streamer installation on Ubuntu virtual machine.

Set up streaming routes

For local files (available in file system), please check "Set up streaming routes" section of "How to stream VOD with Nimble Streamer" article from our blog.
For media files stored remotely, you can perform the following steps:

1. Check that your media is available from remote Storage via HTTP (just try to simply download any media file). In this step you should have a media URL like this http://s3-us-west-1.amazonaws.com/wmspanel/bunny.mp4 (you can use any available remote storage).

2. Navigate to "Nimble Streamer" -> "VOD & re-streaming routes" menu section of WMSPanel web interface and click "Add VOD streaming route" link.

3. In the appeared dialog specify path, that is requested by your viewers via public URL and path, that requested content is taken from. Select "http://" or "https://" in dropdown list and enter path to your remote files location.

4. Optionally, specify the AWS access key id and AWS secret access key if your media files are protected by Amazon.

5. Click "OK" button.

Your new route will appear in Nimble routes list.

Now if you request http://localhost:8081/s3/bunny.mp4/playlist.m3u8, then Nimble Streamer takes file http://s3-us-west-1.amazonaws.com/wmspanel/bunny.mp4, transmuxes it, and performs HLS streaming.
This works for HLS and MPEG-DASH by default. If you'd like to use this for progressive download, you need to explicitly enable it in Nimble configuration file.
Open nimble.conf file and add the following parameter.
Then re-start Nimble Streamer. You can read more about config file in this article.

Test VOD streaming

Now you can test VOD streaming on a desktop and on a mobile device using HTML5 player and JWPlayer. Check "Test streaming media via multiple devices" section of "How to stream VOD with Nimble Streamer" article.

That's it.

Now you've set up a media server that can stream MP4 video files stored on remote HTTP Storage via HLS and MPEG-DASH protocols.

Take a look at Nimble Streamer performance tuning basics to see examples of live streaming resources usage and also learn about basic approaches to best performance.

In addition to single unit efficiency, you may create robust delivery networks by using load balancing techniques for spreading the load between several Nimble instances.

You can use "vod_cache_timeout" and "vod_cache_min_storage_time" parameters available in Nimble Streamer settings to define maximum and minimum cache lifetime periods.

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

SMIL files support

Nimble Streamer can process not only media files, but also SMIL files located in remote HTTP storage. This works for both HLS and MPEG-DASH. You can use this feature as a convenient way of providing your viewers with different bitrate options for video playback.

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. VOD files from remote HTTP location are also supported for SSAI.


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.

Related documentation

No comments:

Post a Comment

If you face any specific issue or want to ask some question to our team,

This will give much faster and precise response.
Thank you.

Note: Only a member of this blog may post a comment.