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.

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.