August 20, 2014

MPEG-TS over HTTP transmuxing to HLS with Nimble Streamer

Nimble Streamer can already take MPEG2TS over UDP and make HLS transmuxing to produce outgoing HLS stream. This allows accepting multicast and unicast UDP transmissions. Besides UDP, lots of devices and software solutions use MPEG-TS transmission over HTTP for variety of use cases.

 New article about MPEG-TS transmuxing to HLS, RTMP etc is available. Also, read general Nimble Streamer MPEG2TS feature set page.

Nimble can now accept MPEG2TS over HTTP to produce HLS. The output HLS can be used for single bitrate and adaptive bitrate HLS. Let's see step by step setup for incoming MPEG-TS stream.
  1. Using WMSPanel, define which MPEG-TS stream will be listening for incoming streams via HTTP. Those streams will be used as a source for generating outgoing streams.
  2. Define what outgoing streams will be generated from previously defined incoming streams. They can be used as fixed bitrate streams for your viewers and re-used as a source for ABR set up.
  3. If you'd like to create ABR streams, define adaptive streams using the variety of previously defined outgoing streams.
Nimble Streamer is getting the incoming stream and converting the MPEG-TS stream into HLS chunks. These chunks are being sent to the player right after the request comes in.

You may provide origin streams via HLS protocol, both with fixed bitrate and with adaptive bitrate. This diagram visualizes the described workflow.

Here's the step-by-step instruction for fixed bitrate and adaptive bitrate set up.

1. Set up incoming streams

Select Nimble Streamer / Live streams set up menu.

You will see servers list to select the one which you'd like to have as a live origin server.

Selecting the server to start the set up.
Clicking on server name you will go to designated server streaming details. Each page has a dynamic image of your set up process - you may see where you are at and what are next steps.

Nimble Streamer instance

To set up incoming MPEG2TS stream click on Add HTTP stream. You will see a dialog asking for a URL of the stream. It'll also allow with its alias name for convenience.

Adding new MPEG2TS source.
Once it's added the stream will appear in the list. When the media data is received, its color will change to green.

New MPEG2TS source is active.
Now you can set up outgoing HLS streams.

2. Set up outgoing streams

Now when the incoming stream is defined, you can create outgoing stream for your viewers.

Click on the main diagram at "Outgoing stream" blocks or click Outgoing link in top right corner of the page.

Outgoing streams list.
You see a list of created existing streams. Each has stream name, video/audio streams details and other options. To add new stream for viewer, click on "Add outgoing stream". You'll see the following dialog.

Describing outgoing HLS stream using existing MPEG2TS source.

Here you need to specify:
  • Application name and stream name. They will be used in result URL of the stream for accessing via players.
  • Video source and video stream. This is where the video will be taken from for further mix. The source is the incoming stream defined in step 1. The stream can be selected from the drop down list based on the source information. If no information has been received yet, you may select "First video stream" to get whatever is transmitted. If the source has just one stream, it will be picked up by default with no special setup.
  • Audio source and audio stream works the same way as "Video source".
  • Bandwidthresolution and codec are the custom fields which will be included into HLS playlist information. E.g. Bandwidth may be "65000", "1280000", "2560000" etc. Resolution might be "640x360", "416x234" etc. The Codec filed may have specific codec settings like "mp4a.40.5", see this RFC for other examples.

As you see you may mix video stream with audio stream from different programs into single media stream.

Having the outgoing stream defined, you can click on URL for Player link to get full address of the resulting stream which you can insert into your player or application.

Getting result URL for players and applications.

3. Set up adaptive bitrate streams

With the outgoing streams ready, you may go further and create HLS streams with adaptive bitrate support.
Click on ABR part of the diagram to see the list of multi bitrate streams.

Adaptive bitrate streams list.
Here you can see a list of ABR streams, each having the application and stream name for URL and a sub-list of outgoing streams which they are made of.

To create a new multi-bitrate adaptive stream you need to click on Add ABR stream. You'll see a dialog like this.

Create ABR HLS stream.
Here you need to specify:
  • application and stream name for further usage,
  • outgoing streams which this multi-bitrate stream will contain.

With that having been set up, you may click on URL for Player.

Getting URL for adaptive bitrate stream.
This URL can be used for further playback.

The ABR HLS streams definition is similar to producing ABR HLS from RTMP. Same easy-to-use interface and robust Nimble Streamer behavior.


The 3 mentioned steps allow taking MPEG-TS stream for further actions like transmuxing to HLS adaptive bitrate stream. So your Nimble Steamer will be working as a streaming origin.

In addition to origin server set up you may also install more Nimble Streamers as HLS re-streaming edge servers to offload this Nimble origin and make your network more robust and scalable. You may also find useful features like hotlinking protection with domain lock and geo-location blocking.

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.

Other HLS-related features to come soon, join our social networks for updates: FacebookTwitterGoogle+

Related documentation

Nimble HTTP Streamer, Defining language channels in HLSTransmuxing published RTMP to ABR HLSPull RTMP to transmux into HLSMP4 transmuxing to HLS VOD streamingCreate ABR VOD HLS with SMILHLS re-streaming set upDispersa streams monitoringWMSPanel YouTube channelUsing Nimble in Rocksoft Cloud Media SolutionServer tasks remote management via web UI